| 
									
										
										
										
											2014-11-14 13:11:47 +01:00
										 |  |  | <!doctype> | 
					
						
							|  |  |  | <html> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  | <script type="text/javascript" src="js/es6-promise/promise.min.js"></script> | 
					
						
							|  |  |  | <script type="text/javascript" src="../dist/ethereum.js"></script> | 
					
						
							|  |  |  | <script type="text/javascript"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var web3 = require('web3'); | 
					
						
							|  |  |  |     web3.setProvider(new web3.providers.AutoProvider()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // solidity source code | 
					
						
							|  |  |  |     var source = "" +  | 
					
						
							|  |  |  |     "contract test {\n" + | 
					
						
							|  |  |  |     "   function multiply(uint a) returns(uint d) {\n" + | 
					
						
							|  |  |  |     "       return a * 7;\n" + | 
					
						
							|  |  |  |     "   }\n" + | 
					
						
							|  |  |  |     "}\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // contract description, this will be autogenerated somehow | 
					
						
							|  |  |  |     var desc =  [{ | 
					
						
							|  |  |  |         "name": "multiply", | 
					
						
							|  |  |  |         "inputs": [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             "name": "a", | 
					
						
							|  |  |  |             "type": "uint256" | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         "outputs": [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             "name": "d", | 
					
						
							|  |  |  |             "type": "uint256" | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |     }]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var contract; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function createExampleContract() { | 
					
						
							|  |  |  |         // hide create button | 
					
						
							|  |  |  |         document.getElementById('create').style.visibility = 'hidden';  | 
					
						
							|  |  |  |         document.getElementById('source').innerText = source; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // create contract | 
					
						
							|  |  |  |         web3.eth.transact({code: web3.eth.solidity(source)}).then(function (address) { | 
					
						
							|  |  |  |             contract = web3.contract(address, desc); | 
					
						
							|  |  |  |             document.getElementById('call').style.visibility = 'visible'; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function callExampleContract() { | 
					
						
							|  |  |  |         // this should be generated by ethereum | 
					
						
							| 
									
										
										
										
											2015-01-08 15:31:46 +01:00
										 |  |  |         var param = parseInt(document.getElementById('value').value); | 
					
						
							| 
									
										
										
										
											2014-11-14 13:11:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // call the contract | 
					
						
							|  |  |  |         contract.multiply(param).call().then(function(res) { | 
					
						
							|  |  |  |             document.getElementById('result').innerText = res[0]; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | </head> | 
					
						
							|  |  |  | <body> | 
					
						
							|  |  |  |     <h1>contract</h1> | 
					
						
							|  |  |  |     <div id="source"></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> | 
					
						
							|  |  |  | 
 |