Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save amitlzkpa/a904526e52573a87881255df3793d279 to your computer and use it in GitHub Desktop.
Save amitlzkpa/a904526e52573a87881255df3793d279 to your computer and use it in GitHub Desktop.
Deploys an instance for a smart-contract compiled in Solidity to an Ethereum network
// Assumes you have a MetaMask wallet running on Chrome
/*
Put this on the html page
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
*/
// You can get the ABI json and bytecode for your contract here.
// https://remix.ethereum.org/
// Put contract ABI json here
let abiDefinitionStr = '[{"constant":false,"inputs":[],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"code","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amt","type":"uint256"},{"name":"src","type":"int256"},{"name":"dst","type":"int256"},{"name":"mssg","type":"bytes32"}],"name":"init","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getBidCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"assigned_to","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bids","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"source","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"assignee","type":"address"}],"name":"assign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bid_security","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"completed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"id","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"destination","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"request_security","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bidders","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mark_complete","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"message","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"deadln","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"deadline","type":"uint256"},{"indexed":false,"name":"src","type":"int256"},{"indexed":false,"name":"destination","type":"int256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"message","type":"bytes32"}],"name":"Init","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bidder","type":"address"}],"name":"Bid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"assignee","type":"address"}],"name":"AssignedTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"MarkedComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"claimant","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Claimed","type":"event"}]';
// Put contract ABI json here
let byteCode = '60806040526005805460ff19169055669536c708910000600c556618de76816d8000600d5534801561003057600080fd5b506040516020806108f8833981016040525142811161004e57600080fd5b60028054600160a060020a031916331790556007556005805460ff1916905561087c8061007c6000396000f3006080604052600436106101115763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631998aeef811461011657806324c12bf6146101205780632775940e1461014757806328f6a48a1461015b57806329dcb0cf146101705780634ba57092146101855780634e71d92d146101b657806362ea82db146101cb57806367e828bf146101ec57806385aba275146102015780638da5cb5b146102225780639309c8a5146102375780639d9a7fe91461024c578063aa8c217c14610275578063af640d0f1461028a578063b269681d1461029f578063cd29265a146102b4578063cff29dfd146102c9578063d95d2b28146102e1578063e21f37ce146102f6575b600080fd5b61011e61030b565b005b34801561012c57600080fd5b5061013561042b565b60408051918252519081900360200190f35b61011e600435602435604435606435610431565b34801561016757600080fd5b506101356104ac565b34801561017c57600080fd5b506101356104b2565b34801561019157600080fd5b5061019a6104b8565b60408051600160a060020a039092168252519081900360200190f35b3480156101c257600080fd5b5061011e6104c7565b3480156101d757600080fd5b50610135600160a060020a036004351661061b565b3480156101f857600080fd5b5061013561062d565b34801561020d57600080fd5b5061011e600160a060020a0360043516610633565b34801561022e57600080fd5b5061019a610701565b34801561024357600080fd5b50610135610710565b34801561025857600080fd5b50610261610716565b604080519115158252519081900360200190f35b34801561028157600080fd5b5061013561071f565b34801561029657600080fd5b50610135610725565b3480156102ab57600080fd5b5061013561072b565b3480156102c057600080fd5b50610135610731565b3480156102d557600080fd5b5061019a600435610737565b3480156102ed57600080fd5b5061011e61075f565b34801561030257600080fd5b5061013561084a565b600754421061031957600080fd5b600c54600654013031101561032d57600080fd5b600254600160a060020a031633141561034557600080fd5b600954600160a060020a03161561035b57600080fd5b60055460ff161561036b57600080fd5b600d54341461037957600080fd5b336000908152600a60205260409020541561039357600080fd5b336000818152600a60209081526040808320805434019055600b805460018101825593527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909201805473ffffffffffffffffffffffffffffffffffffffff191684179055815192835290517f417bd604b82c3fa277680a27ba0a50c43772789bdafa274544181c0a2b1e8ab59281900390910190a1565b60015481565b600c54840134101561044257600080fd5b600383905560048290556006849055600881905560075460408051918252602082018590528181018490526060820186905260808201839052517fa30315bc1772d27cfcd74e608024be9bd92a78f772595cbbe55891eee18a2acd9181900360a00190a150505050565b600b5490565b60075481565b600954600160a060020a031681565b60075442111561055757336000818152600a602052604080822054905181156108fc0292818181858888f19350505050158015610508573d6000803e3d6000fd5b50336000818152600a60209081526040918290205482519384529083015280517fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9281900390910190a1610619565b60055460ff16151561056557fe5b336000908152600a6020526040902054151561057d57fe5b336000908152600a60205260409020543031101561059757fe5b336000818152600a602052604080822054905181156108fc0292818181858888f193505050501580156105ce573d6000803e3d6000fd5b50336000818152600a60209081526040918290205482519384529083015280517fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9281900390910190a15b565b600a6020526000908152604090205481565b60035481565b600254600160a060020a0316331461064a57600080fd5b600c54600654013031101561065e57600080fd5b600754421061066c57600080fd5b60055460ff161561067c57600080fd5b600160a060020a0381166000908152600a602052604090205415156106a057600080fd5b60098054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fced4246491e290361a75f88f24b5042ad8820786518e10e60f2b9e5a905d4bfd9181900360200190a150565b600254600160a060020a031681565b600d5481565b60055460ff1681565b60065481565b60005481565b60045481565b600c5481565b600b80548290811061074557fe5b600091825260209091200154600160a060020a0316905081565b600254600160a060020a0316331461077657600080fd5b600c54600654013031101561078a57600080fd5b60055460ff161561079a57600080fd5b600954600160a060020a031615156107b157600080fd5b6005805460ff19166001179055600654600954600160a060020a03166000908152600a60205260408082208054909301909255600d549151339280156108fc0292909190818181858888f19350505050158015610812573d6000803e3d6000fd5b5060065460408051918252517f41b93880312cc43498009f83b7f64c5c743394efc5bb301e115e9f7fff0bd7f49181900360200190a1565b600854815600a165627a7a7230582084302bc2b2f775cf47d7bc9c1a64784370787b56ed3f384b25989d69eea396a10029';
let abiDefinition = JSON.parse(abiDefinitionStr);
const Contract = web3.eth.contract(abiDefinition);
let arg1 = '30000000000';
Contract.new(arg1, // add more args here
{
from: web3.eth.accounts[0],
data: byteCode,
gas: 3000000,
gasPrice: 8000000000 // use whatever price you wanna pay
},
async (err, contract) =>
{
if(err) {
console.log(`Contract creation failed.`);
console.log(e);
return;
}
if(!contract.address) {
console.log(`Contract create request sent.`);
console.log(`Request transaction hash: ${contract.transactionHash}`);
console.log('Will continue after it is mined');
return;
}
console.log(`Contract mined!`);
console.log(`Address: ${contract.address}`);
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment