Skip to content

Latest commit

 

History

History
90 lines (58 loc) · 4.22 KB

CONTRIBUTING.md

File metadata and controls

90 lines (58 loc) · 4.22 KB

Contributing

The 0xcert Framework is a mono repository with all framework-related packages stored in the /packages folder.

Development

We use RushJS to manage this repository. Some quick notes on how to manage the repository are documented here. But here is a quick start to run the test suite if you have just cloned this repository and never used RushJS before. Expect to spend 10 minutes building and running this test suite for the first time. Subsequently testing any code will be faster, and you can limit testing to a specific package.

On Mac OS, install development tools by running xcode-select --install and follow the instructions here if you experience issues with node-gyp.

Install dependencies -- You only need to run this once.

npm install -g @microsoft/rush

Update packages -- Run this if you add/remove packages from this repository.

rush update --full

Rebuild and test -- Do this each time you make changes to the code

rush rebuild --verbose
rush test --verbose

The above notes will help you decide which commands to run during development on your own machine. But for any commits and pull requests in this repository, the entire test suite will be run using continuous integration.

Issues

We use GitHub issues to track bugs. Please ensure your description is clear and has sufficient instructions so that we can reproduce the issue.

Pull requests

Always fork the repository and create your branch from master. If you've added code that should be tested, add tests. Also, ensure the test suite passes before submitting the PR.

Coding style

Please follow the TypeScript coding guidelines.

Release process

  1. Run the commands below to push all packages to NPM:
$ rush version --bump --override-bump minor
$ rush update --full
$ rush rebuild
$ rush test
$ rush publish --publish --include-all
  1. Deploy conventions to conventions.0xcert.org. We host v1 and v2 conventions on the same domain so make sure you don't delete the old content. Note that v2 conventions are built from the active master branch and v1 conventions are copied from common/conventions-v1 folder.
$ cd ./common/scripts
$ ./build-conventions.sh
$ cd ../..
  1. Follow the guide in the 0xcert/docs repository to update and deploy the documentation. Make sure documentation pages describe the latest schemas.

Smart contract deploy

Fueling 0xcert framework is the 0xcert protocol which consists for multiple smart contracts which are located in 0xcert/ethereum-gateway-contracts and 0xcert/ethereum-proxy-contracts packages. To automate deployment and configuration of this contracts we created a deploy script. Deploy script(deploy-protocol.sh) is located in common/scripts/.

Prerequisites

Depending on which network you want to deploy (Ethereum / Wanchain) you need a running node of the network with 2 unlocked accounts which own their designated cryptocurrencies(ETH/WAN). To find out how to do this you can check this tutorial for Ethereum network and this for Wanchain.

Usage

Navigate to /common/scripts then deploy the protocol:

GATEWAY_DEPLOYER_ACCOUNT=0x... PROXY_DEPLOYER_ACCOUNT=0x... ./deploy-protocol.sh

** List of possible input parameters **

Key Description
GATEWAY_DEPLOYER_ACCOUNT A string representing the Ethereum address from which gateway contracts will be deployed.
NETWORK A string representing the name of the network to which we are deploying. Can be either ethereum or wanchain. It is ethereum by default.
PROXY_DEPLOYER_ACCOUNT A string representing the Ethereum address from which proxy contracts will be deployed.
WEB3_URL A string representing URI to you node. http://localhost:8545 by default.