76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!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
 | 
						|
        var param = document.getElementById('value').value;
 | 
						|
 | 
						|
        // 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>
 | 
						|
 |