Bounty-like system for Open Anonymous Scientific Peer-Reviews
🥇 1st Place at ETHTurin Hackathon (open with MetaMask disabled)
The Project implements a basic Bounty-like contract called AntsReview to allow anyone to issue an antReview in ETH, a bounty for peer-review in scientific publication, linked to requirements stored on ipfs which anyone can fufill by submitting the ipfs hash which contains evidence of their fufillment.
After the submission of successful peer-reviews, they will be audited by an external Editor and payed by the Issuer.
To incentivise ethical behaviour the system will implement a quadratic funding on AntsReview.
The Project is intended to be used as a template for developing the idea presented in the white paper, extending its functionality via the following steps:
- Quadratic Funding Gitcoin-like for AntsReview.
- ERC20 token, name Ant, symbol ANT.
- zkANT, allowing private ANT transactions on Ethereum using ZK-SNARKs via AZTEC Protocol.
- Timestamped on Ethereum via PoE (Proof of Existence).
- Storing on IPFS.
- ENS, allowing human-readable Ethereum addresses
- Upgradability, to allow the logic to be extended and improved.
- ...
Clone this GitHub repository.
- Global dependencies
- Truffle:
$ npm install -g truffle
- Ganache:
$ npm install -g ganache-cli
- OpenZeppelin Library v3.0:
$ npm install -g @openzeppelin/contracts
- MythX for Truffle (optional):
$ npm install -g truffle-security
- Start ganache-cli with the following command:
$ ganache-cli
- Compile the smart contract using Truffle with the following command:
$ truffle compile
- Deploy the smart contracts using Truffle & Ganache with the following command:
$ truffle migrate
- Test the smart contracts using Truffle & Ganache with the following command:
$ truffle test
- Analyze the smart contracts using MythX for Truffle with the following command (optional):
$ truffle run verify
-
Get an Ethereum Account on Metamask.
-
On the landing page, click “Get Chrome Extension.”
-
Create a .secret file cointaining the menomic.
-
Get some test ether from a Rinkeby's faucet.
-
Signup Infura.
-
Create new project.
-
Copy the rinkeby URL into truffle-config.js.
-
Uncomment the following lines in truffle-config.js:
// const HDWalletProvider = require("@truffle/hdwallet-provider"); // const infuraKey = '...'; // const infuraURL = 'https://rinkeby.infura.io/...'; // const fs = require('fs'); // const mnemonic = fs.readFileSync(".secret").toString().trim();
-
Install Truffle HD Wallet Provider:
$ npm install @truffle/hdwallet-provider
-
Deploy the smart contract using Truffle & Infura with the following command:
$ truffle migrate --network rinkeby
The Project's smart contract have been deployed on Rinkeby.
The ABIs are available to test the project on Rinkeby's Network.
- Install Ganache GUI.
- Change Ganache GUI port to 8545.
- Import Ganache GUI mnemonic into MetaMask.
- Connect MetaMask to Ganache GUI, adding a custom RPC specifing the Ganache GUI's RPC server URL.
- Deploy the smart contracts to Ganache GUI:
$ truffle migrate
- Move to client directory on the project:
$ cd client
- Install dependencies:
$ npm install
- Start the Local Web Server:
$ npm run start
- Interacting with the User Interface (Proof of Concept):
- Anyone can add an AntReview specifying IPFS Has of requirements, Deadline Timestamp, Ether value of the AntReview reward.
The DApp (PoC) has been deployed on IPFS via Fleek: https://antsreview.on.fleek.co
- oscoin
- Towards Open Science: The Case for a Decentralized Autonomous Academic Endorsement System
- ERC20
- Bounties-Network
- Gitcion
- Gitcoin Quadratic Funding
- Quadratic Payments
- IPFS
- ZKPs
- AZTEC Protocol
- Ethereum 9 3/4
Project created by Team MetaBounty for ETHTurin 2020 Hackathon.
Conception & design by Bianca Trovò
Implementation & code development by Nazzareno Massari
Pixel Art by Marcelo Colmenero