/0x-api

An HTTP Interface to 0x liquidity and tooling

Primary LanguageTypeScriptOtherNOASSERTION

alt text

Table of contents

Getting started

Pre-requirements

Developing

To get a local development version of 0x-api running:

  1. Clone the repo.

  2. Create an .env file and copy the content from the .env_example file. Defaults are defined in config.ts/config.js. The bash environment takes precedence over the .env file. If you run source .env, changes to the .env file will have no effect until you unset the colliding variables.

Environment Variable Default Description
CHAIN_ID Required. No default. The chain id you'd like your API to run on (e.g: 1 -> mainnet, 42 -> Kovan, 3 -> Ropsten, 1337 -> Ganache). Defaults to 42 in the API, but required for docker-compose up.
ETHEREUM_RPC_URL Required. No default. The URL used to issue JSON RPC requests. Use http://ganache:8545 to use the local ganache instance.
MESH_WEBSOCKET_URI Required. Default for dev: ws://localhost:60557 The URL pointing to the 0x Mesh node. A default node is spun up in docker-compose up
POSTGRES_URI Required. Default for dev: postgresql://api:api@localhost/api A URI of a running postgres instance. By default, the API will create all necessary tables. A default instance is spun up in docker-compose up
FEE_RECIPIENT_ADDRESS 0x0000000000000000000000000000000000000000 The Ethereum address which should be specified as the fee recipient in orders your API accepts.
MAKER_FEE_ASSET_DATA 0x The maker fee token asset data for created 0x orders.
TAKER_FEE_ASSET_DATA 0x The taker fee token asset data for created 0x orders.
MAKER_FEE_UNIT_AMOUNT 0 The flat maker fee amount you'd like to receive for filled orders hosted by you.
TAKER_FEE_UNIT_AMOUNT 0 The flat taker fee amount you'd like to receive for filled orders hosted by you.
WHITELIST_ALL_TOKENS false A boolean determining whether all tokens should be allowed to be posted.
  1. Install the dependencies:

    yarn
  2. Build the project:

    yarn build
  3. Run docker-compose up to run the other dependencies required for the API. This uses the local docker-compose.yml file. On start-up, the event-pipeline container will crash and restart until Postgres is up. If you switch CHAIN_ID after a prior run, you will have to rm -rf 0x_mesh postgres to delete the volumes containing stale data.

  4. Start the API

    yarn start

    For development:

    yarn dev

Testing

Set the environment variables CHAIN_ID=1337 and ETHEREUM_RPC_URL=http://ganache:8545. Run docker-compose up and wait for containers to start up.

Then run yarn test.

Commands

  • yarn build - Build the code
  • yarn test - Test the code (must run docker-compose first)
  • yarn lint - Lint the code
  • yarn start - Starts the API
  • yarn dev - Starts the API in dev-mode
  • yarn watch - Watch the source code and rebuild on change
  • yarn prettier - Auto-format the code

Deployment

A Docker image is built and hosted by Dockerhub every time a change to the master branch occurs. Running this image will run 0x API as a monolith, with all it's dependencies. With some minor configuration and refactoring, you can run the different components of the API separately.

Database

This project uses TypeORM. It makes it easier for anyone to switch out the backing database used by this project. By default, this project uses a PostgreSQL database.

Legal Disclaimer

The laws and regulations applicable to the use and exchange of digital assets and blockchain-native tokens, including through any software developed using the licensed work created by ZeroEx Intl. as described here (the “Work”), vary by jurisdiction. As set forth in the Apache License, Version 2.0 applicable to the Work, developers are “solely responsible for determining the appropriateness of using or redistributing the Work,” which includes responsibility for ensuring compliance with any such applicable laws and regulations. See the Apache License, Version 2.0 for the specific language governing all applicable permissions and limitations: http://www.apache.org/licenses/LICENSE-2.0