web3 中智能合约部署的数据部分是什么?



为了将智能合约部署到网络,我们需要以下三个信息:

从web3js规范:

// deploy new contract
var contractInstance = MyContract.new([constructorParam1] [, constructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});

如果我错了,请纠正我:

constructorParams- 传递给智能合约构造函数的所有数据,

from- 确定从中部署此协定的地址

gas- 此交易可以消耗多少的气体限制

什么是data,它是合约的编译坚固性代码吗,如果是这样,那么如果我们已经指定了该合约的 ABI,为什么还需要它?

如何获取此data参数?当我尝试将合约部署到网络而不指定data参数时,我的控制台中也出现错误:

错误:"无效参数 0:json:无法将没有 0x 前缀的十六进制字符串解组到 Go 结构字段 SendTxArgs.data 中,类型为 hexutil。字节">

是的,data是智能合约的编译字节码。

ABI没有运行合约的代码;它只是描述接口(存在哪些函数和哪些参数(。

您可以从编译器获取字节码。不知道您正在使用什么工具,很难更具体。

const data = contract.methods.contractFunction(contractArgument).encodeABI()

这会将合约的函数编码为字节码,然后可以将其传递到 data 参数中。

contractFunction(contractArgument)

对于您和您要调用的函数来说会有所不同。

最新更新