/Makers-Society

An Ethereum-based Blockchain web application that provides a cryptographic token and voting functionality

Primary LanguageJavaScript

Makers Society Logo

Makers Society

A Decentralized Voting System & Native CryptoCurrency (MakerPoints) run on the Ethereum Blockchain.

Overview

Installation

  1. 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
  2. Install the node dependencies.

    npm install
  3. 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).

  4. Set up Test Network to mock the Ethereum Blockchain.

    testrpc -m "(insert your MetaMask seed phrase here)"    
  5. Compile and migrate the contracts.

    truffle compile
    truffle migrate
  6. Run the webpack server for front-end hot reloading.

    npm run start

Interacting with Society

Logging in

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.

Making MakerPoint (MKP) Payments

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.

Making Proposals

Simply add your Proposal and click 'Submit Proposal' - it's as easy as that!

Voting

Type the relevant ProposalId number into the box, then select For or Against, depending on your stance.

Acknowledgements

Much of our code was either based on or directly referenced the example cases given on the official Ethereum site and Solidity Documentation.

FAQ

What's a Blockchain?

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.

Why did you choose Ethereum?

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.

Useful Resources

Here are some links and resources we found handy when getting our head around blockchain and Ethereum.

Blockchain and Ethereum

Documentation

Troubleshooting