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]

View File

@@ -5,7 +5,7 @@ import {httpServer, io} from "./io.js";
import {ensureVault, loginAddress} from "./vault.js";
import {chainInfo, VAULT_INIT_CODE_HASH} from "./chain.js";
import {subOHLCs, subPools, unsubOHLCs, unsubPools} from "./pool.js";
import {faucet} from "./faucet.js";
import {gib} from "./faucet.js";
// setup socket.io
@@ -20,8 +20,7 @@ io.on("connection", (socket) => {
socket.on('subOHLCs', async (chainId, poolPeriods) => await subOHLCs(socket, chainId, poolPeriods) )
socket.on('unsubOHLCs', (chainId, poolPeriods) => unsubOHLCs(socket, chainId, poolPeriods) )
socket.on('ensureVault', (chainId,owner,num) => ensureVault(socket, chainId, owner, num) )
if( 31337 in chainInfo && chainInfo[31337]?.mockenv || 1337 in chainInfo && chainInfo[1337]?.mockenv )
socket.on('faucet', async (chainId, owner) => await faucet(chainId, owner))
socket.on('gib', async (chainId, owner, vault, tokenAmounts) => await gib(chainId, owner, vault, tokenAmounts))
socket.join('public')
});