You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
The engine reads fixAMMv1_1 (swapAssetIn, swapAssetOut), fixAMMv1_3 (an offer's checkInvariant) and fixReducedOffersV2 (limitIn) as the ledger has them inside every transaction, whatever useRulesGuards decides; they read as disabled only outside a transaction (#250)
DexSnapshot.FromNodeAsync reads the domain of every domain or hybrid offer it loads, and the credentials of the offer owners that domain accepts, also for an order or a payment without a DomainID
AmmOfferMath: an AMM pool's offer arithmetic (#253, Xrpl.Amounts): SwapIn (swapAssetIn), SwapOut (swapAssetOut), ChangeSpotPriceQuality and PoolOffer - the offer a pool puts beside an order book on one strand (AMMLiquidity::getOffer), as an AmmPoolOffer with its In, Out and Quality. The engine generates its pool offers through the same code
XrplQuality.Round(digits) (Quality::round) and OfferCreateCrossing.RoundToTickSize(takerPays, takerGets, tickSize, sell, rules), the amounts an offer is written with under a tick size (#253)
DexSnapshotOptions.Ledger reads a snapshot at a given ledger, and DexSnapshot.LedgerSequence records the ledger a snapshot was read at (#252). QuotePaymentAsync and QuoteOfferCreateAsync make every deeper read at the ledger of the first
DexSnapshotOptions.OwnerFundsFromBook builds offer owners from book_offers' owner_funds instead of reading their accounts and trust lines, listing them in DexSnapshot.ApproximatedOwners; DexSnapshot.UnlimitedTaker quotes an OfferCreate or a Payment for a taker without a wallet, with unlimited funds (#252)
How the engine took the liquidity (#251, Xrpl.Amounts): OfferCrossingResult and PaymentFlowResult gain Fills - each offer and pool slice taken, in order, as an OfferFill with its Pass, Strand, Step, OfferIndex or pool Owner, In, Out and Quality - and Passes, each strand tried in each pass as a FlowPass with its FlowPassOutcome (Taken, Dry - also for a strand with no liquidity at all - BelowLimitQuality, OutOfReach). OfferChange gains Reason (OfferRemovalReason: Consumed, Unfunded, Expired, Empty, DeepFrozen, NotInDomain, TooSmall, Unauthorized, SelfCrossed, Cancelled) and FilledTakerPays / FilledTakerGets
AmmOfferMath.MaxTradingFee (1000, 1%); AmmOfferMath and a snapshot's DexAmmPool.TradingFee / DiscountedFee refuse a higher fee with ArgumentException (#257)
LedgerRules.FromNodeAsync and Amounts-Guide (both languages) say that the rules come from the ledger's Amendments object, which amendments a node applies from its config's [features] stanza are not in (#256)
GetBalanceChanges and Amounts-Guide (both languages) describe the getText form of Currency.Value (#254); Amounts-Guide also covers AmmOfferMath, RoundToTickSize, DexSnapshotOptions.Ledger and OwnerFundsFromBook, UnlimitedTaker, the fills, the passes and the removal reasons
TestUDexGaps checks the removal reasons - expired, unfunded, consumed, unauthorized, cancelled, out of the domain, self-crossed - and the order of the fills, and TestUPaymentFlow a pass below the limit quality and two strands dropped as out of reach before any is run. The integration harness requires every offer's fills, replayed from its amounts in the snapshot, to leave what the metadata's final fields show, the fills to add up to FilledTakerPays / FilledTakerGets, and each pool's fills, replayed in order, to give its balance on the node
TestIBookCrossing.OwnerFundsFromTheBookCrossAsTheNodeDoes crosses an underfunded maker and a transfer fee from a snapshot built from owner_funds and compares it with the metadata; UnlimitedTakerQuotesAsAFundedOne compares the unlimited taker's offer and payment quotes with a funded account's
TestUAmmOfferMath replays Offer_test.cpp's testTickSize offers through RoundToTickSize and covers XrplQuality.Round and the pool offers; TestIBookCrossing.SnapshotReadsTheLedgerAsked reads a book before and after an offer is placed
TestUOfferCreateCrossing.CurrentRulesAreSetInsideEveryTransaction; TestUXrplAmount pins the getText boundaries and reads the scientific form through ValueAsNumber
The integration harness waits for a ledger closed after an expiration for up to five minutes of wall time