为了将智能合约部署到网络,我们需要以下三种信息:
根据web3规范:
// deploy new contract
var contractInstance = MyContract.new([constructorParam1] [, constructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});
如果我错了,请纠正我:
constructorParams
-传递给智能合约构造函数的所有数据,
from
-确定此合同的部署地址
gas
-此交易可以消耗多少汽油限制
data
是什么,它是合同的经过汇编的统一性代码,如果是的话,为什么,如果我们已经指定了该合同的ABI,那么我们需要它吗?
如何获取此data
参数?当我尝试在不指定data
参数的情况下将合同部署到网络上时,控制台也会出现错误:
Error: "invalid argument 0: json: cannot unmarshal hex string without 0x prefix into Go struct field SendTxArgs.data of type hexutil.Bytes"
答案 0 :(得分:2)
是的,data
是您的智能合约的已编译字节码。
ABI没有运行合同的代码;它仅描述了接口(具有什么参数的功能存在)。
您从编译器获取字节码。不知道您正在使用什么工具,就很难更具体。
答案 1 :(得分:0)
const data = contract.methods.contractFunction(contractArgument).encodeABI()
这会将合同的功能编码为字节码,然后可以将其传递到data参数中。
contractFunction(contractArgument)
对于您和您要调用的功能将有所不同。