github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/cmd/mist/assets/examples/coin.html (about) 1 <!doctype> 2 <html> 3 <title>JevCoin</title> 4 <head> 5 <script type="text/javascript" src="../ext/bignumber.min.js"></script> 6 <script type="text/javascript" src="../ext/ethereum.js/dist/ethereum.js"></script> 7 </head> 8 <body> 9 10 <h1>JevCoin <code id="contract_addr"></code></h1> 11 <div> 12 <strong>Balance</strong> 13 <span id="balance"></strong> 14 </div> 15 16 <div> 17 <span class="amount">Amount:</span> 18 <input type="text" id="address" style="width:200px"> 19 <input type="text" id="amount" style="width:200px"> 20 <button onclick="transact()">Send</button> 21 </div> 22 23 <hr> 24 25 <table width="100%" id="table"> 26 <tr><td style="width:40%;">Address</td><td>Balance</td></tr> 27 <tbody id="table_body"></tbody> 28 </table> 29 30 </body> 31 32 <script type="text/javascript"> 33 var web3 = require('web3'); 34 var eth = web3.eth; 35 36 web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8545')); 37 var desc = [{ 38 "name": "balance(address)", 39 "type": "function", 40 "inputs": [{ 41 "name": "who", 42 "type": "address" 43 }], 44 "constant": true, 45 "outputs": [{ 46 "name": "value", 47 "type": "uint256" 48 }] 49 }, { 50 "name": "send(address,uint256)", 51 "type": "function", 52 "inputs": [{ 53 "name": "to", 54 "type": "address" 55 }, { 56 "name": "value", 57 "type": "uint256" 58 }], 59 "outputs": [] 60 }, { 61 "name":"received", 62 "type":"event", 63 "inputs": [ 64 {"name":"from","type":"address","indexed":true}, 65 {"name":"amount","type":"uint256","indexed":true}, 66 ], 67 }]; 68 69 var address = localStorage.getItem("address"); 70 // deploy if not exist 71 if (address == null) { 72 var code = "0x60056013565b61012b806100346000396000f35b6103e8600033600160a060020a0316600052602052604060002081905550560060e060020a6000350480637bb98a681461002b578063d0679d3414610039578063e3d670d71461004d57005b610033610126565b60006000f35b610047600435602435610062565b60006000f35b610058600435610104565b8060005260206000f35b80600033600160a060020a0316600052602052604060002054101561008657610100565b80600033600160a060020a0316600052602052604060002090815403908190555080600083600160a060020a0316600052602052604060002090815401908190555033600160a060020a0316600052806020527ff11e547d796cc64acdf758e7cee90439494fd886a19159454aa61e473fdbafef60406000a15b5050565b6000600082600160a060020a03166000526020526040600020549050919050565b5b60008156"; 73 address = web3.eth.transact({data: code}); 74 localStorage.setItem("address", address); 75 } 76 document.querySelector("#contract_addr").innerHTML = address.toUpperCase(); 77 78 var contract = web3.eth.contract(address, desc); 79 contract.received({from: eth.coinbase}).changed(function() { 80 refresh(); 81 }); 82 83 var ev = contract.SingleTransact({}) 84 ev.watch(function(log) { 85 someElement.innerHTML += "tnaheousnthaoeu"; 86 }); 87 88 eth.watch('chain').changed(function() { 89 refresh(); 90 }); 91 92 function refresh() { 93 document.querySelector("#balance").innerHTML = contract.balance(eth.coinbase); 94 95 var table = document.querySelector("#table_body"); 96 table.innerHTML = ""; // clear 97 98 var storage = eth.storageAt(address); 99 table.innerHTML = ""; 100 for( var item in storage ) { 101 table.innerHTML += "<tr><td>"+item.toUpperCase()+"</td><td>"+web3.toDecimal(storage[item])+"</td></tr>"; 102 } 103 } 104 105 function transact() { 106 var to = document.querySelector("#address").value; 107 if( to.length == 0 ) { 108 to = "0x4205b06c2cfa0e30359edcab94543266cb6fa1d3"; 109 } else { 110 to = "0x"+to; 111 } 112 113 var value = parseInt( document.querySelector("#amount").value ); 114 115 contract.send( to, value ); 116 } 117 118 refresh(); 119 </script> 120 </html> 121 122 <!-- 123 contract JevCoin { 124 function JevCoin() 125 { 126 balances[msg.sender] = 1000000; 127 } 128 129 event changed(address indexed from, address indexed to); 130 function send(address to, uint value) 131 { 132 if( balances[msg.sender] < value ) return; 133 134 balances[msg.sender] -= value; 135 balances[to] += value; 136 137 changed(msg.sender, to); 138 } 139 140 function balance(address who) constant returns(uint t) 141 { 142 t = balances[who]; 143 } 144 145 mapping(address => uint256) balances; 146 } 147 -!>