Не удалось развернуть контракт с допустимыми данными

Я скачал контракты с их 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........

ПРИМЕЧАНИЕ. Я только что попробовал приведенный выше код для контракта, см. здесь

Как я объяснил вам по этому другому вашему вопросу - этот метод копирования чужого байт-кода, включая аргументы конструкции, подвержен жалкому сбою! Любой аргумент, который является адресом учетной записи или контракта, потенциально сделает развернутый контракт непригодным для вас, если вам даже удастся развернуть его без возврата (из-за различных проверок или вызовов, которые конструктор может делать по любому из этих адресов). ). Еще раз - вы должны использовать исходный код и вводить свои собственные аргументы построения.
да, вы правы.. Но когда я возьму исходный код и скомпилирую вышеуказанные контракты (более 800), то он выдаст ошибку, потому что, я думаю, были созданы разные контракты с разными версиями солидности. Вот почему я просто беру их ABI и байт-коды. Кстати, есть ли какой-либо репозиторий, содержащий контракты только последней версии. Один за другим, загрузив конкретный контракт с etherscan.io, невозможно ...
зачем вам использовать случайные контракты, которые были написаны в старой версии Solidity?
Мне нужны любые контракты, но надо прогонять программу вслепую, не зная их логики...

Ответы (2)

Ваш байт-код не является шестнадцатеричным числом.

Подготовьте 0x.

Например0x606060405260018054600160a060020a031916...

РЕДАКТИРОВАТЬ: Неважно, что вы уже сделали это. Вот еще одна попытка. Преобразуйте строку в шестнадцатеричный формат.

parseInt("0x6060604...", 16)

Обратите внимание на основание 16. Оставьте это значение без изменений.

Сделал по вашему совету, но та же ошибка...

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

такой гевер, я помог себе. я из прошлого на самом деле