Sign inSign up

hummingbot/gateway-v2

By hummingbot

•Updated over 3 years ago
Archived

Image
0

2.4K

hummingbot/gateway-v2 repository overview

Hummingbot

⁠Hummingbot Gateway


Hummingbot Gateway is a REST API that exposes connections to various blockchains (wallet, node & chain interaction) and decentralized exchanges (pricing, trading & liquidity provision). It is written in Typescript and takes advantage of existing blockchain and DEX SDKs. The advantage of using gateway is it provideds a programming language agnostic approach to interacting with blockchains and DEXs.

Gateway may be used alongside the main Hummingbot client to enable trading on DEXs, or as a standalone module by external developers.

⁠Connectors

This is a list of DEX connections currently supported by Gateway.

ConnectorBlockchainTrading Interface
UniswapV2EthereumAMM
SushiswapEthereumAMM
UniswapV3EthereumEVM_Range_AMM
PangolinAvalancheAMM
PancakeSwapBinance Smart ChainAMM
TraderjoeAvalancheAMM
QuickswapPolygonAMM
PerpEthereumEVM_Perpetual
Mad MeerkatCronosAMM
VVSCronosAMM

⁠Contributing

There are a number of ways to contribute to gateway.

⁠Configuration

Before running gateway, you need to setup some configs. You can start by copying all of the yml files from src/templates⁠ to conf⁠. The format of this files are dictated by src/services/config-manager-v2.ts⁠ and the corresponding schema files in src/services/schema⁠ .

⁠Useful configuration options
  • If you want to turn off https, set unsafeDevModeWithHTTP to true in conf/server.yml⁠.

  • If you gateway to log to standard out, set logToStdOut to true in conf/logging.yml⁠.

  • Edit the path to the SSL files in conf/ssl.yml⁠. This can be generated by hummingbot with gateway generate-certs.

The hummingbot client is also able to edit this config files.

⁠Install and run locally

Compile the Typescript code with npm or yarn .

yarn
yarn build
yarn dev --passphrase=<ssl-files-passphrase>
# the passphrase can be anything if unsafeDevModeWithHTTP is true

⁠Documentation

The API is documented using swagger: gateway swagger docs⁠. You can run the gateway swagger UI by starting gateway and visiting localhost:8080⁠.

You can follow details about trading interfaces⁠

Also, we maintain docs on the official website about gateway here⁠.

⁠Files to read

Here are some files we recommend you look at in order to get familiar with the gateway code base.

⁠Testing

When making a PR, there are unit test coverage requirements. Look at our github workflow⁠ for the exact definition. There are some more

⁠Unit tests

Read this document for more details about how to write unit test in gateway: How we write unit tests for gateway⁠.

Run all unit tests.

yarn test:unit

Run an individual test file.

yarn jest test/app.test.ts
⁠Manual tests

We have found it is useful to test individual endpoints with curl commands. We have a collection of prepared curl calls. POST bodies are stored in JSON files. Take a look at the curl calls for gateway⁠. Note that some environment variables are expected.

⁠Linting

This repo uses eslint and prettier. When you run git commit it will trigger the pre-commit hook. This will run eslint on the src and test directories.

You can lint before committing with:

yarn run lint

You can run the prettifier before committing with:

yarn run prettier

Tag summary

Content type

Image

Digest

sha256:38d205833…

Size

962.9 MB

Last updated

over 3 years ago

docker pull hummingbot/gateway-v2:gateway-v2-dev