-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'develop' into feature
- Loading branch information
Showing
43 changed files
with
3,018 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,6 +6,151 @@ This document contains the release notes for `rippled`, the reference server imp | |
|
||
Have new ideas? Need help with setting up your node? [Please open an issue here](https://github.com/xrplf/rippled/issues/new/choose). | ||
|
||
# Introducing XRP Ledger version 2.1.0 | ||
|
||
Version 2.1.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release adds a bug fix, build improvements, and introduces the `fixNFTokenReserve` and `fixInnerObjTemplate` amendments. | ||
|
||
[Sign Up for Future Release Announcements](https://groups.google.com/g/ripple-server) | ||
|
||
<!-- BREAK --> | ||
|
||
|
||
## Action Required | ||
|
||
Two new amendments are now open for voting according to the XRP Ledger's [amendment process](https://xrpl.org/amendments.html), which enables protocol changes following two weeks of >80% support from trusted validators. | ||
|
||
If you operate an XRP Ledger server, upgrade to version 2.1.0 by March 5, 2024 to ensure service continuity. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network. | ||
|
||
## Changelog | ||
|
||
### Amendments | ||
(These are changes which may impact or be useful to end users. For example, you may be able to update your code/workflow to take advantage of these changes.) | ||
|
||
- **fixNFTokenReserve**: Adds a check to the `NFTokenAcceptOffer` transactor to see if the `OwnerCount` changed. If it did, it checks that the reserve requirement is met. [#4767](https://github.com/XRPLF/rippled/pull/4767) | ||
|
||
- **fixInnerObjTemplate**: Adds an `STObject` constructor overload that includes an additional boolean argument to set the inner object template; currently, the inner object template isn't set upon object creation. In some circumstances, this causes a `tefEXCEPTION` error when trying to access the AMM `sfTradingFee` and `sfDiscountedFee` fields in the inner objects of `sfVoteEntry` and `sfAuctionSlot`. [#4906](https://github.com/XRPLF/rippled/pull/4906) | ||
|
||
|
||
### Bug Fixes and Performance Improvements | ||
(These are behind-the-scenes improvements, such as internal changes to the code, which are not expected to impact end users.) | ||
|
||
- Fixed a bug that prevented the gRPC port info from being specified in the `rippled` config file. [#4728](https://github.com/XRPLF/rippled/pull/4728) | ||
|
||
|
||
### Docs and Build System | ||
|
||
- Added unit tests to check that payees and payers aren't the same account. [#4860](https://github.com/XRPLF/rippled/pull/4860) | ||
|
||
- Removed a workaround that bypassed Windows CI unit test failures. [#4871](https://github.com/XRPLF/rippled/pull/4871) | ||
|
||
- Updated library names to be platform-agnostic in Conan recipes. [#4831](https://github.com/XRPLF/rippled/pull/4831) | ||
|
||
- Added headers required in the Conan package to build xbridge witness servers. [#4885](https://github.com/XRPLF/rippled/pull/4885) | ||
|
||
- Improved object lifetime management when creating a temporary `Rules` object, fixing a crash in Windows unit tests. [#4917](https://github.com/XRPLF/rippled/pull/4917) | ||
|
||
### GitHub | ||
|
||
The public source code repository for `rippled` is hosted on GitHub at <https://github.com/XRPLF/rippled>. | ||
|
||
We welcome all contributions and invite everyone to join the community of XRP Ledger developers to help build the Internet of Value. | ||
|
||
|
||
## Credits | ||
|
||
The following people contributed directly to this release: | ||
|
||
- Bronek Kozicki <[email protected]> | ||
- CJ Cobb <[email protected]> | ||
- Chenna Keshava B S <[email protected]> | ||
- Ed Hennis <[email protected]> | ||
- Elliot Lee <[email protected]> | ||
- Gregory Tsipenyuk <[email protected]> | ||
- John Freeman <[email protected]> | ||
- Michael Legleux <[email protected]> | ||
- Ryan Molley | ||
- Shawn Xie <[email protected]> | ||
|
||
|
||
Bug Bounties and Responsible Disclosures: | ||
|
||
We welcome reviews of the `rippled` code and urge researchers to responsibly disclose any issues they may find. | ||
|
||
To report a bug, please send a detailed report to: <[email protected]> | ||
|
||
# Introducing XRP Ledger version 2.0.1 | ||
|
||
Version 2.0.1 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release includes minor fixes, unit test improvements, and doc updates. | ||
|
||
[Sign Up for Future Release Announcements](https://groups.google.com/g/ripple-server) | ||
|
||
<!-- BREAK --> | ||
|
||
|
||
## Action Required | ||
|
||
If you operate an XRP Ledger server, upgrade to version 2.0.1 to take advantage of the changes included in this update. Nodes on version 1.12 should upgrade as soon as possible. | ||
|
||
|
||
## Changelog | ||
|
||
|
||
### Changes | ||
(These are changes which may impact or be useful to end users. For example, you may be able to update your code/workflow to take advantage of these changes.) | ||
|
||
- Updated the `send_queue_limit` to 500 in the default `rippled` config to handle increased transaction loads. [#4867](https://github.com/XRPLF/rippled/pull/4867) | ||
|
||
|
||
### Bug Fixes and Performance Improvements | ||
(These are behind-the-scenes improvements, such as internal changes to the code, which are not expected to impact end users.) | ||
|
||
- Fixed an assertion that occurred when `rippled` was under heavy websocket client load. [#4848](https://github.com/XRPLF/rippled/pull/4848) | ||
|
||
- Improved lifetime management of serialized type ledger entries to improve memory usage. [#4822](https://github.com/XRPLF/rippled/pull/4822) | ||
|
||
- Fixed a clang warning about deprecated sprintf usage. [#4747](https://github.com/XRPLF/rippled/pull/4747) | ||
|
||
|
||
### Docs and Build System | ||
|
||
- Added `DeliverMax` to more JSONRPC tests. [#4826](https://github.com/XRPLF/rippled/pull/4826) | ||
|
||
- Updated the pull request template to include a `Type of Change` checkbox and additional contextual questions. [#4875](https://github.com/XRPLF/rippled/pull/4875) | ||
|
||
- Updated help messages for unit tests pattern matching. [#4846](https://github.com/XRPLF/rippled/pull/4846) | ||
|
||
- Improved the time it take to generate coverage reports. [#4849](https://github.com/XRPLF/rippled/pull/4849) | ||
|
||
- Fixed broken links in the Conan build docs. [#4699](https://github.com/XRPLF/rippled/pull/4699) | ||
|
||
- Spurious codecov uploads are now retried if there's an error uploading them the first time. [#4896](https://github.com/XRPLF/rippled/pull/4896) | ||
|
||
|
||
### GitHub | ||
|
||
The public source code repository for `rippled` is hosted on GitHub at <https://github.com/XRPLF/rippled>. | ||
|
||
We welcome all contributions and invite everyone to join the community of XRP Ledger developers to help build the Internet of Value. | ||
|
||
|
||
## Credits | ||
|
||
The following people contributed directly to this release: | ||
|
||
- Bronek Kozicki <[email protected]> | ||
- Chenna Keshava B S <[email protected]> | ||
- Ed Hennis <[email protected]> | ||
- Elliot Lee <[email protected]> | ||
- Lathan Britz <[email protected]> | ||
- Mark Travis <[email protected]> | ||
- nixer89 <[email protected]> | ||
|
||
Bug Bounties and Responsible Disclosures: | ||
|
||
We welcome reviews of the `rippled` code and urge researchers to responsibly disclose any issues they may find. | ||
|
||
To report a bug, please send a detailed report to: <[email protected]> | ||
|
||
# Introducing XRP Ledger version 2.0.0 | ||
|
||
Version 2.0.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release adds new features and bug fixes, and introduces these amendments: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
//------------------------------------------------------------------------------ | ||
/* | ||
This file is part of rippled: https://github.com/ripple/rippled | ||
Copyright (c) 2023 Ripple Labs Inc. | ||
Permission to use, copy, modify, and/or distribute this software for any | ||
purpose with or without fee is hereby granted, provided that the above | ||
copyright notice and this permission notice appear in all copies. | ||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
*/ | ||
//============================================================================== | ||
|
||
#include <ripple/app/tx/impl/DeleteOracle.h> | ||
#include <ripple/ledger/Sandbox.h> | ||
#include <ripple/ledger/View.h> | ||
#include <ripple/protocol/Feature.h> | ||
#include <ripple/protocol/Rules.h> | ||
#include <ripple/protocol/TxFlags.h> | ||
|
||
namespace ripple { | ||
|
||
NotTEC | ||
DeleteOracle::preflight(PreflightContext const& ctx) | ||
{ | ||
if (!ctx.rules.enabled(featurePriceOracle)) | ||
return temDISABLED; | ||
|
||
if (auto const ret = preflight1(ctx); !isTesSuccess(ret)) | ||
return ret; | ||
|
||
if (ctx.tx.getFlags() & tfUniversalMask) | ||
{ | ||
JLOG(ctx.j.debug()) << "Oracle Delete: invalid flags."; | ||
return temINVALID_FLAG; | ||
} | ||
|
||
return preflight2(ctx); | ||
} | ||
|
||
TER | ||
DeleteOracle::preclaim(PreclaimContext const& ctx) | ||
{ | ||
if (!ctx.view.exists(keylet::account(ctx.tx.getAccountID(sfAccount)))) | ||
return terNO_ACCOUNT; | ||
|
||
if (auto const sle = ctx.view.read(keylet::oracle( | ||
ctx.tx.getAccountID(sfAccount), ctx.tx[sfOracleDocumentID])); | ||
!sle) | ||
{ | ||
JLOG(ctx.j.debug()) << "Oracle Delete: Oracle does not exist."; | ||
return tecNO_ENTRY; | ||
} | ||
else if (ctx.tx.getAccountID(sfAccount) != sle->getAccountID(sfOwner)) | ||
{ | ||
// this can't happen because of the above check | ||
JLOG(ctx.j.debug()) << "Oracle Delete: invalid account."; | ||
return tecINTERNAL; | ||
} | ||
return tesSUCCESS; | ||
} | ||
|
||
TER | ||
DeleteOracle::deleteOracle( | ||
ApplyView& view, | ||
std::shared_ptr<SLE> const& sle, | ||
AccountID const& account, | ||
beast::Journal j) | ||
{ | ||
if (!sle) | ||
return tesSUCCESS; | ||
|
||
if (!view.dirRemove( | ||
keylet::ownerDir(account), (*sle)[sfOwnerNode], sle->key(), true)) | ||
{ | ||
JLOG(j.fatal()) << "Unable to delete Oracle from owner."; | ||
return tefBAD_LEDGER; | ||
} | ||
|
||
auto const sleOwner = view.peek(keylet::account(account)); | ||
if (!sleOwner) | ||
return tecINTERNAL; | ||
|
||
auto const count = | ||
sle->getFieldArray(sfPriceDataSeries).size() > 5 ? -2 : -1; | ||
|
||
adjustOwnerCount(view, sleOwner, count, j); | ||
|
||
view.erase(sle); | ||
|
||
return tesSUCCESS; | ||
} | ||
|
||
TER | ||
DeleteOracle::doApply() | ||
{ | ||
if (auto sle = ctx_.view().peek( | ||
keylet::oracle(account_, ctx_.tx[sfOracleDocumentID]))) | ||
return deleteOracle(ctx_.view(), sle, account_, j_); | ||
|
||
return tecINTERNAL; | ||
} | ||
|
||
} // namespace ripple |
Oops, something went wrong.