All Projects → fluidex → dingir-exchange

fluidex / dingir-exchange

Licence: other
A high performance crypto trading engine

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to dingir-exchange

pytradesimulator
Python based exchange simulator using FIX protocol
Stars: ✭ 20 (-88.17%)
Mutual labels:  matching-engine, exchange-server
redis-matching-engine-server
Implement exchange matching engine by lua script, run in redis
Stars: ✭ 39 (-76.92%)
Mutual labels:  matching-engine, exchange-server
xExchange
This module contains DSC resources for deployment and configuration of Microsoft Exchange Server.
Stars: ✭ 62 (-63.31%)
Mutual labels:  exchange-server
binance-downloader
Python tool to download Binance Candlestick (k-line) data from REST API
Stars: ✭ 44 (-73.96%)
Mutual labels:  cryptocurrency-exchanges
LiuAlgoTrader
Framework for algorithmic trading
Stars: ✭ 514 (+204.14%)
Mutual labels:  cryptocurrency-exchanges
CVE-2021-33766
ProxyToken (CVE-2021-33766) : An Authentication Bypass in Microsoft Exchange Server POC exploit
Stars: ✭ 37 (-78.11%)
Mutual labels:  exchange-server
docs-api
Nobitex Cryptocurrency Exchange Market API Documentation
Stars: ✭ 36 (-78.7%)
Mutual labels:  cryptocurrency-exchanges
Algotrading
Algorithmic trading framework for cryptocurrencies.
Stars: ✭ 249 (+47.34%)
Mutual labels:  cryptocurrency-exchanges
Pi-Trader
A cryptocurrency day-trading bot for Raspberry Pi.
Stars: ✭ 44 (-73.96%)
Mutual labels:  cryptocurrency-exchanges
clob
Simple limit order book and matching engine.
Stars: ✭ 17 (-89.94%)
Mutual labels:  matching-engine
gome
gome- Golang Match Engine, uses Golang for calculations, gRPC for services, ProtoBuf for data exchange, RabbitMQ for queues, and Redis for cache implementation of high-performance matching engine microservices/ gome-高性能撮合引擎微服务
Stars: ✭ 47 (-72.19%)
Mutual labels:  matching-engine
Purge-LogFiles
PowerShell script for Exchange Server 2013+ environments to clean up Exchange and IIS log files.
Stars: ✭ 22 (-86.98%)
Mutual labels:  exchange-server
cryptotrader-core
Simple to use Crypto Exchange REST API client in rust.
Stars: ✭ 19 (-88.76%)
Mutual labels:  cryptocurrency-exchanges
Remove-DuplicateItems
Script to remove duplicate items from Exchange mailboxes.
Stars: ✭ 32 (-81.07%)
Mutual labels:  exchange-server
ExchangeAnalyzer
Exchange Analyzer - Checks Exchange Server 2013 or 2016 organizations for common configuration issues and recommended practices.
Stars: ✭ 100 (-40.83%)
Mutual labels:  exchange-server
alfredToday
Today menu Plugin for Alfred (generalized for public consumption)
Stars: ✭ 39 (-76.92%)
Mutual labels:  exchange-server
roq-samples
How to use the Roq C++20 API for Live Cryptocurrency Algorithmic and High-Frequency Trading as well as for Back-Testing and Historical Simulation
Stars: ✭ 119 (-29.59%)
Mutual labels:  matching-engine
orderbook-rs
Basic order matching engine written in Rust
Stars: ✭ 276 (+63.31%)
Mutual labels:  matching-engine
CoinMarketCap-Historical-Prices
Makes use of python3 and bs4 to scrape historical cryptocurrency prices, volume and market caps from coinmarketcap.com
Stars: ✭ 72 (-57.4%)
Mutual labels:  cryptocurrency-exchanges
binance-rs-async
Async client for the Binance APIs
Stars: ✭ 74 (-56.21%)
Mutual labels:  cryptocurrency-exchanges

Dingir Exchange

Dingir Exchange is a high performance exchange trading server.
The core matching engine is a fully async, single threaded, memory based matching engine with thousands of TPS.

  • Features: order matching, order state change notification, user balance management, market data...
  • Non Features: user account system, cryptocurrency deposit/withdraw...

Technical Details

  • Language: Rust
  • API Interface: GRPC
  • Server framework: Tokio/Hyper/Tonic
  • Storage: SQL Databases
  • Persistence: (a)Append operation log and (b)Redis-like fork-and-save persistence

The architecture is heavily inspired by Redis and Viabtc Exchange

Prerequisite

  • cmake
  • librdkafka

MacOS

$ brew install cmake librdkafka

Ubuntu / Debian

# apt install cmake librdkafka-dev

RedHat / CentOS / Fedora

# dnf install cmake librdkafka-devel

Todos

  • push notifications using GRPC/websockets
  • API Documentation
  • Better test coverage

Example

# Simple test
$ cd $DingirExchangeDir
# Lanuch the external dependency services like Postgresql and Kafka
$ docker-compose --file "./orchestra/docker/docker-compose.yaml" up --detach
$ make startall # or `cargo run --bin matchengine` to start only core service
$ cd $DingirExchangeDir/examples/js ; npm i
# This script will put orders into the exchange.
# Then you will find some orders got matched, trades generated,
# and users' balances updated accordingly. 
$ npx ts-node tests/trade.ts 

Release

We uses cross to generate release builds for Linux Distributions. For example, you could generate a static release build via the below command.

RUSTFLAGS="-C link-arg=-static -C target-feature=+crt-static" cross build --bin matchengine --target x86_64-unknown-linux-gnu --release

And a new Docker image could be generated by the release script.

# In root directory of this project
./release/release.sh YOUR_DOCKER_REGISTRY_DOMAIN.COM:YOUR_DOMAIN_PORT NEW_IMAGE_TAG

Related Projects

Peatio: A full-featured crypto exchange backend, with user account system and crypto deposit/withdraw. Written in Ruby/Rails. It can process less than 200 orders per second.

viabtc exchange server: A high performance trading server written in C/libev. Most components of the project are written from scratch including network, RPC. It can process thousands of orders per second.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].