Contributing

Monorepo

The repository of the protocol is a monorepo, using yarn workspaces and lerna. It holds every packages composing the implementation of the protocol. This implementation is done in typescript.

Architecture

The Protocol is designed in layers:

Items in light green are done in v2.0-alpha. Items in dark green are items under development.

  • Storage: Stores the data about requests on IPFS and Ethereum

  • Data Access: Indexes transactions and will eventually batch them

  • Transaction: Creates transactions and will eventually handle the encryption

  • Request Logic: Business logic: properties and actions of requests

  • Advanced Logic: Hosts the extensions to the protocol

  • Content Data: Hosts the standards for the data of the Request Protocol

  • ETH/BTC/Fiat Payment: Detection of payments

  • Smart Requests: Smart requests, in addition to documenting transactions, have control over them. It enables extensions such as continuous payments, cross-currency, escrow, ICO

  • Request Node: Web server that accepts transactions and saves them in IPFS and Ethereum. They aim at making easy to use the Request Storage.

  • Request Client js: A web and node.js library to connect to Request Nodes, meant to simplify the use of the protocol.

  • Request Portal: Request Portals exist on top of Request Nodes and libraries. They provide an even easier usage of the protocol in exchange for a fee. It is not necessary to go through the portals to use the Request protocol

How to...

Contribute

Check the contribution guidelines: https://github.com/RequestNetwork/requestNetwork/blob/development/CONTRIBUTING.md

Report a problem

Build all packages

  1. git clone https://github.com/RequestNetwork/requestNetwork.git

  2. yarn run build

Sometimes it helps to run yarn run build:tsc to fix typescript build problems.

Lint all packages

  1. git clone https://github.com/RequestNetwork/requestNetwork.git

  2. yarn run lint

  3. yarn run packageJsonLint

Run all the tests

  1. git clone https://github.com/RequestNetwork/requestNetwork.git

  2. Console 1

    1. Install and setup an IPFS node

    2. ipfs daemon

  3. Console 2

    1. cd packages/ethereum-storage

    2. yarn run ganache

  4. Console 3

    1. cd packages/ethereum-storage

    2. yarn run deploy

    3. cd ../

    4. yarn run test

CircleCI Build

We use CircleCI to build the projects of the monorepo: https://circleci.com/gh/RequestNetwork/requestNetwork

Readings

Good readings for anyone interested in developing on the protocol: