Created
November 6, 2016 18:28
-
-
Save Utopiah/e00f001aca16a17716ff62ae72ff4212 to your computer and use it in GitHub Desktop.
Exploring smart contract with a web interface using Ethereum and solidity for the Blockchain workshop at iMAL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (typeof web3 !== 'undefined') { | |
web3 = new Web3(web3.currentProvider); | |
} else { | |
// set the provider you want from Web3.providers | |
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); | |
} | |
//console.log(web3); // {eth: .., shh: ...} // it's here! | |
console.log("accounts:", web3.eth.accounts); // {eth: .., shh: ...} // it's here! | |
console.log("balance of first account:", web3.eth.getBalance(web3.eth.accounts[0]).toString(10)); | |
console.log("balance of first account:", web3.eth.getBalance(web3.eth.accounts[1]).toString(10)); | |
console.log("balance of first account:", web3.eth.getBalance(web3.eth.accounts[2]).toString(10)); | |
console.log("balance of first account:", web3.eth.getBalance(web3.eth.accounts[3]).toString(10)); | |
var firstAccount = web3.eth.accounts[0]; | |
var secondAccount = web3.eth.accounts[1]; | |
var thirdAccount = web3.eth.accounts[2]; | |
console.log("number of last block:", web3.eth.blockNumber); | |
console.log("value of last block:", web3.eth.getBlock(web3.eth.blockNumber)); | |
console.log("block number:", web3.eth.blockNumber); | |
console.log("gas price:", web3.eth.gasPrice.toString(10)); | |
console.log("compilers:", web3.eth.getCompilers()); | |
var ballotContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"delegate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"winningProposal","outputs":[{"name":"winningProposal","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"voter","type":"address"}],"name":"giveRightToVote","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"proposal","type":"uint8"}],"name":"vote","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_numProposals","type":"uint8"}],"type":"constructor"}]); | |
// abi | |
/* | |
var _numProposals = 4; | |
var ballot = ballotContract.new( | |
_numProposals, | |
{ | |
from: web3.eth.accounts[0], | |
data: '60606040526040516020806107d1833981016040528080519060200190919050505b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c01000000000000000000000000908102040217905550600160016000506000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050600001600050819055508060ff1660026000508181548183558181151161010e5781836000526020600020918201910161010d91906100eb565b808211156101095760006000820160005060009055506001016100eb565b5090565b5b505050505b506106af806101226000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480635c19a95c1461005d578063609ff1bd1461007a5780639e7b8d61146100a5578063b3f98adc146100c257610058565b610002565b346100025761007860048080359060200190919050506100df565b005b346100025761008c6004805050610412565b604051808260ff16815260200191505060405180910390f35b34610002576100c060048080359060200190919050506104a9565b005b34610002576100dd600480803590602001909190505061058b565b005b60006000600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005091508160010160009054906101000a900460ff16156101305761040d565b5b600073ffffffffffffffffffffffffffffffffffffffff16600160005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561023e57503373ffffffffffffffffffffffffffffffffffffffff16600160005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561029f57600160005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508250610131565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102d85761040d565b60018260010160006101000a81548160ff02191690837f0100000000000000000000000000000000000000000000000000000000000000908102040217905550828260010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c01000000000000000000000000908102040217905550600160005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005090508060010160009054906101000a900460ff16156103f057816000016000505460026000508260010160019054906101000a900460ff1660ff16815481101561000257906000526020600020900160005b5060000160008282825054019250508190555061040c565b8160000160005054816000016000828282505401925050819055505b5b505050565b60006000600060009150600090505b6002600050805490508160ff1610156104a3578160026000508260ff16815481101561000257906000526020600020900160005b506000016000505411156104955760026000508160ff16815481101561000257906000526020600020900160005b50600001600050549150815080925082505b5b8080600101915050610421565b5b505090565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415806105425750600160005060008273ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005060010160009054906101000a900460ff165b1561054c57610588565b6001600160005060008373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050600001600050819055505b50565b6000600160005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005090508060010160009054906101000a900460ff16806105e657506002600050805490508260ff1610155b156105f0576106ab565b60018160010160006101000a81548160ff02191690837f0100000000000000000000000000000000000000000000000000000000000000908102040217905550818160010160016101000a81548160ff02191690837f0100000000000000000000000000000000000000000000000000000000000000908102040217905550806000016000505460026000508360ff16815481101561000257906000526020600020900160005b506000016000828282505401925050819055505b505056', | |
gas: 4700000 | |
}, function (e, contract){ | |
console.log(e, contract); | |
if (typeof contract.address !== 'undefined') { | |
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash); | |
} | |
}); | |
*/ | |
// note that it initally failed, had to unlock the account using personal.unlockAccount(accounts0) | |
// probably account0 became the chairperson | |
// commented since already created e.g. at 0xbbb8c89454da2b2f717df65efce26189a0bc4f64 | |
var ballotContractAddress = "0xbbb8c89454da2b2f717df65efce26189a0bc4f64"; | |
var myContractInstance = ballotContract.at(ballotContractAddress); | |
console.log("contract:", myContractInstance); | |
// set the default account | |
web3.eth.defaultAccount = firstAccount; | |
console.log("default account:", web3.eth.defaultAccount); | |
//console.log(myContractInstance.giveRightToVote(secondAccount)); | |
// fails, account locked | |
// works (maybe, transaction went through) | |
// weird not have to ask for ether/gas | |
//var result = "0xdad4a13dba760716ec058853ddfc7a728b164debf726bdc58e36ca46fa106294"; | |
//web3.eth.defaultAccount = secondAccount; | |
//var voteResult = myContractInstance.vote(0); | |
//console.log(voteResult); | |
web3.eth.defaultAccount = thirdAccount; | |
var voteResult = myContractInstance.vote(0); | |
console.log(voteResult); | |
//console.log(myContractInstance.Ballot(0)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment