dropset is an on-chain order book program built for Solana.
The program’s external interface: instruction schemas, account layouts, and shared state types. This crate is client-agnostic and can be imported by both on-chain and off-chain consumers.
A procedural macro crate that generates strongly-typed instruction builders, account context structs, and validation scaffolding.
The implementation crate for instruction-macros.
Handles all the parsing, validation, and token generation logic for the
procedural macros.
The Solana on-chain program.
A lightweight Rust client for local testing, benchmarking, and integration with RPC services. Provides helpers for sending transactions and fetching parsed state via the JSON RPC API.
The faucet, maker, and taker bots below are prototype services intended for experimentation and testing, not production use.
A faucet service intended to send base and quote mint tokens associated
with a dropset market to an address upon request.
It's obviously only intended to run on a Solana test network like localhost, devnet, or testnet.
See faucet/README.md for more info.
A market-making bot implementing a naive version of the
Avellaneda-Stoikov model for a dropset market.
See maker-bot/README.md for more info.
A taker bot that periodically sends random market orders to a dropset market.
See taker-bot/README.md for more info.
See cu-bench/README.md for details on what is measured and why.
bash cu-bench/dropset/run-bench.sh
bash cu-bench/manifest/run-bench.sh
bash cu-bench/phoenix/run-bench.shSee each service's README.md for how to run it:
You can generate and open the full internal documentation (including private items and doc-hidden modules) using:
cargo doc --open --no-deps --document-private-itemsIf you're on Windows Subsystem for Linux cargo doc --open won't automatically
work. You must convert the doc target path to a Windows path first, and then
manually open it in your browser.
If you're using chrome.exe for example, at the repository root you could run:
# Build the docs first
cargo doc --no-deps --document-private-items
# Set the docs path as a Windows path
DOCS_PATH=$(wslpath -w target/doc/dropset_program/index.html)
# Open the docs in Chrome
chrome.exe "$DOCS_PATH"
# ---
# As a copy pastable one-liner
cargo doc --no-deps --document-private-items && \
chrome.exe "$(wslpath -w target/doc/dropset_program/index.html)"