2.0.0
Introducing Clio version 2.0.0
Version 2.0.0 of Clio, an XRP Ledger API server optimized for HTTP and WebSocket API calls, is now available. This release adds new features, bug fixes, and amendment support.
Amendment Support
The following amendments have been introduced since Clio 1.0.4 and have transaction model changes. Clio 2.0.0 is built with libxrpl 1.12.0, which supports these amendments.
- AMM (https://xrpl.org/known-amendments.html#amm)
- Note: the
amm_infoAPI method is not yet supported and will be introduced in a later release
- Note: the
- Clawback (https://xrpl.org/known-amendments.html#clawback)
- XRPFees (https://xrpl.org/known-amendments.html#xrpfees)
If these amendments are enabled and you have not upgraded Clio to 2.0.0 or newer, the ETL will be amendment blocked and new ledgers will not be processed.
The current voting status of these amendments in mainnet is available here: https://xrpscan.com/amendments
Database Migration
If you are currently running Clio on a previous version and upgrading to 2.0.0, you must perform a database migration to properly support NFT data. Instructions for the migration are described https://github.com/XRPLF/clio/tree/clio_migrator%402.0.0
What's Changed
- Implement logging abstraction by @godexsoft in #371
- Fix pre-commit to only check files changed by clang-format by @godexsoft in #398
- Fix account ownership check by @godexsoft in #383
- include searched_all in error response of tx by @cjcobb23 in #407
- helper function for subscribe to ensure cleanup by @cjcobb23 in #402
- Add closed to header for all paths by @godexsoft in #416
- Add custom error for malformed owner and request by @godexsoft in #417
- Use custom malformedAddress error in ledger_entry by @godexsoft in #419
- Return lgrIdxsInvalid error for ledger_max_index less than ledger_min_index by @officialfrancismendoza in #339
- Update headers to use #pragma once by @godexsoft in #422
- Add custom error for malformed request by @godexsoft in #414
- Return srcCurMalformed on invalid taker_pays in book_offers by @godexsoft in #413
- Add workaround for source_location for AppleClang by @godexsoft in #431
- Always add git ref to version string by @legleux in #430
- add connection counting by @cjcobb23 in #433
- Fix malformed output format over ws rpc by @godexsoft in #426
- Remove branch name from version string by @legleux in #437
- Implement cli parsing using boost::po by @godexsoft in #436
- Update documentation and config with ssl_cert_file and ssl_key_file by @officialfrancismendoza in #443
- Fix gateway balances to match rippled output by @godexsoft in #441
- Update documentation and config with start_sequence by @officialfrancismendoza in #438
- Add copyright to top of each source file by @godexsoft in #444
- Increase file descriptor limit by @legleux in #449
- Update readme with more log configurations by @godexsoft in #447
- Document dos_guard in example config. Log when client surpasses rate limit by @cjcobb23 in #451
- Unit-tests for slightly modified DOSGuard by @godexsoft in #453
- Build Clio on macOS and Ubuntu 22.04 by @legleux in #456
- Feature/profiler by @cindyyan317 in #458
- Add hotfix to old account_tx ledger index max out-of-bounds PR by @officialfrancismendoza in #461
- Fix LGR_IDXS_INVALID error code mismatch by @officialfrancismendoza in #463
- Feature/dosguard : add request limit by @cindyyan317 in #462
- Write Clio version file from template by @legleux in #457
- replace unique_lock with scoped_lock by @cindyyan317 in #467
- Demote confusing errors that are not really errors by @godexsoft in #471
- Add Unittests Coverage by @cindyyan317 in #472
- Fix bug with ClioVersion to prevent crash at runtime by @godexsoft in #473
- add code coverage job by @cindyyan317 in #477
- Update gitignore and readme by @cindyyan317 in #481
- Fix clio-server link issue by @cindyyan317 in #485
- Eliminate extraneous bypass in ETLSource.cpp by @officialfrancismendoza in #484
- Run test on mac by @cindyyan317 in #490
- Adjust DosGuard default cfg by @cindyyan317 in #496
- Implement basics of RPC subsystem by @godexsoft in #487
- Improve sweephandler test flakiness by @godexsoft in #499
- Add unittests for subscription by @cindyyan317 in #488
- Document RPC framework by @godexsoft in #501
- Fix backend test fail by @cindyyan317 in #502
- Rpc: support rpc call without parameter by @cindyyan317 in #503
- Update CONTRIBUTING.md by @intelliot in #504
- Fix mac build failure by @cindyyan317 in #509
- Exit 1 on failed experimental builds so build step fails by @legleux in #507
- Add common validator by @cindyyan317 in #510
- Add libfmt by @godexsoft in #514
- Change loglines severity and channel by @godexsoft in #517
- Fix marker issue by @cindyyan317 in #518
- Update CONTRIBUTING.md by @intelliot in #520
- Provide coroutine process interface for handler by @cindyyan317 in #521
- Account channel by @cindyyan317 in #519
- Handler account_currencies by @cindyyan317 in #524
- Tx handler in new RPC framework by @cindyyan317 in #526
- Fix ledger_entry API : can not get ticket entry by @cindyyan317 in #528
- Add IfType requirement to RPC framework by @cindyyan317 in #530
- Bug fix: ledger_entry responds incorrectly when the expected type mismatch the actual type by @cindyyan317 in #532
- Gateway balance fix by @cindyyan317 in #535
- Gateway balance by @cindyyan317 in #536
- Ledger entry in new RPC framework by @cindyyan317 in #534
- Custom error validator by @cindyyan317 in #540
- Make NFT URI lookup O(1) by @ledhed2222 in #313
- Implement book_offers in new RPC framework by @cindyyan317 in #542
- Implement ledger_range rpc handler by @godexsoft in #548
- Fix subscription forward issue by @cindyyan317 in #544
- Implement account_lines with new RPC framework by @godexsoft in #551
- Transaction entry with new RPC framework by @cindyyan317 in #553
- Fix spawn by @cindyyan317 in #556
- Add codecov.io steps by @godexsoft in #546
- Implement nextgen nft_info handler by @godexsoft in #558
- noripple_check implementation of new RPC system by @cindyyan317 in #554
- Use JSS string by @cindyyan317 in #563
- account_tx of new RPC framework by @cindyyan317 in #562
- Implement nft_buy_offers and tests by @godexsoft in #568
- account_offer in new RPC framework by @cindyyan317 in #567
- Cassandra backend revamp by @godexsoft in #537
- Implement nextgen nft_sell_offers handler by @godexsoft in #571
- account_info implementation in new RPC framework by @cindyyan317 in #573
- Fix compile error on clang14.0.3 by @cindyyan317 in #577
- Implement nextgen random handler and tests by @godexsoft in #576
- Create ngContext by @cindyyan317 in #579
- Implement nft_history nextgen handler by @godexsoft in #581
- Reformat codebase with 120 char limit by @godexsoft in #583
- Implement better error handling and datastax unauthorized workaround by @godexsoft in #586
- add default ordering to issuer_nf_tokens_v2 by @ledhed2222 in #588
- Implement nextgen server_info handler by @godexsoft in #590
- Subscribe handler by @cindyyan317 in #591
- Unsubscribe by @cindyyan317 in #595
- Ledgerdata by @cindyyan317 in #596
- Account_nfts by @cindyyan317 in #598
- account_objects of new RPC framework by @cindyyan317 in #599
- book_changes in the new RPC framework by @cindyyan317 in #614
- Ledger by @cindyyan317 in #604
- Fix experimental backend crash by @godexsoft in #620
- Fix gmock warning of uninterested function by @cindyyan317 in #622
- self host mac by @cindyyan317 in #619
- Add experimental code integrating nextgen by @godexsoft in #572
- Fix bugs by @cindyyan317 in #625
- Add handlers comments by @cindyyan317 in #627
- Improve performance of Counters by @godexsoft in #629
- Various small fixes by @godexsoft in #631
- Fix mismatches by @cindyyan317 in #630
- fix nft uri by @ledhed2222 in #634
- Fix nft_history error to match rippled by @godexsoft in #635
- Rename functions to camelCase by @godexsoft in #636
- add nft_page by @cindyyan317 in #637
- Address cppcheck issues by @godexsoft in #640
- Fix mismatch error when owner is in wrong format by @cindyyan317 in #641
- Add the missing input check for "diff" field of "ledger" by @cindyyan317 in #643
- Raise error when marker's index not in marker's page by @cindyyan317 in #647
- Update the default limit by @cindyyan317 in #646
- Overflow response change by @cindyyan317 in #655
- invalid hot wallet error by @cindyyan317 in #656
- Remove old backend and its tests by @godexsoft in #662
- Refactor ETL into smaller, testable components by @godexsoft in #649
- Fix an internal error by @cindyyan317 in #669
- Implement extractor tests by @godexsoft in #671
- Fix accounts_proposed subscription receives twice message by @cindyyan317 in #672
- Web server refactor by @cindyyan317 in #667
- Move the json check to RPC executor by @cindyyan317 in #676
- Subscribe ReportingNotSupported error by @cindyyan317 in #682
- Feature/count real errors by @godexsoft in #683
- Fix mismatch : subscribe book offers when both is true by @cindyyan317 in #684
- Fix marker issue by @cindyyan317 in #687
- Implement basic transformer tests by @godexsoft in #689
- Fix clang crash by @cindyyan317 in #690
- Read only for backend by @cindyyan317 in #691
- account_tx bug fix by @cindyyan317 in #694
- Support
api_versionby @godexsoft in #695 - Fix account_tx marker issue by @cindyyan317 in #699
- Remove sensitive info from log by @cindyyan317 in #701
- Stop etl when crash by @cindyyan317 in #708
- Forward api_version 1 requests to rippled by @godexsoft in #716
- Fix max limit for account tx by @cindyyan317 in #723
- ledger_entry Unknown Option by @cindyyan317 in #710
- Implement custom http errors by @godexsoft in #720
- Implement deposit_authorized RPC and tests by @godexsoft in #728
- Implement 'type' for 'ledger_data' by @cindyyan317 in #705
- Add strict field support by @godexsoft in #731
- Remove date from "account_tx" when "binary" is true by @cindyyan317 in #732
- Add deletion_blockers_only support by @godexsoft in #737
- Use "invalidParam" when "book_offers" taker format is wrong by @cindyyan317 in #734
- Fix 3 discrepancies in ledger_entry by @godexsoft in #739
- Change an error code in account_lines to match rippled by @godexsoft in #742
- account_flags by @cindyyan317 in #745
- account_tx rpcLGR_IDXS_INVALID adapt to v2 by @cindyyan317 in #749
- version2's account_info by @cindyyan317 in #747
- account_object supports nft page by @cindyyan317 in #736
- Implement a Clamp modifier/validator by @godexsoft in #740
- Use clamp modifier on limit field instead of between validator by @godexsoft in #752
- Ledger owner fund by @cindyyan317 in #753
- Remove "strict" by @cindyyan317 in #755
- Missing "tx_hash" for transaction_entry by @cindyyan317 in #758
- Forward not supported fields by @cindyyan317 in #757
- Add "network_id" to server_info by @cindyyan317 in #761
- Implement configuration options for useful cassandra driver opts by @godexsoft in #765
- Change limit tests by @cindyyan317 in #766
- Rename WsSession to WsBase by @cindyyan317 in #770
- Unsupported Error when request server stream by @cindyyan317 in #772
- Add time/uptime/amendment_blocked to server_info by @godexsoft in #775
- Use
mismatchingetNFTokenMintDataby @shawnxie999 in #774 - Fix missing "validated" by @cindyyan317 in #778
- Feature/conan build by @godexsoft in #712
- Enable CI MACOS node by @cindyyan317 in #783
- Remove try catch by @cindyyan317 in #781
- Nftids by @cindyyan317 in #780
- Fix for failed tests due to conan migration / XRPFees Amendment by @arihantkothari in #786
- Disable xrpl tests by @cindyyan317 in #785
- added new RPC Handler "version" by @PeterChen13579 in #782
- Fix a few tsan issues by @godexsoft in #788
- Fix link to clio branch of rippled by @thejohnfreeman in #789
- Fix connect_timeout request_timeout not work + tsan in RPCServerTestSuite by @cindyyan317 in #790
- Fix backend factory test and remove cout from base tests by @godexsoft in #792
- Fix linux/gcc compilation and many TSAN fixes by @godexsoft in #795
- Update build instruction for artifactory by @shawnxie999 in #802
- Return error when limit<=0 by @cindyyan317 in #804
- Add cache test by @cindyyan317 in #807
- Expose advanced options from cassandra-cpp-driver thru the config by @godexsoft in #808
- Account_info add flags by @cindyyan317 in #812
- Remove deprecated fields of ledger API by @cindyyan317 in #814
- Build on linux by @legleux in #813
- Update readme and compiler requirements by @godexsoft in #815
- Support whitelisting for IPV4/IPV6 with CIDR by @PeterChen13579 in #796
- Move connection state logic to an earlier point by @godexsoft in #816
- populate/change namespace + refactor by @PeterChen13579 in #817
- refactor codebase2 by @PeterChen13579 in #820
- Code Coverage Report Generation by @arihantkothari in #821
- Update doxygen comments by @godexsoft in #818
- Add LOG macro to prevent unnecessary evaluations by @godexsoft in #823
- Implement sanitizer support via CMake by @godexsoft in #822
- Fix for empty log lines by @godexsoft in #825
- Link libstd++ and gcc lib statically by @legleux in #830
- change boost::json to json in unittests by @PeterChen13579 in #831
- Add log to better debug DB workload by @cindyyan317 in #838
- Add working dir to git command executions by @godexsoft in #828
- Fix missing lock by @kuznetsss in #837
- Better clangd support by @kuznetsss in #836
- Change malformed taker error to match rippled by @godexsoft in #827
- Implement amendment block handler and test by @godexsoft in #829
- Add libxrpl version to server_info output by @godexsoft in #854
- Remove deprecated cassandra options by @godexsoft in #852
- AccountTx filtering by transaction type by @godexsoft in #851
- Add workaround for async_compose by @godexsoft in #841
- Fix coverage by @cindyyan317 in #868
- Duplicate signer_lists in account_info by @cindyyan317 in #870
- Ledger_entry return invalid parameter error for v1 by @cindyyan317 in #873
- Account tx v1 api support by @kuznetsss in #874
- CI improvements by @kuznetsss in #867
- Api v1 bool support by @kuznetsss in #877
- Fix CI by @kuznetsss in #878
- Don't use clio for conan cache hash by @kuznetsss in #879
- Add compiler flags by @kuznetsss in #850
New Contributors
- @intelliot made their first contribution in #504
- @arihantkothari made their first contribution in #786
- @PeterChen13579 made their first contribution in #782
- @thejohnfreeman made their first contribution in #789
Testing Credits
- Thanks to @mounikakun and others for testing this release.
Full Changelog: 1.0.4...2.0.0