This guide is intended to help developers who want to contribute to opendexd. Developers who want to build services on top of opendexd, should check out the node's API Documentation.

Contribution Guidelines

Be sure to read the Contribution Guidelines before starting to work or opening a Pull Request.

Recommended Development Environments

The following development environments are known to be compatible with opendexd and are recommended for developers that are unsure what tools to use.

Visual Studio Code

Visual Studio Code is a cross-platform code editor that's compatible with most popular programming languages and extensible via a large collection of plug-ins.

Visual Studio Code Plugins

Consider using the following plugins for working with opendexd.

Visual Studio Code Environment Config

Adding the two files from this gist into a .vscode folder within the folder where you've cloned opendexd will automatically provide debug configurations and general settings that are helpful when developing opendexd.

opendexd Setup

Auto-restart opendexd on file change

Auto restart on every file change under dist folder with nodemon:

nodemon --watch dist -e js bin/opendexd

With some sample args disabling lndbtc/lndltc:

nodemon --watch dist -e js bin/opendexd --lndbtc.disable=true --lndltc.disable=true

Connect opendexd to testnet

We recommend to connect the opendexd instance you are developing on to testnet. Combined with above restarting mechanism, this lets you instantly see how your changes behave in a real-world trading environment.

  1. Start testnet with default settings as described here.

  2. Once the environment is up and running, exit from the cli session by typing exit or open a second terminal.

  3. Stop the opendexd container with docker stop testnet_opendexd_1.

  4. Copy the testnet lndbtc & lndltc folders into some path that you can easily access. E.g. into your home directory:

    sudo cp -R ~/.opendex-docker/testnet/data/lndbtc ~/
    sudo cp -R ~/.opendex-docker/testnet/data/lndltc ~/
  5. Ensure that you own the copied folders:

    sudo chown -R <youruser> ~/lndbtc
    sudo chown -R <youruser> ~/lndltc
  6. Create/change opendex.conf in ~/.opendexd to contain the following:

    cltvdelta = 40
    disable = false
    host = "localhost"
    nomacaroons = false
    port = 20009
    certpath = "/home/<youruser>/lndbtc/tls.cert"
    macaroonpath = "/home/<youruser>/lndbtc/data/chain/bitcoin/testnet/admin.macaroon"
    cltvdelta = 576
    disable = false
    host = "localhost"
    nomacaroons = false
    port = 21009
    certpath = "/home/<youruser>/lndltc/tls.cert"
    macaroonpath = "/home/<youruser>/lndltc/data/chain/litecoin/testnet/admin.macaroon"
    disable = false
    host = "localhost"
    port = 18000
  7. Now you can start your local opendexd instance and it should connect to the running testnet docker environment. You can check that everything works with ~/opendexd/bin$ ./opendex-cli -p 18886 getinfo.