31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
import {ethers} from "ethers";
|
|
import {getProvider} from "./blockchain.js";
|
|
import {chainInfo} from "./chain.js";
|
|
import {vaultAddress} from "./vault.js";
|
|
import {mockErc20Abi} from "./abi.js";
|
|
|
|
|
|
export async function faucet( chainId, owner, vault=null ) {
|
|
if( chainId === 31337 || chainId === 53261 ) {
|
|
if( vault === null )
|
|
vault = vaultAddress(chainId, owner)
|
|
const provider = getProvider(chainId);
|
|
let faucet = new ethers.Wallet(
|
|
// Dev Account #8
|
|
'0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97',
|
|
provider
|
|
)
|
|
let nonce = await provider.getTransactionCount(faucet.address, 'pending')
|
|
faucet = new ethers.NonceManager(faucet)
|
|
await faucet.sendTransaction({to:owner, value:1n *10n**18n, nonce: nonce++})
|
|
const info = chainInfo[chainId]
|
|
if( info.mockCoins ) {
|
|
const [coinAddr, usdAddr] = info.mockCoins
|
|
const signer = await provider.getSigner()
|
|
await new ethers.Contract(coinAddr, mockErc20Abi, signer).mint(vault, 10n *10n**18n)
|
|
await new ethers.Contract(usdAddr, mockErc20Abi, signer).mint(vault, 10_1000n *10n**6n)
|
|
}
|
|
}
|
|
}
|
|
|