new faucet
This commit is contained in:
29
faucet.js
29
faucet.js
@@ -1,24 +1,39 @@
|
||||
import {ethers} from "ethers";
|
||||
import {getProvider} from "./blockchain.js";
|
||||
import {chainInfo} from "./chain.js";
|
||||
import {vaultAddress} from "./vault.js";
|
||||
import {mockErc20Abi} from "./abi.js";
|
||||
import {erc20} from "./token.js";
|
||||
|
||||
const mock_token_decimals = {}
|
||||
|
||||
export async function faucet( chainId, owner, vault=null ) {
|
||||
export async function gib( chainId, owner, vault, tokenAmounts ) {
|
||||
if( chainId === 31337 || chainId === 1337 ) {
|
||||
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')
|
||||
const address = faucet.address;
|
||||
faucet = new ethers.NonceManager(faucet)
|
||||
console.log('faucet sending native coin to owner:', owner)
|
||||
await faucet.sendTransaction({to:owner, value:1n *10n**18n, nonce: nonce++})
|
||||
let nonce = await provider.getTransactionCount(address, 'pending')
|
||||
const signer = await provider.getSigner() // regular server signer not the #8 faucet
|
||||
for (const [token, amount] of Object.entries(tokenAmounts)) {
|
||||
if (!(token in mock_token_decimals)) {
|
||||
const contract = erc20(chainId, token)
|
||||
mock_token_decimals[token] = Number(await contract.decimals())
|
||||
}
|
||||
const bAmount = BigInt(Math.trunc(amount * 10**mock_token_decimals[token]))
|
||||
if (token==='') {
|
||||
console.log(`faucet sending native coin to ${owner}`)
|
||||
await faucet.sendTransaction({to:owner, value:bAmount, nonce: nonce++})
|
||||
}
|
||||
else {
|
||||
console.log(`sending ${token} coin to ${vault}`)
|
||||
await new ethers.Contract(token, mockErc20Abi, signer).mint(vault, bAmount)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('faucet sending native coin to vault:', vault)
|
||||
await faucet.sendTransaction({to:vault, value:1n *10n**18n, nonce: nonce++})
|
||||
const info = chainInfo[chainId]
|
||||
|
||||
Reference in New Issue
Block a user