Я скачал контракты с их abi и json. Я должен их развернуть. когда я извлекаю байт-код из загруженных файлов, а затем назначаю его своей data
переменной для развертывания контракта, который дает следующую ошибку; Тот же вопрос, связанный с ошибкой, задан ранее здесь , но ответа не дано.
UnhandledPromiseRejectionWarning: Error: The data field must be HEX encoded data.
вот мой код;
async function deployCon(key) {
var v = constructorParameters[key].input.length;
// console.log("deploy for contract : ", v)
const contract = new web3.eth.Contract(abi[key]);
if(v == 0) {
params = {
data: "0x" + bytecode[key],
};
}
else {
params = {
data: "0x" + bytecode[key],
arguments: constructorParameters[key].input
};
}
const transaction = contract.deploy(params);
const options = {
data: transaction.encodeABI(),
gas: await transaction.estimateGas({from: account1})
};
const signed = await web3.eth.accounts.signTransaction(options, privateKey1);
receipt = await web3.eth.sendSignedTransaction(signed.rawTransaction);
console.log(`Contract deployed at address: ${receipt.contractAddress}`);
return receipt;
}
и вот мое значение байт-кода [ключ]
606060405260018054600160a060020a031916........
ПРИМЕЧАНИЕ. Я только что попробовал приведенный выше код для контракта, см. здесь
Ваш байт-код не является шестнадцатеричным числом.
Подготовьте 0x
.
Например0x606060405260018054600160a060020a031916...
РЕДАКТИРОВАТЬ: Неважно, что вы уже сделали это. Вот еще одна попытка. Преобразуйте строку в шестнадцатеричный формат.
parseInt("0x6060604...", 16)
Обратите внимание на основание 16
. Оставьте это значение без изменений.
Может помочь другим - была такая же проблема, оказалось, что у меня было пустое место в последней строке строки байт-кода, его удаление устранило проблему.
хорошая вибрация
Амир Али
Никлас Фёрштейн
Амир Али