Repot Logo
ContractsChainsProtocolsSocial Media
Search for all contractsSearch for code snippets
Contracts
Protocols
Repot
v0.8.0
Repot
DocumentationPrivacyTerms
Social
DiscordXTelegram

Serum -- Pool

Audited

serum-dex

Project Serum Rust Monorepo

Build Status Discord Chat License

Website | Discord | Awesome | DEX | TypeScript

Program Deployments

Program Devnet Mainnet Beta
DEX DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin

Note

  • Serum is in active development so all APIs and protocols are subject to change.
  • The code is unaudited. Use at your own risk.

Contributing

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup component add rustfmt

On Linux systems you may need to install additional dependencies. On Ubuntu,

sudo apt-get install -y pkg-config build-essential python3-pip jq

Install Solana

Directions can be found here.

Download the source

git clone https://github.com/project-serum/serum-dex.git

Build, deploy, and test programs

See individual crates for documentation. For example, to build the dex see its README.

Running a local Solana cluster

The easiest way to run a local cluster is to use solana-test-validator.

Directories

  • assert-owner: Solana utility program for checking account ownership.
  • common: Common rust utilities.
  • dex: Serum DEX program and client utility.
  • pool: Serum pool protocol.
  • scripts: Bash scripts for development.

The Pool Protocol

This is a protocol, on Solana, that defines pool-like functionality. Like Ethereum interfaces, the setup doesn't do much to constrain the actual behavior of programs which claim to implement this program. This crate defines an instruction format for pool operations, and provides a library that maps Solana's primitives onto the Pool protocol's semantics.

Data Layout

The serialization and deserialization code are generated by borsh. The instruction and state types are defined in the schema crate.

Implementing the Pool protocol

Implement the Pool trait on a marker type ExamplePool, and invoke declare_pool_entrypoint!(ExamplePool) in your program's source somewhere. The crate is mostly complete, but there may be minor breaking changes before the first release.

Download CodeOpen Code

Cargo.toml