Go-Ethereum
部署錯誤:提供的地址無效,大小寫校驗和測試失敗,或者它是一個無法轉換的間接 IBAN 地址
我有以下程式碼:
var account = web3.utils.toChecksumAddress("0x249eb..") const accounts = await web3.eth.getAccounts(); let Contr = new web3.eth.Contract(abi, {from: account, gas: 47000, data: bytecode}) await Contr.deploy({ data: bytecode }).send({ from: account, gas: '1500000', gasPrice: '30000000000000'}) .then(function(newContractInstance){ console.log(newContractInstance) });
當我嘗試
deploy().send()
簽訂契約時出現以下錯誤:Script failed: Error: Provided address "[object Object]" is invalid, the capitalization checksum test failed, or its an indrect IBAN address which can't be converted.
提供的地址與用於獲取契約 Contr 的地址相同,
new web3.eth.Contract
但在這種情況下,我沒有收到任何錯誤並且輸出是正確的。我一直在檢查與此錯誤相關的另一個問題,但沒有得到任何解決方案。
我嘗試使用
account
,accounts[0]
和地址直接“0x249 …”。我正在使用 web3 1.0.0。知道如何解決這個問題嗎?
你在這一行有一些多餘的(和錯誤放置的)數據:
let Contr = new web3.eth.Contract(abi, {from: account, gas: 47000, data: bytecode})
如果您將其更改為,您的程式碼應該正確執行
let Contr = new web3.eth.Contract(abi)
因為 deploy 行負責處理 from 帳戶、gas 和字節碼。
該
new web3.eth.Contract
函式採用以下參數(根據文件):
new web3.eth.Contract(jsonInterface, address, options)
所以它解釋了這個對象:
{from: account, gas: 47000, data: bytecode}
作為你之前部署的合約實例的地址。