如何计算BSC(BEP-20)区块链中USDT等代币交易的gasLimit?
How to calculate gasLimit for token transactions like USDT in BSC (BEP-20) blockchain?
我正在币安智能链中开发一个 DAPP,我想知道如何计算 gasLimit
代币交易的 USDT
就像它的 chrome 扩展一样建议交易 gasLimit
并计算其 transactionFee
。我有一个计算 BNB 交易中 gasLimit
的公式,但这不适用于代币交易。
BNB交易计算公式:
const gasPrice = await web3.eth.getGasPrice(); // estimate the gas price
const transactionObject = {
from: SENDER_WALLET_ADDRESS,
to: RECIEVER_WALLET_ADDRESS,
gasPrice
}
const gasLimit = await web3.eth.estimateGas(transactionObject); // estimate the gas limit for this transaction
const transactionFee = gasPrice * gasLimit; // calculate the transaction fee
如果我也能像上面那样计算transactionFee就太好了!!!
有什么帮助吗???
在进行token交易时,可以使用web3.eth.Contract在JS中实例化contract helper对象。
那你就可以使用.methods
属性包含基于合约ABI的辅助函数和public函数
然后你可以将.estimateGas()
函数链接到合约函数。
const myContract = new web3.eth.Contract(abiJson, contractAddress);
const gasLimit = await myContract.methods
.transfer(to, amount) // the contract function
.estimateGas({from: ...}); // the transaction object
文档:https://web3js.readthedocs.io/en/v1.3.4/web3-eth-contract.html#methods-mymethod-estimategas
使用 Ethers.js 库
const ethers = require("ethers");
let wallet = new ethers.Wallet(privateKey, provider);
let walletSigner = wallet.connect(provider);
let contractAddress = "";
const token = new ethers.Contract(
contractAddress,
contract_abi,
walletSigner
);
let token_decimal = await token.decimals();
let token_amount = await ethers.utils.parseUnits(amount, token_decimal);
let gasPrice = await provider.getGasPrice();
gasPrice = await ethers.utils.formatEther(gasPrice);
let gasLimit = await token.estimateGas.transfer(
receiver,
token_amount
);
let transactionFee = gasPrice * gasLimit.toNumber();
我正在币安智能链中开发一个 DAPP,我想知道如何计算 gasLimit
代币交易的 USDT
就像它的 chrome 扩展一样建议交易 gasLimit
并计算其 transactionFee
。我有一个计算 BNB 交易中 gasLimit
的公式,但这不适用于代币交易。
BNB交易计算公式:
const gasPrice = await web3.eth.getGasPrice(); // estimate the gas price
const transactionObject = {
from: SENDER_WALLET_ADDRESS,
to: RECIEVER_WALLET_ADDRESS,
gasPrice
}
const gasLimit = await web3.eth.estimateGas(transactionObject); // estimate the gas limit for this transaction
const transactionFee = gasPrice * gasLimit; // calculate the transaction fee
如果我也能像上面那样计算transactionFee就太好了!!! 有什么帮助吗???
在进行token交易时,可以使用web3.eth.Contract在JS中实例化contract helper对象。
那你就可以使用.methods
属性包含基于合约ABI的辅助函数和public函数
然后你可以将.estimateGas()
函数链接到合约函数。
const myContract = new web3.eth.Contract(abiJson, contractAddress);
const gasLimit = await myContract.methods
.transfer(to, amount) // the contract function
.estimateGas({from: ...}); // the transaction object
文档:https://web3js.readthedocs.io/en/v1.3.4/web3-eth-contract.html#methods-mymethod-estimategas
使用 Ethers.js 库
const ethers = require("ethers");
let wallet = new ethers.Wallet(privateKey, provider);
let walletSigner = wallet.connect(provider);
let contractAddress = "";
const token = new ethers.Contract(
contractAddress,
contract_abi,
walletSigner
);
let token_decimal = await token.decimals();
let token_amount = await ethers.utils.parseUnits(amount, token_decimal);
let gasPrice = await provider.getGasPrice();
gasPrice = await ethers.utils.formatEther(gasPrice);
let gasLimit = await token.estimateGas.transfer(
receiver,
token_amount
);
let transactionFee = gasPrice * gasLimit.toNumber();