Что является частью данных развертывания смарт-контракта в web3? - PullRequest
0 голосов
/ 29 августа 2018

Для развертывания смарт-контракта в сети нам понадобятся три следующие данные:

Из спецификации 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"

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018
const data = contract.methods.contractFunction(contractArgument).encodeABI()

Это закодирует функцию контракта в байт-код, который затем может быть передан в параметр данных.

contractFunction(contractArgument)

будет отличаться для вас и для функции, которую вы хотите вызвать.

0 голосов
/ 29 августа 2018

Да, data - это скомпилированный байт-код для вашего умного контракта.

У ABI нет кода для запуска контракта; он просто описывает интерфейс (какие функции существуют с какими параметрами).

Вы получаете байт-код от компилятора. Не зная, какой инструмент вы используете, сложно быть более конкретным.

...