Go-Ethereum
使用參數呼叫合約建構子
我想呼叫我的合約的建構子,它接受地址作為參數,
以下是合約程式碼:
pragma solidity ^0.4.4; contract Relay { address public currentVersion; address public owner; function Relay(address initAddr){ currentVersion = initAddr; owner = msg.sender; } function update(address newAddress){ if(msg.sender != owner) throw; currentVersion = newAddress; } function(){ if(!currentVersion.delegatecall(msg.data)) throw; } }
我正在嘗試使用 web3.js 從 JavaScript 呼叫此契約中的建構子
下面是我使用的程式碼
var myContract = new web3.eth.Relay("0x87d8cc2aa5230e5d2f1a54b84366ea433da4bafd",abi, contractAddress, { from: web3.eth.coinbase,gasPrice: 200000000 });
但它顯示錯誤
未擷取的類型錯誤:web3.eth.Relay 不是建構子
如果我遵循正常的契約對象創建方法,即。
var contract = web3.eth.contract(abi).at(contractAddress);
它工作正常,但這個不能接受任何參數,任何人都可以建議任何方法來做到這一點。我已經在這里和這裡找到了一些關於這個的答案,但對我沒有用。
要創建將參數傳遞給其建構子的契約,您可以這樣做
helloContract = eth.contract(contractAbi); hello = helloContract.new(param1, param2, {from:eth.accounts[0], data:contractCode, gas:3000000})
這是使用solidity編譯器編譯合約的結果
contractAbi
。contractCode
但我建議使用像登船、松露或楊樹這樣的框架。它們使部署和測試合約變得更加容易。