Web3js

無法使用有效數據部署契約

  • June 24, 2020

我已經下載了他們的 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;

}

這是我的字節碼

$$ key $$價值

606060405260018054600160a060020a031916........

注意:我剛剛嘗試了上面的契約程式碼,請參見此處

您的字節碼不是十六進制數字。

前置一個0x.

例如0x606060405260018054600160a060020a031916...

**編輯:**沒關係,你已經這樣做了。這是另一個嘗試。將字元串轉換為十六進制。

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

注意基數16。保持此值不變。

可能會幫助其他人 - 有同樣的問題,原來我在字節碼字元串的最後一行有一個空格,刪除它解決了這個問題

引用自:https://ethereum.stackexchange.com/questions/77906