This is a library that implements an orderbook for traditional CEX type exchanges. Some features:
- Threadsafe via anonymous functions passed into channels
- Limit order processing:
- Trades
- Filled orders
- Partially filled orders
- In-memory rollback functionality on error
- Ordered map to track prices
- Ordered map to track order queue for each price
- Simple public API
- Test suite
- Example with CLI UI
- Over 255,000 order adds per second
Running tool: /opt/homebrew/bin/go test -benchmem -run=^$ -bench ^BenchmarkOrderbook$ orderbook -v
goos: darwin
goarch: arm64
pkg: orderbook
BenchmarkOrderbook
BenchmarkOrderbook-8 255438 4667 ns/op 3536 B/op 52 allocs/op
PASS
ok orderbook 2.641s