Skip to content

Commit

Permalink
example contract using array, fixed #185
Browse files Browse the repository at this point in the history
  • Loading branch information
debris committed Jul 1, 2015
1 parent 21ed235 commit d5d2115
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions example/contract_array.html
Original file line number Diff line number Diff line change
@@ -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>

0 comments on commit d5d2115

Please sign in to comment.