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
withstate
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
- Admin panel RBAC. New admin roles support #2217 (chumaknadya)
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
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
- Skip withdrawal in case of insufficient balance on hot wallet #2179 (mnaichuk)
- Update RBAC roles #2237 (mnaichuk)
- Add WS message for market order executed event #2208 (mnaichuk)
- Replace Passgen gem with new password generator #2245 (mnaichuk)
- Update Readme #2250 (liutenko)
- Improve sentry-raven error reporting #2236 (mnaichuk)
- Update logs in withdraw_coin worker #2234 (denisfd)
- Update ruby version and gems #2263 (mod)
- Multi coin support for altcoins #2243 (Xicy)
Bug Fixes
- Remove JWT token from response payload #2265 (shal)
- Remove http request for confirmations method #2262 (mnaichuk)
- Reload blockchain from DB before sync #2269 (mnaichuk)
- Fix bin/gendocs #2272 (mnaichuk)
- Fix issue with rake task release.rake in travis #2275 (mnaichuk)
- Fix GET /withdraws to include both fiat and crypto #2222 (msembinelli)
- Remove withdrawal attempts #2280 (mnaichuk)
- Fix double spending issue on withdraw #2280 (mnaichuk)