Skip to content

Prototype of a conference and review management tool on the Ethereum Blockchain and IPFS.

License

Notifications You must be signed in to change notification settings

FabiolaBusch/fakechair

Repository files navigation

FakeChair - Bachelor thesis Project

A prototype of a conference management and review tool on the Ethereum testnet Rinkeby. There are two ways to use this app:

  1. Access the live demo
  2. Install locally

There is information about

Live Demo

A live demo is available at fakechair.fabiolabuschendorf.de

This dapp is migrated to the Rinkeby testnet. Log in to MetaMask in your browser, select the Network Rinkeby and create an account with some test-ether (generate them in the faucet). Files hosted on IPFS are accessed via a public gateway https://ipfs.io/ipfs/HASH. It might take some time to retrieve contents from the public gateway. To create content, you need to run an own IPFS node in your terminal:

$ ipfs daemon

Usage

Workflow Diagram

See: Business Process Model and Notation This figure was made with yED Graph Editor

Local Installation

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites for local development

What things you need to install the software and how to install them.

Get the project:

$ git clone https://gitlab.gwdg.de/f.buschendorf/fakechair 

This Project uses the node packet manager:

$ sudo apt-get install node 

The dapp is build using the dapp framework Truffle:

$ npm install -g truffle 

Install MetaMask, a browser add-on to interact with an Ethereum blockchain via dapps:

Download and install Ganache, a local Ethereum blockchain:

Download and install IPFS, a peer-to-peer file storage system:

Go into the project folder, you will find package.json. Install all dependencies. npm will look at the dependencies that are listed in that file and download the latest versions.

$ npm install

Run dapp locally

Start Ganache on port 7545.

Start IPFS daemon:

$ ipfs daemon 

In project folder: Compile and migrate contracts to the local blockchain:

$ truffle migrate --reset 

Run node:

$ npm run start 

Log in to MetaMask: copy the mnemonic from Ganache UI and import it to MetaMask. This will enable the accounts generated by Ganache (see Truffle Pet-Shop tutorial). Set MetaMask to the local rpc server: http://127.0.0.1:7545

In your browser the dapp should now be running and working.

Running the tests

There are only a few automated tests for this system, which are not up-to-date.

$ truffle test

Remote Deployment

This dapp is deployed on the Rinkeby testnet.

Deploy contracts to testnet

A full description on how to deploy it on an Ethereum testnet like Rinkeby can be found here. However, I added a few details:

First, you need to download the whole Rinkeby blockchain. This can take hours! Let it run over night. For deployment, truffle.js assumes an open RPC endpoint running on on localhost, port 8546:

 $ geth --rinkeby --rpc --rpcport 8546

If the blockchain is synchronised, calling eth.syncing in the geth console returns true (Ubuntu)

$ geth --datadir=$HOME/.rinkeby attach ipc:$HOME/.ethereum/rinkeby/geth.ipc console
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.2-stable-b8b9f7f4/linux-amd64/go1.9.4
coinbase: 0x2c0a8be92c61efa92edb1dc478a58ee2a0e07eb1
at block: 2420815 (Thu, 07 Jun 2018 16:38:24 CEST)
 datadir: /home/fabiola/.ethereum/rinkeby
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> eth.syncing
true

Migrate the contracts to this network:

$ truffle migrate --network live

The contracts are now accessible via Rinkeby.

Build UI source code

This project is build with webpack. To build a compressed production version, run

$ npm run build

This will create the folder build_webpack/ with a single index.html file and a /static folder containing a minified .css and .js file. Put this content on a webserver.

Built With

  • Solidity - Smart Contract programming language for Ethereum
  • react-js - The web framework used
  • npm - Packet manager for JavaScript
  • truffle - Development framework for Ethereum (based on react-box)
  • web3.js - JavaScript library for Ethereum contract interaction
  • Bootstrap v4 - Front-end component library
  • react-jsonschema-form - Creating forms from JSON schemas
  • webpack - a static module bundler for JavaScript applications

Authors

License

GNU GPLv3

Some Code Sources

About

Prototype of a conference and review management tool on the Ethereum Blockchain and IPFS.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published