Skip to content

Instantly share code, notes, and snippets.

@Utopiah
Created November 6, 2016 18:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Utopiah/e00f001aca16a17716ff62ae72ff4212 to your computer and use it in GitHub Desktop.
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
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