A Decentralized Voting System & Native CryptoCurrency (MakerPoints) run on the Ethereum Blockchain.
-
Install truffle and an Ethereum client. For local development, try EthereumJS TestRPC.
npm install -g truffle // Version 3.0.5+ required. npm install -g ethereumjs-testrpc
-
Install the node dependencies.
npm install
-
Install the chrome browser add-on MetaMask and create an account. Make sure your account is unlocked when interacting with the program. Save your MetaMask seed phrase - you'll need this later (if you lose it, don't worry: it can be accessed through settings).
-
Set up Test Network to mock the Ethereum Blockchain.
testrpc -m "(insert your MetaMask seed phrase here)"
-
Compile and migrate the contracts.
truffle compile truffle migrate
-
Run the webpack server for front-end hot reloading.
npm run start
No logins! (Well, kind of). One of the great things about Blockchains is that users have one global login for all their services - their private key. For our App this is held in MetaMask.
However we do have one extra check that for users to complete before they can join the Makers Society - reading our Manifesto. You can do here if you haven't installed the app. Your choice to adhere to these principles will be recorded on the blockchain for prosperity, and from that point forward you will be able to make Proposals, Vote and participate in the Makers Economy.
To send some MakerPoints(MKP) to an address, enter the amount and a valid Ethereum address for the recipient. As this is running through a Test Network, no real currency will be sent.
Simply add your Proposal and click 'Submit Proposal' - it's as easy as that!
Type the relevant ProposalId number into the box, then select For or Against, depending on your stance.
Much of our code was either based on or directly referenced the example cases given on the official Ethereum site and Solidity Documentation.
A Blockchain is a distributed database where transactions are recorded and stored accross 1000s of computers (nodes). Bitcoin is an example of a public blockchain that's focus is on financial transactions.
Ethereum allows developers to deploy turing complete & object oriented languages to the blockchain - this gave us lots of flexibility when designing our currency and voting system. Examples of what other people are building include peer-to-peer energy trading networks, supply-chain integrity and management tools and distributed prediction markets. For more information check out the official Ethereum site.
Here are some links and resources we found handy when getting our head around blockchain and Ethereum.