Web3js
無法使用有效數據部署契約
我已經下載了他們的 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
。保持此值不變。
可能會幫助其他人 - 有同樣的問題,原來我在字節碼字元串的最後一行有一個空格,刪除它解決了這個問題