Go-Ethereum

部署錯誤:提供的地址無效,大小寫校驗和測試失敗,或者它是一個無法轉換的間接 IBAN 地址

  • February 8, 2019

我有以下程式碼:

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}作為你之前部署的合約實例的地址。

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