Go-Ethereum
在 geth 控制台中創建合約
我在腳本名稱 contract.js 中有以下程式碼( foo、pwd 和 id 在我的實際腳本中被它們的值替換)
var web3=require('web3'); personal.unlockAccount('id', "pwd") var aContract = web3.eth.contract([]); var a = aContract.new( { from: web3.eth.accounts[1], data: 'foo', gas: 3000000 }, function (e, contract){ console.log(e, contract); if (typeof contract.address !== 'undefined') { console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash); } })
我想在 geth 控制台中執行這段程式碼,所以我輸入了
loadScript("/usr/username/contract.js")
但我所擁有的只是以下錯誤:
錯誤:TypeError:無法訪問未定義的成員“契約”為假
我知道我沒有定義 ABI,但是當我直接在 geth 控制台中鍵入上面的程式碼時,它就可以工作,然後我可以探勘這個合約(在本地)。
那麼真的有可能使用 loadscript 獲得相同的結果嗎?
您的問題很可能是您重新定義了
web3
.
web3
存在於*開箱即用的 geth 控制台中,*已連接到節點。除非您需要除 geth 使用的特定版本之外的特定版本,否則無需手動添加。在這種情況下,它可能會中斷,因為require('web3')
返回 web3 對象的工廠,而不是 web3 本身。總之,不需要web3就可以試試。