我正在编写具有Solidity的简单智能合约,但显示了我无法修复的错误。这是我的代码:
amounts=[(1, 2345), (0, 3345), (2, 1223)]
for x in range(len(amounts)):
divide_count, amount = amounts[x]
power_amount = len(str(amount)) - divide_count
amount = amount / (10.0 ** power_amount)
print(amount)
Skript:
<div class="container">
<h1>Information</h1>
<h2 id="form"></h2>
<label for="name">Name</label>
<input id="name" type="text">
<label for="name">Age</label>
<input id="age" type="text">
<button id="button">Update Infomation</button>
</div>
Solidity-Code很简单:
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
web3.eth.defaultAccount = web3.eth.accounts[0];
var SmartContract = web3.eth.contract(ABI);
var ContractAddress= SmartContract.at(Address);
ContractAddress.getInformation(function(error, result){
if(!error)
{
$("#form").html(result[0]+' ('+result[1]+' years old)');
console.log(result);
}
else
console.log(error);
});
$("#button").click(function() {
ContractAddress.setInformation($("#name").val(), $("#age").val());
});
在控制台中显示错误:
未捕获的错误:在i.formatInput(web3)上Array.map()处的web3.min.js:1处inputCallFormatter(web3.min.js:1)在u(web3.min.js:1)处的无效地址.minPayload(web3.min.js:1)位于_.e [.call](web3.min.js:1)位于c.call(web3.min.js:1)在index.html:85的c.execute(web3.min.js:1)处
我试图添加类似contract information{
string fName;
uint age;
function setInformation(string _fName, uint _age) public {
fName = _fName;
age = _age;
}
function getInformation() public constant returns (string, uint) {
return (fName, age);
}
}
的内容,但它没有解决问题。
答案 0 :(得分:0)
您需要提供已部署的智能合约的地址。
在部署智能合约时,您将获得智能合约地址。您需要使用与部署相同的网络。
供参考
https://github.com/praveenkakumanu/Ethereum/blob/master/sample/index.html
如果将web3js作为node_modules运行,则需要使用上述web3@0.18版本