From 2aae0b667cedc698f42fa0ae7f4dd57c8a28a1ab Mon Sep 17 00:00:00 2001 From: Richard Holland Date: Sun, 24 Sep 2023 09:49:09 +0000 Subject: [PATCH] remove XRP_LEDGER_EARLIEST_FEES, return defaultAmendmentTime to 5 days, other fixes --- src/ripple/app/ledger/Ledger.cpp | 4 +--- src/ripple/app/ledger/impl/BuildLedger.cpp | 4 +--- src/ripple/app/ledger/impl/InboundLedger.cpp | 12 +++--------- src/ripple/app/main/Application.cpp | 16 ++++------------ src/ripple/app/reporting/ReportingETL.cpp | 4 +--- src/ripple/app/tx/impl/SetTrust.cpp | 4 ++-- src/ripple/nodestore/impl/Shard.cpp | 4 +--- src/ripple/protocol/SystemParameters.h | 7 +------ src/ripple/protocol/impl/Feature.cpp | 20 ++++++++++---------- 9 files changed, 24 insertions(+), 51 deletions(-) diff --git a/src/ripple/app/ledger/Ledger.cpp b/src/ripple/app/ledger/Ledger.cpp index d96bf5939..f748a8b5d 100644 --- a/src/ripple/app/ledger/Ledger.cpp +++ b/src/ripple/app/ledger/Ledger.cpp @@ -1113,9 +1113,7 @@ finishLoadByIndexOrHash( if (!ledger) return; - assert( - ledger->info().seq < XRP_LEDGER_EARLIEST_FEES || - ledger->read(keylet::fees())); + assert(ledger->read(keylet::fees())); ledger->setImmutable(); JLOG(j.trace()) << "Loaded ledger: " << to_string(ledger->info().hash); diff --git a/src/ripple/app/ledger/impl/BuildLedger.cpp b/src/ripple/app/ledger/impl/BuildLedger.cpp index f90ae216e..fbdf9945f 100644 --- a/src/ripple/app/ledger/impl/BuildLedger.cpp +++ b/src/ripple/app/ledger/impl/BuildLedger.cpp @@ -75,9 +75,7 @@ buildLedgerImpl( built->unshare(); // Accept ledger - assert( - built->info().seq < XRP_LEDGER_EARLIEST_FEES || - built->read(keylet::fees())); + assert(built->read(keylet::fees())); built->setAccepted(closeTime, closeResolution, closeTimeCorrect); return built; diff --git a/src/ripple/app/ledger/impl/InboundLedger.cpp b/src/ripple/app/ledger/impl/InboundLedger.cpp index af3ba8a7a..ee200d273 100644 --- a/src/ripple/app/ledger/impl/InboundLedger.cpp +++ b/src/ripple/app/ledger/impl/InboundLedger.cpp @@ -155,9 +155,7 @@ InboundLedger::init(ScopedLockType& collectionLock) JLOG(journal_.debug()) << "Acquiring ledger we already have in " << " local store. " << hash_; - assert( - mLedger->info().seq < XRP_LEDGER_EARLIEST_FEES || - mLedger->read(keylet::fees())); + assert(mLedger->read(keylet::fees())); mLedger->setImmutable(); if (mReason == Reason::HISTORY || mReason == Reason::SHARD) @@ -419,9 +417,7 @@ InboundLedger::tryDB(NodeStore::Database& srcDB) { JLOG(journal_.debug()) << "Had everything locally"; complete_ = true; - assert( - mLedger->info().seq < XRP_LEDGER_EARLIEST_FEES || - mLedger->read(keylet::fees())); + assert(mLedger->read(keylet::fees())); mLedger->setImmutable(); } } @@ -519,9 +515,7 @@ InboundLedger::done() if (complete_ && !failed_ && mLedger) { - assert( - mLedger->info().seq < XRP_LEDGER_EARLIEST_FEES || - mLedger->read(keylet::fees())); + assert(mLedger->read(keylet::fees())); mLedger->setImmutable(); switch (mReason) { diff --git a/src/ripple/app/main/Application.cpp b/src/ripple/app/main/Application.cpp index c62df2228..7446c7d33 100644 --- a/src/ripple/app/main/Application.cpp +++ b/src/ripple/app/main/Application.cpp @@ -1721,9 +1721,7 @@ ApplicationImp::startGenesisLedger() auto const next = std::make_shared(*genesis, timeKeeper().closeTime()); next->updateSkipList(); - assert( - next->info().seq < XRP_LEDGER_EARLIEST_FEES || - next->read(keylet::fees())); + assert(next->read(keylet::fees())); next->setImmutable(); openLedger_.emplace(next, cachedSLEs_, logs_->journal("OpenLedger")); m_ledgerMaster->storeLedger(next); @@ -1742,9 +1740,7 @@ ApplicationImp::getLastFullLedger() if (!ledger) return ledger; - assert( - ledger->info().seq < XRP_LEDGER_EARLIEST_FEES || - ledger->read(keylet::fees())); + assert(ledger->read(keylet::fees())); ledger->setImmutable(); if (getLedgerMaster().haveLedger(seq)) @@ -1896,9 +1892,7 @@ ApplicationImp::loadLedgerFromFile(std::string const& name) loadLedger->stateMap().flushDirty(hotACCOUNT_NODE); - assert( - loadLedger->info().seq < XRP_LEDGER_EARLIEST_FEES || - loadLedger->read(keylet::fees())); + assert(loadLedger->read(keylet::fees())); loadLedger->setAccepted( closeTime, closeTimeResolution, !closeTimeEstimated); @@ -2026,9 +2020,7 @@ ApplicationImp::loadLedgerFromJson(std::string const& jsonValue) loadLedger->stateMap().flushDirty(hotACCOUNT_NODE); - assert( - loadLedger->info().seq < XRP_LEDGER_EARLIEST_FEES || - loadLedger->read(keylet::fees())); + assert(loadLedger->read(keylet::fees())); loadLedger->setAccepted( closeTime, closeTimeResolution, !closeTimeEstimated); diff --git a/src/ripple/app/reporting/ReportingETL.cpp b/src/ripple/app/reporting/ReportingETL.cpp index d8d6af368..e6887817e 100644 --- a/src/ripple/app/reporting/ReportingETL.cpp +++ b/src/ripple/app/reporting/ReportingETL.cpp @@ -189,9 +189,7 @@ ReportingETL::flushLedger(std::shared_ptr& ledger) auto& txHash = ledger->info().txHash; auto& ledgerHash = ledger->info().hash; - assert( - ledger->info().seq < XRP_LEDGER_EARLIEST_FEES || - ledger->read(keylet::fees())); + assert(ledger->read(keylet::fees())); ledger->setImmutable(false); auto start = std::chrono::system_clock::now(); diff --git a/src/ripple/app/tx/impl/SetTrust.cpp b/src/ripple/app/tx/impl/SetTrust.cpp index acbbedabf..dffca6499 100644 --- a/src/ripple/app/tx/impl/SetTrust.cpp +++ b/src/ripple/app/tx/impl/SetTrust.cpp @@ -137,8 +137,8 @@ SetTrust::preclaim(PreclaimContext const& ctx) if (!sleDst) return tecNO_DST; - auto const dstFlags = sleDst->getFlags(); - if (dstFlags & lsfDisallowIncomingTrustline) + if ((sleDst->getFlags() & lsfDisallowIncomingTrustline) && + !ctx.view.exists(keylet::line(id, uDstAccountID, currency))) return tecNO_PERMISSION; } diff --git a/src/ripple/nodestore/impl/Shard.cpp b/src/ripple/nodestore/impl/Shard.cpp index 14bfe4873..343656fc5 100644 --- a/src/ripple/nodestore/impl/Shard.cpp +++ b/src/ripple/nodestore/impl/Shard.cpp @@ -688,9 +688,7 @@ Shard::finalize(bool writeSQLite, std::optional const& referenceHash) ledger->stateMap().setLedgerSeq(ledgerSeq); ledger->txMap().setLedgerSeq(ledgerSeq); - assert( - ledger->info().seq < XRP_LEDGER_EARLIEST_FEES || - ledger->read(keylet::fees())); + assert(ledger->read(keylet::fees())); ledger->setImmutable(); if (!ledger->stateMap().fetchRoot( SHAMapHash{ledger->info().accountHash}, nullptr)) diff --git a/src/ripple/protocol/SystemParameters.h b/src/ripple/protocol/SystemParameters.h index f9547cbeb..a4322e1b8 100644 --- a/src/ripple/protocol/SystemParameters.h +++ b/src/ripple/protocol/SystemParameters.h @@ -68,10 +68,6 @@ systemCurrencyCode() /** The XRP ledger network's earliest allowed sequence */ static constexpr std::uint32_t XRP_LEDGER_EARLIEST_SEQ{1U}; -/** The XRP Ledger mainnet's earliest ledger with a FeeSettings object. Only - * used in asserts and tests. */ -static constexpr std::uint32_t XRP_LEDGER_EARLIEST_FEES{1u}; - /** The number of ledgers in a shard */ static constexpr std::uint32_t DEFAULT_LEDGERS_PER_SHARD{16384u}; @@ -85,8 +81,7 @@ constexpr std::ratio<204, 256> preFixAmendmentMajorityCalcThreshold; constexpr std::ratio<80, 100> postFixAmendmentMajorityCalcThreshold; /** The minimum amount of time an amendment must hold a majority */ -constexpr std::chrono::seconds const defaultAmendmentMajorityTime = std::chrono::seconds{16}; -//days{5}; +constexpr std::chrono::seconds const defaultAmendmentMajorityTime = std::chrono::days{5}; } // namespace ripple diff --git a/src/ripple/protocol/impl/Feature.cpp b/src/ripple/protocol/impl/Feature.cpp index 1fdfff1d9..13bddc0e9 100644 --- a/src/ripple/protocol/impl/Feature.cpp +++ b/src/ripple/protocol/impl/Feature.cpp @@ -411,6 +411,7 @@ name. // All known amendments must be registered either here or below with the // "retired" amendments REGISTER_FEATURE(OwnerPaysFee, Supported::no, VoteBehavior::DefaultNo); +REGISTER_FIX (fixTrustLinesToSelf, Supported::no, VoteBehavior::DefaultNo); REGISTER_FEATURE(Flow, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FEATURE(FlowCross, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FIX (fix1513, Supported::yes, VoteBehavior::DefaultYes); @@ -441,14 +442,13 @@ REGISTER_FEATURE(TicketBatch, Supported::yes, VoteBehavior::De REGISTER_FEATURE(FlowSortStrands, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FIX (fixSTAmountCanonicalize, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FIX (fixRmSmallIncreasedQOffers, Supported::yes, VoteBehavior::DefaultYes); -REGISTER_FEATURE(CheckCashMakesTrustLine, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FEATURE(ExpandedSignerList, Supported::yes, VoteBehavior::DefaultNo); +REGISTER_FEATURE(CheckCashMakesTrustLine, Supported::yes, VoteBehavior::DefaultYes); +REGISTER_FEATURE(ExpandedSignerList, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FEATURE(NonFungibleTokensV1_1, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FIX (fixTrustLinesToSelf, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FIX (fixRemoveNFTokenAutoTrustLine, Supported::yes, VoteBehavior::DefaultYes); -REGISTER_FEATURE(ImmediateOfferKilled, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FEATURE(DisallowIncoming, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FEATURE(XRPFees, Supported::yes, VoteBehavior::DefaultNo); +REGISTER_FIX (fixRemoveNFTokenAutoTrustLine, Supported::yes, VoteBehavior::DefaultNo); +REGISTER_FEATURE(ImmediateOfferKilled, Supported::yes, VoteBehavior::DefaultYes); +REGISTER_FEATURE(DisallowIncoming, Supported::yes, VoteBehavior::DefaultYes); +REGISTER_FEATURE(XRPFees, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FIX (fixUniversalNumber, Supported::yes, VoteBehavior::DefaultNo); REGISTER_FIX (fixNonFungibleTokensV1_2, Supported::yes, VoteBehavior::DefaultNo); REGISTER_FIX (fixNFTokenRemint, Supported::yes, VoteBehavior::DefaultNo); @@ -456,9 +456,9 @@ REGISTER_FEATURE(Hooks, Supported::yes, VoteBehavior::De REGISTER_FEATURE(BalanceRewards, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FEATURE(PaychanAndEscrowForTokens, Supported::yes, VoteBehavior::DefaultYes); REGISTER_FEATURE(URIToken, Supported::yes, VoteBehavior::DefaultYes); -REGISTER_FEATURE(Import, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FEATURE(XahauGenesis, Supported::yes, VoteBehavior::DefaultNo); -REGISTER_FEATURE(HooksUpdate1, Supported::yes, VoteBehavior::DefaultNo); +REGISTER_FEATURE(Import, Supported::yes, VoteBehavior::DefaultYes); +REGISTER_FEATURE(XahauGenesis, Supported::yes, VoteBehavior::DefaultYes); +REGISTER_FEATURE(HooksUpdate1, Supported::yes, VoteBehavior::DefaultYes); // The following amendments are obsolete, but must remain supported