eth-to-bnc-bridge/src/oracle/testApprove.js

41 lines
1.4 KiB
JavaScript

require('dotenv').config()
const Web3 = require('web3')
const { HOME_RPC_URL, HOME_BRIDGE_ADDRESS, HOME_CHAIN_ID, DEPLOY_PRIVATE_KEY, HOME_TOKEN_ADDRESS } = process.env
const web3 = new Web3(HOME_RPC_URL, null, { transactionConfirmationBlocks: 1 })
const abiBridge = require('../deploy/deploy-home/build/contracts/SharedDB').abi
const abiToken = require('../deploy/deploy-home/build/contracts/IERC20').abi
const bridge = new web3.eth.Contract(abiBridge, HOME_BRIDGE_ADDRESS)
const token = new web3.eth.Contract(abiToken, HOME_TOKEN_ADDRESS)
const query1 = token.methods.approve(HOME_BRIDGE_ADDRESS, 1)
const query2 = bridge.methods.requestAffirmation(1, 'tbnb1h3nmmqukrtjc0prmtdts0kxlgmw8rend4zfasn')
let nonce
const deployAddress = web3.eth.accounts.privateKeyToAccount(`0x${DEPLOY_PRIVATE_KEY}`).address
async function main () {
console.log(deployAddress)
nonce = await web3.eth.getTransactionCount(deployAddress)
await sendQuery(query1, HOME_TOKEN_ADDRESS)
await sendQuery(query2, HOME_BRIDGE_ADDRESS)
}
async function sendQuery (query, to) {
const encodedABI = query.encodeABI()
const tx = {
data: encodedABI,
from: deployAddress,
to,
nonce: nonce++,
chainId: parseInt(HOME_CHAIN_ID)
}
tx.gas = Math.min(Math.ceil(await query.estimateGas(tx) * 1.5), 6721975)
const signedTx = await web3.eth.accounts.signTransaction(tx, DEPLOY_PRIVATE_KEY)
return await web3.eth.sendSignedTransaction(signedTx.rawTransaction)
}
main()