serum-dex

Deploying the DEX

Using the do.sh script from the repository's top level directory,

Run unit tests

bash ./do.sh test dex

Compile the dex binary

bash ./do.sh build dex

Deploy the dex to the configured solana cluster

bash DEX_PROGRAM_ID="$(solana deploy dex/target/bpfel-unknown-unknown/release/serum_dex.so | jq .programId -r)"

Run the fuzz tests

bash cd dex cargo install cargo-fuzz cargo fuzz run multiple_orders

Using the crank client utility

```bash cd crank

read the autogenerated help text

cargo run -- help

supported options are localnet, mainnet, testnet, devnet

CLUSTER=localnet

verify that you have SOL balances for gas

KEYPAIR=~/.config/solana/id.json solana balance -k $KEYPAIR

run the demo script (this is mostly a smoke test)

cargo run -- $CLUSTER whole-shebang $KEYPAIR $DEXPROGRAMID

list a market with the default tick size and minimum quantity.

if both assets have 6 decimals, this will be a quantity of 1 and a tick size of 0.01

COINMINT="..." PRICECURRENCYMINT="..." cargo run -- $CLUSTER list-market $KEYPAIR $DEXPROGRAMID --coin-mint $COINMINT --pc-mint $PRICECURRENCYMINT ```

First-time setup

```bash

Building the dex

sudo apt-get install -y pkg-config build-essential python3-pip jq curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.4.14/install/solana-install-init.sh | sh -s - v1.4.14 export PATH="/home/ubuntu/.local/share/solana/install/active_release/bin:$PATH"

git clone https://github.com/project-serum/serum-dex cd serum-dex ./do.sh update ./do.sh build dex

run a solana cluster. in a new shell:

git clone https://github.com/solana-labs/solana --branch v1.4.14 cd solana sudo apt-get install -y libssl-dev libudev-dev zlib1g-dev llvm clang cargo build --release export RUSTLOG=solanaruntime::systeminstructionprocessor=trace,solanaruntime::messageprocessor=info,solanabpfloader=debug,solana_rbpf=debug NDEBUG=1 ./run.sh

Deploy the dex to our cluster (in the old shell)

solana config set -u http://127.0.0.1:8899 solana-keygen new solana airdrop 100 DEXPROGRAMID="$(solana deploy dex/target/bpfel-unknown-unknown/release/serum_dex.so | jq .programId -r)" CLUSTER=localnet KEYPAIR=~/.config/solana/id.json

run the demo script (this is mostly a smoke test)

cargo run -- $CLUSTER whole-shebang $KEYPAIR $DEXPROGRAMID ```