0

我在 Binance Smart Chain 上部署了一个代币合约,想手动烧掉一些代币,从而从某种控制台执行以下函数调用。

myContract.burn(10000);

我有 ABI 和字节码

我如何以及在哪里可以执行此操作?

4

1 回答 1

1

如果burn()函数具有publicexternal可见性修饰符,您可以通过提交包含函数签名和字段中的参数值的事务来执行它data

data其中一种方法是手动或半手动构建字段值

const data = web3.eth.abi.encodeFunctionCall({
    name: 'burn',
    type: 'function',
    inputs: [{
        type: 'uint256',
        name: '_amount'
    }]
}, [10000]);

返回

0x42966c680000000000000000000000000000000000000000000000000000000000002710
  • 42966c68是函数签名
  • 271010000(dec)的十六进制值

并将其传递给任何支持自定义数据字段的钱包(例如 MyEtherWallet)。


另一种方法是实例化你的合约web3.eth.Contract并从那里执行函数。这会为您生成data字段,如果您正确配置了 web3 实例,它还会使用您的私钥签署交易并将其广播到网络。

const contract = new web3.eth.Contract(jsonInterface, contractAddress);
contract.methods.burn(10000).send({from: yourAddress});
于 2021-05-12T13:04:41.727 回答