Кажется, это очень распространенная тема, но я не смог найти решение в других вопросах, извините за повторный вопрос. Я следую примеру новичка , пытаясь развернуть контракт в сети Rinkeby через узел Infura.
Это контракт, который я хочу развернуть:
pragma solidity ^0.4.22;
contract Inbox {
string public message;
constructor(string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
Это Deploy.js
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const { interface, bytecode } = require('./compile');
const provider = new HDWalletProvider(
' //Mnemonic ',
'https://rinkeby.infura.io/3qmjTiDl43PDhvdhm4WB'
);
const web3 = new Web3(provider);
const deploy = async () => {
const accounts = await web3.eth.getAccounts();
console.log('Deploy from account', accounts[0]);
const result = await new web3.eth.Contract(JSON.parse(interface))
.deploy({ data: bytecode, arguments: ['Hi there!'] })
.send({ gas: '1000000', from: accounts[0] });
console.log('Contract deployed to', result.options.address);
};
deploy();
Когда я пробую node deploy.js , консоль печатает первый Console.log функции Deploy, но после ожидания он говорит:
(node:13776) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: The contract code couldn't be stored, please check your gas limit.
(node:13776) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Я надеюсь, что вы можете помочь мне, ребята, извините, если это простая вещь, пытаясь научиться этому.
Как вы получили байт-код? У него есть «0x» в начале?
Можете ли вы попробовать добавить «0x» при отправке транзакции?
.deploy({ data: '0x' + bytecode, arguments: ['Hi there!'] })
Если вы поместите «0x» перед байт-кодом, он будет считать, что остальное находится в шестнадцатеричном формате, и оставит его в покое.
Если нет «0x», вся строка будет преобразована в шестнадцатеричный формат. Это плохо, потому что байт-код будет в два раза больше и совершенно неправильным.
Бадр Беллай
гбиаттури
Исмаэль
гбиаттури
Исмаэль
.deploy({ data: '0x' + bytecode, arguments: ['Hi there!'] })
Финн Ротакер
мирг
Финн Ротакер