new faucet
This commit is contained in:
29
faucet.js
29
faucet.js
@@ -1,24 +1,39 @@
|
|||||||
import {ethers} from "ethers";
|
import {ethers} from "ethers";
|
||||||
import {getProvider} from "./blockchain.js";
|
import {getProvider} from "./blockchain.js";
|
||||||
import {chainInfo} from "./chain.js";
|
import {chainInfo} from "./chain.js";
|
||||||
import {vaultAddress} from "./vault.js";
|
|
||||||
import {mockErc20Abi} from "./abi.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( chainId === 31337 || chainId === 1337 ) {
|
||||||
if( vault === null )
|
|
||||||
vault = vaultAddress(chainId, owner)
|
|
||||||
const provider = getProvider(chainId);
|
const provider = getProvider(chainId);
|
||||||
let faucet = new ethers.Wallet(
|
let faucet = new ethers.Wallet(
|
||||||
// Dev Account #8
|
// Dev Account #8
|
||||||
'0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97',
|
'0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97',
|
||||||
provider
|
provider
|
||||||
)
|
)
|
||||||
let nonce = await provider.getTransactionCount(faucet.address, 'pending')
|
const address = faucet.address;
|
||||||
faucet = new ethers.NonceManager(faucet)
|
faucet = new ethers.NonceManager(faucet)
|
||||||
console.log('faucet sending native coin to owner:', owner)
|
let nonce = await provider.getTransactionCount(address, 'pending')
|
||||||
await faucet.sendTransaction({to:owner, value:1n *10n**18n, nonce: nonce++})
|
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)
|
console.log('faucet sending native coin to vault:', vault)
|
||||||
await faucet.sendTransaction({to:vault, value:1n *10n**18n, nonce: nonce++})
|
await faucet.sendTransaction({to:vault, value:1n *10n**18n, nonce: nonce++})
|
||||||
const info = chainInfo[chainId]
|
const info = chainInfo[chainId]
|
||||||
|
|||||||
5
main.js
5
main.js
@@ -5,7 +5,7 @@ import {httpServer, io} from "./io.js";
|
|||||||
import {ensureVault, loginAddress} from "./vault.js";
|
import {ensureVault, loginAddress} from "./vault.js";
|
||||||
import {chainInfo, VAULT_INIT_CODE_HASH} from "./chain.js";
|
import {chainInfo, VAULT_INIT_CODE_HASH} from "./chain.js";
|
||||||
import {subOHLCs, subPools, unsubOHLCs, unsubPools} from "./pool.js";
|
import {subOHLCs, subPools, unsubOHLCs, unsubPools} from "./pool.js";
|
||||||
import {faucet} from "./faucet.js";
|
import {gib} from "./faucet.js";
|
||||||
|
|
||||||
|
|
||||||
// setup socket.io
|
// setup socket.io
|
||||||
@@ -20,8 +20,7 @@ io.on("connection", (socket) => {
|
|||||||
socket.on('subOHLCs', async (chainId, poolPeriods) => await subOHLCs(socket, chainId, poolPeriods) )
|
socket.on('subOHLCs', async (chainId, poolPeriods) => await subOHLCs(socket, chainId, poolPeriods) )
|
||||||
socket.on('unsubOHLCs', (chainId, poolPeriods) => unsubOHLCs(socket, chainId, poolPeriods) )
|
socket.on('unsubOHLCs', (chainId, poolPeriods) => unsubOHLCs(socket, chainId, poolPeriods) )
|
||||||
socket.on('ensureVault', (chainId,owner,num) => ensureVault(socket, chainId, owner, num) )
|
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('gib', async (chainId, owner, vault, tokenAmounts) => await gib(chainId, owner, vault, tokenAmounts))
|
||||||
socket.on('faucet', async (chainId, owner) => await faucet(chainId, owner))
|
|
||||||
socket.join('public')
|
socket.join('public')
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user