Files
server/faucet.js
2024-04-12 02:09:34 -04:00

46 lines
2.0 KiB
JavaScript

import {ethers} from "ethers";
import {getProvider} from "./blockchain.js";
import {chainInfo} from "./chain.js";
import {mockErc20Abi} from "./abi.js";
export async function gib( chainId, owner, vault, tokenAmounts ) {
if( (chainId === 31337 || chainId === 1337) && owner !== null && vault !== null ) {
const provider = getProvider(chainId);
let faucet = new ethers.Wallet(
// Dev Account #8
'0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97',
provider
)
const address = faucet.address;
faucet = new ethers.NonceManager(faucet)
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==='native') {
console.log(`faucet sending native coin to ${owner} +${amount}`)
await faucet.sendTransaction({to:owner, value:amount, nonce: nonce++})
}
else {
console.log(`sending ${token} coin to ${vault} +${amount}`)
await new ethers.Contract(token, mockErc20Abi, signer).mint(vault, amount)
}
}
const info = chainInfo[chainId]
if( info.mockCoins ) {
const [coinAddr, usdAddr] = info.mockCoins
const signer = await provider.getSigner()
console.log('faucet minting tokens to', vault)
await new ethers.Contract(coinAddr, mockErc20Abi, signer).mint(vault, 10n *10n**18n)
await new ethers.Contract(usdAddr, mockErc20Abi, signer).mint(vault, 10_000n *10n**6n)
}
}
}