tokenbridge/oracle/scripts/erc20_to_native/sendForeign.js

56 lines
1.8 KiB
JavaScript

require('../../env')
const { toWei } = require('web3').utils
const { web3Foreign } = require('../../src/services/web3')
const { sendTx } = require('../../src/tx/sendTx')
const {
USER_ADDRESS,
USER_ADDRESS_PRIVATE_KEY,
COMMON_FOREIGN_BRIDGE_ADDRESS,
FOREIGN_MIN_AMOUNT_PER_TX,
FOREIGN_TEST_TX_GAS_PRICE
} = process.env
const NUMBER_OF_DEPOSITS_TO_SEND = process.argv[2] || process.env.NUMBER_OF_DEPOSITS_TO_SEND || 1
const { ERC20_ABI, FOREIGN_ERC_TO_NATIVE_ABI } = require('../../../commons')
async function main() {
const bridge = new web3Foreign.eth.Contract(FOREIGN_ERC_TO_NATIVE_ABI, COMMON_FOREIGN_BRIDGE_ADDRESS)
const bridgeableTokenAddress = await bridge.methods.erc20token().call()
const poa20 = new web3Foreign.eth.Contract(ERC20_ABI, bridgeableTokenAddress)
try {
const foreignChainId = await web3Foreign.eth.getChainId()
let nonce = await web3Foreign.eth.getTransactionCount(USER_ADDRESS)
let actualSent = 0
for (let i = 0; i < Number(NUMBER_OF_DEPOSITS_TO_SEND); i++) {
const gasLimit = await poa20.methods
.transfer(COMMON_FOREIGN_BRIDGE_ADDRESS, toWei(FOREIGN_MIN_AMOUNT_PER_TX))
.estimateGas({ from: USER_ADDRESS })
const data = await poa20.methods
.transfer(COMMON_FOREIGN_BRIDGE_ADDRESS, toWei(FOREIGN_MIN_AMOUNT_PER_TX))
.encodeABI({ from: USER_ADDRESS })
const txHash = await sendTx({
privateKey: USER_ADDRESS_PRIVATE_KEY,
data,
nonce,
gasPrice: FOREIGN_TEST_TX_GAS_PRICE,
value: '0',
gasLimit,
to: bridgeableTokenAddress,
web3: web3Foreign,
chainId: foreignChainId
})
if (txHash !== undefined) {
nonce++
actualSent++
console.log(actualSent, ' # ', txHash)
}
}
} catch (e) {
console.log(e)
}
}
main()