【问题标题】:What is data part of the smart contract deployment in web3?web3 中智能合约部署的数据部分是什么?
【发布时间】:2018-08-29 02:40:18
【问题描述】:

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

来自 web3 规范:

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

如果我错了,请纠正我:

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

from - 确定部署此合约的地址

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

data 是什么,它是合约的编译后的solidity 代码,如果是,那么如果我们已经指定了该合约的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"

【问题讨论】:

    标签: blockchain ethereum solidity smartcontracts web3


    【解决方案1】:

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

    ABI 没有运行合约的代码;它只是描述了接口(什么函数有什么参数)。

    您从编译器获取字节码。在不知道您使用的是什么工具的情况下,很难更具体。

    【讨论】:

      【解决方案2】:
      const data = contract.methods.contractFunction(contractArgument).encodeABI()
      

      这会将合约的一个函数编码为字节码,然后可以将其传递给数据参数。

      contractFunction(contractArgument)
      

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

      【讨论】:

        猜你喜欢
        • 2023-02-09
        • 2022-08-05
        • 2020-01-28
        • 1970-01-01
        • 2022-12-06
        • 2018-01-22
        • 1970-01-01
        • 2018-07-10
        • 2021-11-15
        相关资源
        最近更新 更多