OmniEther is an IPFS based decentralised application that uses the power of Ethereum smart contracts to eliminate corruption in funds passed down in an organisation. Using a self duplicating, tree-based collection of smart contracts, funds are passed from parent to child contracts(signifying levels in an organisation), and the validity of every transaction is ensured due to the transparent nature of the Ethereum blockchain. Deployed at https://omni-ether.herokuapp.com/ .
- Bagged Special Mention in EthIndia Online Hackathon, Asia's Biggest Ethereum Hackathon. Results @ https://devfolio.co/blog/announcing-winners-of-ethindia-online-hackathon/
- Problem to be solved:- Maintaining transparency and security while transferring assets (money or important data) from top level to bottom level in a hierarchical organization/system thus ensuring that all intended assets reach bottom-most level without leakage.
- A Real Life Problem:- In 1985 Rajiv Gandhi said that for every 1 rupee allotted to any project, only 15 paisa reaches to the ground level. Our Project will solve this issue seamlessly.
- We are creating smart contract in Solidity which will handle public money or valuable assets.
- The smart contract is deployed on Matic testnet2 network to leverage their developer friendly sidechains and fast transactions as compared to Rinkeby Test Network etcetera.
- For mimicking real world architect we are deploying contracts in Hierarchical format just like Tree (data structure).
- For Hierarchical format we are deploying self-replicated contract instances i.e. each contract instance deploys an instance of same contract and transfers some fraction of it’s money to child instance and thus we achieve transfer of funds in hierarchy.
- Any organization can create their root node (an instance of smart contract) and then those instance can go on replicating themselves as long as there is need to transfer assets to lower level.
- Only through leaf nodes valuable assets can be transferred into private accounts. There one can, either through public opinion or through their own survey, decide completion of project by the owner of that private account and after that finalize request to transfer valuable assets to that account. Thus, money leaves our tree of smart contracts only after solid verification.
- Between any parent-child instance of smart contract only manager of either instance is able to request asset transfer between them.
- Every time before deploying an instance of smart contract we are asking whether this node is leaf node or lowest level instance of smart contract. So that only this kind of instance is capable to transfer assets to private account to check fraudulence.
- Each instance of smart contract has a dedicated chat channel setup by manager of that instance which can accessed by persons authorized by the manager.
- Chats are encrypted using AES 256 encryption, thus and cannot be accessed by unauthorized individual.
- OrbitDB and IPFS technology is used to store and serve chats.
- APIs were created using express.js to fetch chats from OrbitDB.
- We have used custom ERC20 token (named GovEth) and initiated an ICO (Inital Coin Offering) to counter high fluctuation in Ether's monetary value.
https://www.youtube.com/watch?v=P-O4lJjbQ8Y
- Clone the repository using
git clone https://github.com/pirateksh/OmniEther.git
. - Run
npm install
- Run
npm run build
- Run
npm run start
and then visitlocalhost:3000
. - Add our GovEth custom token in MetaMask using this address
0xE942912000d1A1f30417ca263d58c9F87fd1F596
. For more information on how to add Custom Tokens in MetaMask visithttps://tokenmint.io/blog/how-to-add-your-custom-erc-token-to-metamask.html
. - To configure Matic testnet in MetaMask, visit
https://docs.matic.network/newbies/conf-testnet-metamask/
. - You are ready to go now...
* Ethereum,
* Solidity(to write Smart Contract),
* Matic(for deploying Smart Contract),
* ERC20 token,
* Node.js (for backend),
* React.js(for frontend),
* Web3.js(for blockchain interaction),
* Next.js(for server side rendering of frontend pages),
* Express.js(to create API to fetch chats from OrbitDB)
* OrbitDB (decentralized database based on IPFS)