new faucet

This commit is contained in:
Tim
2024-03-25 21:03:40 -04:00
parent a2a3b68150
commit f69efad6b0
2 changed files with 24 additions and 10 deletions

View File

@@ -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]