Files
rippled/include/xrpl/protocol
Pratik Mankawde 875911f156 Merge branch 'develop' into pratik/Retire_fixUniversalNumber_amendment
# Conflicts:
#	include/xrpl/basics/CountedObject.h
#	include/xrpl/basics/Expected.h
#	include/xrpl/basics/IntrusivePointer.ipp
#	include/xrpl/basics/IntrusiveRefCounts.h
#	include/xrpl/basics/Log.h
#	include/xrpl/basics/Number.h
#	include/xrpl/basics/SlabAllocator.h
#	include/xrpl/basics/TaggedCache.h
#	include/xrpl/basics/TaggedCache.ipp
#	include/xrpl/basics/UptimeClock.h
#	include/xrpl/basics/base_uint.h
#	include/xrpl/basics/chrono.h
#	include/xrpl/basics/hardened_hash.h
#	include/xrpl/basics/partitioned_unordered_map.h
#	include/xrpl/basics/tagged_integer.h
#	include/xrpl/beast/clock/abstract_clock.h
#	include/xrpl/beast/clock/basic_seconds_clock.h
#	include/xrpl/beast/container/aged_unordered_map.h
#	include/xrpl/beast/container/detail/aged_container_iterator.h
#	include/xrpl/beast/container/detail/aged_unordered_container.h
#	include/xrpl/beast/core/List.h
#	include/xrpl/beast/core/LockFreeStack.h
#	include/xrpl/beast/hash/hash_append.h
#	include/xrpl/beast/insight/Counter.h
#	include/xrpl/beast/insight/Event.h
#	include/xrpl/beast/insight/Gauge.h
#	include/xrpl/beast/insight/Hook.h
#	include/xrpl/beast/insight/Meter.h
#	include/xrpl/beast/net/IPEndpoint.h
#	include/xrpl/beast/unit_test/detail/const_container.h
#	include/xrpl/beast/unit_test/global_suites.h
#	include/xrpl/beast/unit_test/match.h
#	include/xrpl/beast/unit_test/recorder.h
#	include/xrpl/beast/unit_test/reporter.h
#	include/xrpl/beast/unit_test/results.h
#	include/xrpl/beast/unit_test/suite.h
#	include/xrpl/beast/unit_test/suite_info.h
#	include/xrpl/beast/utility/Journal.h
#	include/xrpl/beast/utility/PropertyStream.h
#	include/xrpl/core/ClosureCounter.h
#	include/xrpl/core/Coro.ipp
#	include/xrpl/core/Job.h
#	include/xrpl/core/JobQueue.h
#	include/xrpl/core/JobTypeData.h
#	include/xrpl/core/JobTypeInfo.h
#	include/xrpl/core/JobTypes.h
#	include/xrpl/core/LoadMonitor.h
#	include/xrpl/core/detail/Workers.h
#	include/xrpl/core/detail/semaphore.h
#	include/xrpl/json/json_value.h
#	include/xrpl/json/json_writer.h
#	include/xrpl/ledger/Ledger.h
#	include/xrpl/ledger/helpers/TokenHelpers.h
#	include/xrpl/nodestore/NodeObject.h
#	include/xrpl/protocol/AmountConversions.h
#	include/xrpl/protocol/ApiVersion.h
#	include/xrpl/protocol/Book.h
#	include/xrpl/protocol/ErrorCodes.h
#	include/xrpl/protocol/Feature.h
#	include/xrpl/protocol/Indexes.h
#	include/xrpl/protocol/Quality.h
#	include/xrpl/protocol/SField.h
#	include/xrpl/protocol/STAmount.h
#	include/xrpl/protocol/STArray.h
#	include/xrpl/protocol/STBase.h
#	include/xrpl/protocol/STLedgerEntry.h
#	include/xrpl/protocol/STObject.h
#	include/xrpl/protocol/STPathSet.h
#	include/xrpl/protocol/STTx.h
#	include/xrpl/protocol/STValidation.h
#	include/xrpl/protocol/STVector256.h
#	include/xrpl/protocol/Serializer.h
#	include/xrpl/protocol/XRPAmount.h
#	include/xrpl/protocol/detail/features.macro
#	include/xrpl/protocol/json_get_or_throw.h
#	include/xrpl/resource/Charge.h
#	include/xrpl/resource/Consumer.h
#	include/xrpl/server/InfoSub.h
#	include/xrpl/shamap/FullBelowCache.h
#	include/xrpl/shamap/SHAMapAddNode.h
#	src/libxrpl/protocol/AMMCore.cpp
#	src/libxrpl/protocol/IOUAmount.cpp
#	src/libxrpl/protocol/STAmount.cpp
#	src/libxrpl/tx/Transactor.cpp
#	src/libxrpl/tx/applySteps.cpp
#	src/test/app/AMM_test.cpp
#	src/test/app/NFToken_test.cpp
#	src/test/app/OfferMPT_test.cpp
#	src/test/app/Offer_test.cpp
#	src/test/jtx/AMM.h
#	src/test/jtx/AMMTest.h
#	src/test/jtx/Env.h
#	src/test/jtx/Env_ss.h
#	src/test/jtx/JTx.h
#	src/test/jtx/PathSet.h
#	src/test/jtx/TestHelpers.h
#	src/test/jtx/amount.h
#	src/test/jtx/balance.h
#	src/test/jtx/batch.h
#	src/test/jtx/credentials.h
#	src/test/jtx/deposit.h
#	src/test/jtx/escrow.h
#	src/test/jtx/jtx_json.h
#	src/test/jtx/mpt.h
#	src/test/jtx/multisign.h
#	src/test/jtx/paths.h
#	src/test/jtx/prop.h
#	src/test/jtx/regkey.h
#	src/test/jtx/tags.h
#	src/xrpld/app/misc/TxQ.h
#	src/xrpld/app/misc/detail/TxQ.cpp
#	src/xrpld/rpc/detail/AssetCache.h
#	src/xrpld/rpc/detail/Pathfinder.h
#	src/xrpld/rpc/detail/TrustLine.h
2026-05-05 13:49:14 +01:00
..

protocol

Classes and functions for handling data and values associated with the XRP Ledger protocol.

Serialized Objects

Objects transmitted over the network must be serialized into a canonical format. The prefix "ST" refers to classes that deal with the serialized format.

The term "Tx" or "tx" is an abbreviation for "Transaction", a commonly occurring object type.

Optional Fields

Our serialized fields have some "type magic" to make optional fields easier to read:

  • The operation x[sfFoo] means "return the value of 'Foo' if it exists, or the default value if it doesn't."
  • The operation x[~sfFoo] means "return the value of 'Foo' if it exists, or nothing if it doesn't." This usage of the tilde/bitwise NOT operator is not standard outside of the xrpld codebase.
    • As a consequence of this, x[~sfFoo] = y[~sfFoo] assigns the value of Foo from y to x, including omitting Foo from x if it doesn't exist in y.

Typically, for things that are guaranteed to exist, you use x[sfFoo] and avoid having to deal with a container that may or may not hold a value. For things not guaranteed to exist, you use x[~sfFoo] because you want such a container. It avoids having to look something up twice, once just to see if it exists and a second time to get/set its value. (Real example)

The source of this "type magic" is in SField.h.