A decentralized peer-reviewed journal dapp on Ethereum
The existing process of publishing papers to academic journals involves a near-monopoly of publishers which basically act as middlemen and make the profits from a published paper. Additionally, there is very little incentive for peer reviewers to review the work of another colleague trying to get published. As a result most papers take more than 2 years to publish, and have on average ~2.3 peer reviews. We thought that this was a system that could benefit from decentralization, by replacing the publisher with the ethereum blockchain and solidity smart contracts, and introducing incentives for peer reviewers in the form of ethereum and/or reputation points.
What it('s supposed to) do
In a nutshell, a user can download or submit paper on the site. A special editor role is used to review submitted papers, select quality peer reviews, and determine whether the paper should be published, rejected, or needing revision.
ETHJournal, in it's current state, consists of 2 smart contracts; one for the Journal itself, and another Paper contract used by each paper an author is publishing/has published. The Journal contract contains the logic for what a user should be presented with when they open the ETHJournal site. It contains 2 address arrays, one for authors and another for editors, and a mapping of paper addresses to booleans. If a user is neither an author nor editor, then they have only read access to the papers and the ability to sign up as either an author or editor. However, a user accessing a paper for the first time will be charged a one time transaction fee. If a user is an author, they have the ability to upload a paper and send it to an editor to get it published. An editor would be notified of the new paper and the Paper contract would select 3 unique authors, who did not author the same paper, to peer review the article.
To set up:
git clone https://github.com/syigzaw/ethjournal.git npm install testrpc
In another command line, enter:
truffle compile && truffle migrate ng serve
The app is now served on localhost:4200