UNPKG

webu

Version:

IrChain JavaScript API, middleware to talk to a irchain node over RPC

79 lines (64 loc) 2.62 kB
<!doctype> <html> <head> <script type="text/javascript" src="../dist/webu.js"></script> <script type="text/javascript"> var Webu = require('webu'); var webu = new Webu(); webu.setProvider(new webu.providers.HttpProvider('http://localhost:8545')); // solidity code code var source = '' + 'pragma solidity ^0.4.6;' + 'contract test {\n' + ' function multiply(uint a) constant returns(uint d) {\n' + ' return a * 7;\n' + ' }\n' + '}\n'; var compiled = webu.irc.compile.solidity(source); var code = compiled.code; // contract json abi, this is autogenerated using solc CLI var abi = compiled.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 webu.irc.defaultAccount = webu.irc.coinbase; // create contract document.getElementById('status').innerText = 'transaction sent, waiting for confirmation'; webu.irc.contract(abi).new({data: code}, function(err, contract) { if (err) { console.error(err); return; // callback fires twice, we only want the second call when the contract is deployed } else if (contract.address) { myContract = contract; console.log('address: ' + myContract.address); document.getElementById('status').innerText = 'Mined!'; document.getElementById('call').style.visibility = 'visible'; } }); } function callExampleContract() { // this should be generated by irchain var param = parseInt(document.getElementById('value').value); // call the contract var res = myContract.multiply(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;'> <input type="number" id="value" onkeyup='callExampleContract()'></input> </div> <div id="result"></div> </body> </html>