Welcome to the arXain, an open source academic journal wich combines a distributed index and a distributed file network to completely decentralize the process. This allows us to replicate many of the features that traditional academic journals and pre-print servers provide, but in an open-source, decentralized fashion. Instead of centralized journals storing and hosting all academic manuscripts, the users of arXain will store, backup, and host their own manuscripts. This strategy has the benefits of reduced bandwidth, reduced hosting fees, and decreased submit to "public" time. The use of blockchain allows us to autonomously implement the peer review process. No longer are reviews shuttled between a third party and the authors and reviewers, as the blockchain mantains a public history of these exchanges. We hope that arXain will allow scientists to focus on what they do best, science.
Below are the requirements for running the development version of arXain. You may choose to use other tools where applicable, but we do not support them. Feel free to test and submit a pull request if any changes need to be made to accommodate these alternative tools.
- OSX/Linux (Windows not officially supported yet)
- go-ipfs v0.4.13
- node.js
- npm
- MetaMask
- Python3, a few of us use Anaconda to manage packages
There are a few components that need to be running in order for an arXain development session to function properly. They are briefly outlined below.
- After installing go-ipfs, initialize and run the daemon in a terminal session.
> ipfs init
> ipfs daemon
- Valid IPFS hashes on the IPFS network can be view by directing a browser to
http://localhost:8080/ipfs/<hash>
- Follow the installation and run instructions in arXain/node_client/SETUP.md
$ npm install
- Installs all the packages you need to run, including webpack. See a list of what will be installed in
package.json
.
- Installs all the packages you need to run, including webpack. See a list of what will be installed in
$ npm run build
- Builds the webpack bundle of all the javascript. Configuration for building in
webpack.config.js
. All you need to do is includedist/build.js
in any html file.
- Builds the webpack bundle of all the javascript. Configuration for building in
- Establish the default connection to a blockchain by editing
truffle.js
to point to where your testRPC is running. $ npm install -g truffle
- You may need to use sudo to install it.
$ npm install -g ganache-cli
and then simply$ ganache-cli
to run it.- This is to run a blockchain locally for testing.
- The default port it runs on is 8545.
$ truffle compile
- This will compile the contracts written in solidity into a form such that they interact with javascript.
$ npm run dev
- Launches the dev server on port 4000.
- View the website at http://127.0.0.1:4000
All submitted code should be tesed. Testing frameworks are still under construction.
See our CONTRIBUTING.md for a more detailed example of how to contribute to arXain.
arXain was founded and is maintained by four Physics PhD students from the University of Pennsylvania.
- Bijan Haney
- David Hopper
- Saul Kohn
- Khilesh Mistry
arXain is distributed under the GNU GPLv3 and can be found in the LICENSE.md file.
This project would not be possible without the huge amount of work done on Ethereum and IPFS.
- Won "Best Blockchain Hack" and "Most Promising Hack" at PennApps 2018