Peatio 2.2.0 (June 3, 2019)

Overview

We are pleased to present Peatio Open Source 2.2.0.

This release concentrated on Plugable Coins API development new features and enhancements:

1. New admin roles integration. 2. Admin panel RBAC. 3. Daemons stability and performance improvements. 3. Foundation for third party trading engine integration.

This release notes is must-read for migrating from older versions.

Breaking changes

  • #2168: Plugable Coins API

This PR is gives ability gives ability to extend Peatio with new coins implementation.

Such a big architecture improvements usually brings breaking changes.

Core Peatio supports Ethereum, Bitcoin and Litecoin(as a plugin) blockchains. It means that you need to build custom image if you want to integrate other coins. For guide of how to build custom docker image check documentation. For coin integration guide check doc/integration.md of appropriate coin e.g(litecoin). You will find the list of approved coin plugins here.

  • #2242: Reorganization ruby and amqp workers.

Raw ruby daemons starting script was unified in the same way as we do for AMQP daemons.

So now to start ruby daemon you need to run the next command: bash bundle exec ruby lib/daemons/daemons.rb daemon_name

  • #2241: Major Market model rework.

This patch makes bunch of changes in Market model and related APIs, controllers and configuration.

Here is the full list of braking changes for more info check PR:

  • Replace Market enabled with state and list new states (without logic implementation)
  • Rework public/market API response structure
  • Rename Market API error name market.market.doesnt_exist -> market.market.doesnt_exist_or_not_enabled
  • Add ability to disable all markets
  • Remove precision equivalence validation (now amount and price precision could be different)
  • Add precisions sum validation (amount + price precision < 12)
  • Merge min_bid_amount & min_ask_amount to min_amount
  • Update Market seeds
  • Rename ask_precision -> amount_precision, bid_precision -> price_precision
  • Rename min_ask_price -> min_price, max_bid_price -> max_price
  • Rename ask_unit -> base_unit, bid_unit -> quote_unit

    • #2267: Move slave book from amqp to ruby daemons.

This PR changes slave book daemon type from AMQP daemon to raw ruby one.

Now to start slave book you need to run bundle exec ruby lib/daemons/daemons.rb slave_book.

  • #2257: Refactor blockchain daemon.

Now Blockchain daemon doesn't scaling and BLOCKCHAINS env variable.

Current version of Blockchain daemon starts separate thread per blockchain which works simultaneously and doesn't depend on each other. So it doesn't need scaling to multiple process and BLOCKCHAINS env variable.

  • #2258: Major trading engine and logic rework with precision, rounding and matching flow improvements.

Trading engine rework includes bunch of flow enhancements: * Remove rounding on order creation * Validate volume and price precision on order creation * Return invalid_price_or_volume error in case of fractional part overflow * Validate Market min_price, max_price and min_amount depending on amount and price precision * Market amount_precision + price_precision < FUNDS_PRECISION = 12 * Set Market FEE_PRECISION to 4 * Round estimated funds on market order creation * Rewrite Matching::Engine from scratch without recursion * Update markets.yml.erb with new min_price, min_amount

New Features

Now we support the next list of admin privileged roles: * Super admin * Admin * Accountant * Compliance * Technical * Support

For the list of permissions for each role check PR

  • AMQP messages for third party trading engine integration #2215 (ysv)

Our plan is to support third party trading engine, so we can replace all peatio trading daemons without breaking compatibility. This PR adds functionality of publishing Order submit and cancel, Liability create events to RMQ.

  • Add management API endpoint for listing trades #2182 (ymasiuk)
  • Change order 'state' to int for order_processor #2205 (mnaichuk)
  • AMQP messages for third party trading engine integration #2215 (ysv)
  • Use json format for logs #2232 (denisfd)
  • Retry withdraw on failure #2233 (shal)
  • Change: config/database.yml – use port value from ENV #2254 (matass)
  • Add min_confirmations field to Currency model entity #2276 (mnaichuk)
  • Add bitcoincash and ripple #2284(ymasiuk)

Enhancements

Bug Fixes