为了将智能合约部署到网络,我们需要以下三个信息:
从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)
对于您和您要调用的函数来说会有所不同。