Skip to content

Instantly share code, notes, and snippets.

@pau1m
Last active March 30, 2017 11:31
Show Gist options
  • Save pau1m/373feff56ab18fae124e5de2c7d6d6ed to your computer and use it in GitHub Desktop.
Save pau1m/373feff56ab18fae124e5de2c7d6d6ed to your computer and use it in GitHub Desktop.
Example of deploying contract code with js in ethereum
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple Contract Deployment</title>
</head>
<script>
window.addEventListener('load', function() {
// Checking if Web3 has been injected by the browser (Mist/MetaMask)
if (typeof web3 !== 'undefined') {
// Use Mist/MetaMask's provider
window.web3 = new Web3(web3.currentProvider)
} else {
console.log('Unable to connect to Ethereum? You should consider trying MetaMask!')
// fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8454"))
}
})
function deployContract() {
// Assign default user account
primaryAddress = web3.eth.accounts[0]
// Create a contract object using its ABI
let donationContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"payeesIndexSize","outputs":[{"name":"","type":"int8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_payee","type":"address"},{"name":"_weight","type":"uint256"}],"name":"addPayee","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_payee","type":"address"},{"name":"_weight","type":"uint256"}],"name":"updatePayeeWeight","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"int8"}],"name":"payeesIndex","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_payee","type":"address"}],"name":"disablePayee","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"getStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payees","outputs":[{"name":"status","type":"bool"},{"name":"weight","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"enablePayee","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferBalance","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"getWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"donator","type":"address"},{"indexed":false,"name":"amt","type":"uint256"}],"name":"NewDonation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amt","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"payee","type":"address"},{"indexed":false,"name":"action","type":"bytes32"}],"name":"PayeeAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"payee","type":"address"},{"indexed":false,"name":"amt","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"ContractDestroyed","type":"event"}]);
// Deploy the new contract
let donation = donationContract.new({
from: web3.eth.accounts[0],
// Bytecode
data: '0x6060604052341561000c57fe5b5b60008054600160a060020a03338116600160a060020a03199283161780845581168352600160208181526040808620805460ff199081168517909155865485168752908620600a90840155855495805260029091527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b805490941694909216939093179091556003805490911690911790555b5b610c8c806100b06000396000f300606060405236156100ca5763ffffffff60e060020a6000350416631673121b81146100cc57806318f9b023146100f557806319bf02c4146101285780632221d6ec146101495780632e1a7d4d1461017b5780632fc9ee6b1461018857806330ccebb5146101b8578063310441fa146101e8578063314ffefd1461022457806341c0e1b5146102425780634fb2e45d1461024c5780638da5cb5b1461027c578063a606b94a146102a8578063ac6c5251146102cf578063d0e30db0146102fd578063f8b2cb4f14610307575bfe5b34156100d457fe5b6100dc610335565b60408051600092830b90920b8252519081900360200190f35b34156100fd57fe5b610114600160a060020a036004351660243561033e565b604080519115158252519081900360200190f35b341561013057fe5b610147600160a060020a036004351660243561042a565b005b341561015157fe5b61015f60043560000b61046b565b60408051600160a060020a039092168252519081900360200190f35b610147600435610486565b005b341561019057fe5b610114600160a060020a036004351661059c565b604080519115158252519081900360200190f35b34156101c057fe5b610114600160a060020a0360043516610651565b604080519115158252519081900360200190f35b34156101f057fe5b610204600160a060020a0360043516610673565b604080519315158452602084019290925282820152519081900360600190f35b341561022c57fe5b610147600160a060020a0360043516610699565b005b610147610733565b005b341561025457fe5b610114600160a060020a036004351661087f565b604080519115158252519081900360200190f35b341561028457fe5b61015f610930565b60408051600160a060020a039092168252519081900360200190f35b34156102b057fe5b610147600160a060020a036004358116906024351660443561093f565b005b34156102d757fe5b6102eb600160a060020a03600435166109fb565b60408051918252519081900360200190f35b610147610a4b565b005b341561030f57fe5b6102eb600160a060020a0360043516610b7f565b60408051918252519081900360200190f35b60035460000b81565b6000805433600160a060020a0390811691161461035b5760006000fd5b600160a060020a0383166000818152600160208181526040808420808401889055805460ff19908116851790915560038054860b860b860b865260028452828620805473ffffffffffffffffffffffffffffffffffffffff191688179055805480870b90950190950b60ff1693169290921790925580517f6164646564000000000000000000000000000000000000000000000000000000815290517fe1756b42353ce13c29a189505892beff801cf050bb62887d6191c4c64895b9f6929181900390910190a25b5b92915050565b60005433600160a060020a039081169116146104465760006000fd5b600160a060020a0382166000908152600160208190526040909120018190555b5b5050565b600260205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526001602081905260409091205460ff161515146104b25760006000fd5b600160a060020a03331660009081526001602081905260409091205460ff1615151415806104fa5750600160a060020a03331660009081526001602052604090206002015481115b156105055760006000fd5b604051600160a060020a0333169082156108fc029083906000818181858888f1935050505015156105365760006000fd5b604080518281529051600160a060020a033316917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a2600160a060020a0333166000908152600160205260409020600201805482900390555b5b50565b6000805433600160a060020a039081169116146105b95760006000fd5b600054600160a060020a03838116911614156105d55760006000fd5b600160a060020a038216600081815260016020908152604091829020805460ff1916905581517f64697361626c6564000000000000000000000000000000000000000000000000815291517fe1756b42353ce13c29a189505892beff801cf050bb62887d6191c4c64895b9f69281900390910190a25b5b919050565b600160a060020a03811660009081526001602052604090205460ff165b919050565b600160208190526000918252604090912080549181015460029091015460ff9092169183565b60005433600160a060020a039081169116146106b55760006000fd5b600160a060020a038116600081815260016020818152604092839020805460ff191690921790915581517f656e61626c656400000000000000000000000000000000000000000000000000815291517fe1756b42353ce13c29a189505892beff801cf050bb62887d6191c4c64895b9f69281900390910190a25b5b50565b60008054819033600160a060020a039081169116146107525760006000fd5b600091505b600354600090810b810b9083900b12156108385750600081810b810b815260026020818152604080842054600160a060020a03168085526001909252832090910154909190111561082b57600160a060020a03811660008181526001602052604080822060020154905181156108fc0292818181858888f193505050501561082b57600160a060020a03811660008181526001602090815260409182902060020154825190815291517f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659281900390910190a25b5b5b600190910190610757565b604051600160a060020a033016907f3ab1d7915d663a46c292b8f01ac13567c748cff5213cb3652695882b5f9b2e0f90600090a2600054600160a060020a0316ff5b5b5050565b6000805433600160a060020a0390811691161461089c5760006000fd5b600160a060020a03821660009081526001602081905260409091205460ff161514156108c85760006000fd5b60008054604051600160a060020a03808616939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b5b919050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461095b5760006000fd5b600160a060020a038316600090815260016020526040902060020154819010156109855760006000fd5b600160a060020a038084166000818152600160209081526040808320600290810180548890039055948716808452928190209094018054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35b5b505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610a265760006000fd5b50600160a060020a038116600090815260016020819052604090912001545b5b919050565b60008080341515610a5c5760006000fd5b60009150610a68610bce565b9150600092505b600354600090810b810b9084900b1215610b3a57600083810b810b815260026020908152604080832054600160a060020a031683526001918290529091205460ff1615151415610b2e57600083810b810b815260026020908152604080832054600160a060020a03168352600191829052909120015482811515610aef57fe5b0490508034811515610afd57fe5b600085810b810b815260026020818152604080842054600160a060020a031684526001909152909120929091049101555b5b600190920191610a6f565b604080513481529051600160a060020a033316917f0e04c8e83a5595ba6381972e5e9fe2926bb0a7439dace880c83ccc34b99c5477919081900360200190a25b505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610baa5760006000fd5b50600160a060020a0381166000908152600160205260409020600201545b5b919050565b600080805b600354600090810b810b9083900b1215610c5757600082810b810b815260026020908152604080832054600160a060020a031683526001918290529091205460ff1615151415610c4b57600082810b810b815260026020908152604080832054600160a060020a031683526001918290529091200154015b5b600190910190610bd3565b8092505b5050905600a165627a7a72305820f3963a268450ede120f8041854b89759a7a004fca42a3d1249d55fc18c1ee2370029',
}, function (e, contract) {
document.getElementById('response').innerHTML = 'Waiting for contract to be mined.'
console.log(e, contract)
if (!e && typeof contract.address !== 'undefined') {
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash)
document.getElementById('response').innerHTML = 'New Contract at: ' + contract.address
}
})
}
</script>
<body>
<button onClick=(deployContract())>Create new donation contract</button>
<div id="response"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment