mirror of https://github.com/status-im/web3.js.git
example contract using array, fixed #185
This commit is contained in:
parent
21ed235ad2
commit
d5d2115bf9
|
@ -0,0 +1,83 @@
|
|||
<!doctype>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script type="text/javascript" src="../dist/web3.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var web3 = require('web3');
|
||||
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
|
||||
|
||||
// solidity code code
|
||||
var source = "" +
|
||||
"contract test {\n" +
|
||||
" function take(uint[] a, uint b) constant returns(uint d) {\n" +
|
||||
" return a[b];\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
var compiled = web3.eth.compile.solidity(source);
|
||||
var code = compiled.test.code;
|
||||
// contract json abi, this is autogenerated using solc CLI
|
||||
var abi = compiled.test.info.abiDefinition;
|
||||
|
||||
var myContract;
|
||||
|
||||
function createExampleContract() {
|
||||
// hide create button
|
||||
document.getElementById('create').style.visibility = 'hidden';
|
||||
document.getElementById('code').innerText = code;
|
||||
|
||||
// let's assume that coinbase is our account
|
||||
web3.eth.defaultAccount = web3.eth.coinbase;
|
||||
|
||||
var watch = web3.eth.filter('latest');
|
||||
|
||||
// create contract
|
||||
myContract = web3.eth.contract(abi).new({data: code});
|
||||
console.log('address: ' + myContract.address);
|
||||
document.getElementById('status').innerText = "transaction sent, waiting for confirmation";
|
||||
watch.watch(function (err, hash) {
|
||||
var block = web3.eth.getBlock(hash, true);
|
||||
var contractMined = block.transactions.reduce(function (mined, th) {
|
||||
// TODO: compiled code do not have 0x prefix
|
||||
return mined || (th.from === web3.eth.defaultAccount && th.input.indexOf(code) !== -1);
|
||||
}, false);
|
||||
|
||||
if (contractMined) {
|
||||
document.getElementById('status').innerText = 'Mined!';
|
||||
document.getElementById('call').style.visibility = 'visible';
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function callExampleContract() {
|
||||
// this should be generated by ethereum
|
||||
var param = parseInt(document.getElementById('value').value);
|
||||
|
||||
// call the contract
|
||||
var res = myContract.take([0,6,5,2,1,5,6], param);
|
||||
document.getElementById('result').innerText = res.toString(10);
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>contract</h1>
|
||||
<div id="code"></div>
|
||||
<div id="status"></div>
|
||||
<div id='create'>
|
||||
<button type="button" onClick="createExampleContract();">create example contract</button>
|
||||
</div>
|
||||
<div id='call' style='visibility: hidden;'>
|
||||
<div>var array = [0,6,5,2,1,5,6];</div>
|
||||
<div>var x = array[
|
||||
<input type="number" id="value" onkeyup='callExampleContract()'></input>
|
||||
];
|
||||
</div>
|
||||
</div>
|
||||
<div id="result"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue