rippled
SField.cpp
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #include <ripple/protocol/SField.h>
21 #include <cassert>
22 #include <string>
23 #include <string_view>
24 #include <utility>
25 
26 namespace ripple {
27 
28 // Storage for static const members.
30 int SField::num = 0;
32 
33 // Give only this translation unit permission to construct SFields
35 {
36  explicit private_access_tag_t() = default;
37 };
38 
40 
41 // Construct all compile-time SFields, and register them in the knownCodeToField
42 // database:
43 
44 // Use macros for most SField construction to enforce naming conventions.
45 #pragma push_macro("CONSTRUCT_UNTYPED_SFIELD")
46 #undef CONSTRUCT_UNTYPED_SFIELD
47 
48 // It would be possible to design the macros so that sfName and txtName would
49 // be constructed from a single macro parameter. We chose not to take that
50 // path because then you cannot grep for the exact SField name and find
51 // where it is constructed. These macros allow that grep to succeed.
52 #define CONSTRUCT_UNTYPED_SFIELD(sfName, txtName, stiSuffix, fieldValue, ...) \
53  SField const sfName( \
54  access, STI_##stiSuffix, fieldValue, txtName, ##__VA_ARGS__); \
55  static_assert( \
56  std::string_view(#sfName) == "sf" txtName, \
57  "Declaration of SField does not match its text name")
58 
59 #pragma push_macro("CONSTRUCT_TYPED_SFIELD")
60 #undef CONSTRUCT_TYPED_SFIELD
61 
62 #define CONSTRUCT_TYPED_SFIELD(sfName, txtName, stiSuffix, fieldValue, ...) \
63  SF_##stiSuffix const sfName( \
64  access, STI_##stiSuffix, fieldValue, txtName, ##__VA_ARGS__); \
65  static_assert( \
66  std::string_view(#sfName) == "sf" txtName, \
67  "Declaration of SField does not match its text name")
68 
69 // clang-format off
70 
71 // SFields which, for historical reasons, do not follow naming conventions.
72 SField const sfInvalid(access, -1);
73 SField const sfGeneric(access, 0);
74 SField const sfHash(access, STI_HASH256, 257, "hash");
75 SField const sfIndex(access, STI_HASH256, 258, "index");
76 
77 // Untyped SFields
78 CONSTRUCT_UNTYPED_SFIELD(sfLedgerEntry, "LedgerEntry", LEDGERENTRY, 257);
79 CONSTRUCT_UNTYPED_SFIELD(sfTransaction, "Transaction", TRANSACTION, 257);
80 CONSTRUCT_UNTYPED_SFIELD(sfValidation, "Validation", VALIDATION, 257);
81 CONSTRUCT_UNTYPED_SFIELD(sfMetadata, "Metadata", METADATA, 257);
82 
83 // 8-bit integers
84 CONSTRUCT_TYPED_SFIELD(sfCloseResolution, "CloseResolution", UINT8, 1);
85 CONSTRUCT_TYPED_SFIELD(sfMethod, "Method", UINT8, 2);
86 CONSTRUCT_TYPED_SFIELD(sfTransactionResult, "TransactionResult", UINT8, 3);
87 
88 // 8-bit integers (uncommon)
89 CONSTRUCT_TYPED_SFIELD(sfTickSize, "TickSize", UINT8, 16);
90 CONSTRUCT_TYPED_SFIELD(sfUNLModifyDisabling, "UNLModifyDisabling", UINT8, 17);
91 
92 // 16-bit integers
93 CONSTRUCT_TYPED_SFIELD(sfLedgerEntryType, "LedgerEntryType", UINT16, 1, SField::sMD_Never);
94 CONSTRUCT_TYPED_SFIELD(sfTransactionType, "TransactionType", UINT16, 2);
95 CONSTRUCT_TYPED_SFIELD(sfSignerWeight, "SignerWeight", UINT16, 3);
96 
97 // 16-bit integers (uncommon)
98 CONSTRUCT_TYPED_SFIELD(sfVersion, "Version", UINT16, 16);
99 
100 // 32-bit integers (common)
101 CONSTRUCT_TYPED_SFIELD(sfFlags, "Flags", UINT32, 2);
102 CONSTRUCT_TYPED_SFIELD(sfSourceTag, "SourceTag", UINT32, 3);
103 CONSTRUCT_TYPED_SFIELD(sfSequence, "Sequence", UINT32, 4);
104 CONSTRUCT_TYPED_SFIELD(sfPreviousTxnLgrSeq, "PreviousTxnLgrSeq", UINT32, 5, SField::sMD_DeleteFinal);
105 CONSTRUCT_TYPED_SFIELD(sfLedgerSequence, "LedgerSequence", UINT32, 6);
106 CONSTRUCT_TYPED_SFIELD(sfCloseTime, "CloseTime", UINT32, 7);
107 CONSTRUCT_TYPED_SFIELD(sfParentCloseTime, "ParentCloseTime", UINT32, 8);
108 CONSTRUCT_TYPED_SFIELD(sfSigningTime, "SigningTime", UINT32, 9);
109 CONSTRUCT_TYPED_SFIELD(sfExpiration, "Expiration", UINT32, 10);
110 CONSTRUCT_TYPED_SFIELD(sfTransferRate, "TransferRate", UINT32, 11);
111 CONSTRUCT_TYPED_SFIELD(sfWalletSize, "WalletSize", UINT32, 12);
112 CONSTRUCT_TYPED_SFIELD(sfOwnerCount, "OwnerCount", UINT32, 13);
113 CONSTRUCT_TYPED_SFIELD(sfDestinationTag, "DestinationTag", UINT32, 14);
114 
115 // 32-bit integers (uncommon)
116 CONSTRUCT_TYPED_SFIELD(sfHighQualityIn, "HighQualityIn", UINT32, 16);
117 CONSTRUCT_TYPED_SFIELD(sfHighQualityOut, "HighQualityOut", UINT32, 17);
118 CONSTRUCT_TYPED_SFIELD(sfLowQualityIn, "LowQualityIn", UINT32, 18);
119 CONSTRUCT_TYPED_SFIELD(sfLowQualityOut, "LowQualityOut", UINT32, 19);
120 CONSTRUCT_TYPED_SFIELD(sfQualityIn, "QualityIn", UINT32, 20);
121 CONSTRUCT_TYPED_SFIELD(sfQualityOut, "QualityOut", UINT32, 21);
122 CONSTRUCT_TYPED_SFIELD(sfStampEscrow, "StampEscrow", UINT32, 22);
123 CONSTRUCT_TYPED_SFIELD(sfBondAmount, "BondAmount", UINT32, 23);
124 CONSTRUCT_TYPED_SFIELD(sfLoadFee, "LoadFee", UINT32, 24);
125 CONSTRUCT_TYPED_SFIELD(sfOfferSequence, "OfferSequence", UINT32, 25);
126 CONSTRUCT_TYPED_SFIELD(sfFirstLedgerSequence, "FirstLedgerSequence", UINT32, 26);
127 CONSTRUCT_TYPED_SFIELD(sfLastLedgerSequence, "LastLedgerSequence", UINT32, 27);
128 CONSTRUCT_TYPED_SFIELD(sfTransactionIndex, "TransactionIndex", UINT32, 28);
129 CONSTRUCT_TYPED_SFIELD(sfOperationLimit, "OperationLimit", UINT32, 29);
130 CONSTRUCT_TYPED_SFIELD(sfReferenceFeeUnits, "ReferenceFeeUnits", UINT32, 30);
131 CONSTRUCT_TYPED_SFIELD(sfReserveBase, "ReserveBase", UINT32, 31);
132 CONSTRUCT_TYPED_SFIELD(sfReserveIncrement, "ReserveIncrement", UINT32, 32);
133 CONSTRUCT_TYPED_SFIELD(sfSetFlag, "SetFlag", UINT32, 33);
134 CONSTRUCT_TYPED_SFIELD(sfClearFlag, "ClearFlag", UINT32, 34);
135 CONSTRUCT_TYPED_SFIELD(sfSignerQuorum, "SignerQuorum", UINT32, 35);
136 CONSTRUCT_TYPED_SFIELD(sfCancelAfter, "CancelAfter", UINT32, 36);
137 CONSTRUCT_TYPED_SFIELD(sfFinishAfter, "FinishAfter", UINT32, 37);
138 CONSTRUCT_TYPED_SFIELD(sfSignerListID, "SignerListID", UINT32, 38);
139 CONSTRUCT_TYPED_SFIELD(sfSettleDelay, "SettleDelay", UINT32, 39);
140 CONSTRUCT_TYPED_SFIELD(sfTicketCount, "TicketCount", UINT32, 40);
141 CONSTRUCT_TYPED_SFIELD(sfTicketSequence, "TicketSequence", UINT32, 41);
142 
143 // 64-bit integers
144 CONSTRUCT_TYPED_SFIELD(sfIndexNext, "IndexNext", UINT64, 1);
145 CONSTRUCT_TYPED_SFIELD(sfIndexPrevious, "IndexPrevious", UINT64, 2);
146 CONSTRUCT_TYPED_SFIELD(sfBookNode, "BookNode", UINT64, 3);
147 CONSTRUCT_TYPED_SFIELD(sfOwnerNode, "OwnerNode", UINT64, 4);
148 CONSTRUCT_TYPED_SFIELD(sfBaseFee, "BaseFee", UINT64, 5);
149 CONSTRUCT_TYPED_SFIELD(sfExchangeRate, "ExchangeRate", UINT64, 6);
150 CONSTRUCT_TYPED_SFIELD(sfLowNode, "LowNode", UINT64, 7);
151 CONSTRUCT_TYPED_SFIELD(sfHighNode, "HighNode", UINT64, 8);
152 CONSTRUCT_TYPED_SFIELD(sfDestinationNode, "DestinationNode", UINT64, 9);
153 CONSTRUCT_TYPED_SFIELD(sfCookie, "Cookie", UINT64, 10);
154 CONSTRUCT_TYPED_SFIELD(sfServerVersion, "ServerVersion", UINT64, 11);
155 
156 // 128-bit
157 CONSTRUCT_TYPED_SFIELD(sfEmailHash, "EmailHash", HASH128, 1);
158 
159 // 160-bit (common)
160 CONSTRUCT_TYPED_SFIELD(sfTakerPaysCurrency, "TakerPaysCurrency", HASH160, 1);
161 CONSTRUCT_TYPED_SFIELD(sfTakerPaysIssuer, "TakerPaysIssuer", HASH160, 2);
162 CONSTRUCT_TYPED_SFIELD(sfTakerGetsCurrency, "TakerGetsCurrency", HASH160, 3);
163 CONSTRUCT_TYPED_SFIELD(sfTakerGetsIssuer, "TakerGetsIssuer", HASH160, 4);
164 
165 // 256-bit (common)
166 CONSTRUCT_TYPED_SFIELD(sfLedgerHash, "LedgerHash", HASH256, 1);
167 CONSTRUCT_TYPED_SFIELD(sfParentHash, "ParentHash", HASH256, 2);
168 CONSTRUCT_TYPED_SFIELD(sfTransactionHash, "TransactionHash", HASH256, 3);
169 CONSTRUCT_TYPED_SFIELD(sfAccountHash, "AccountHash", HASH256, 4);
170 CONSTRUCT_TYPED_SFIELD(sfPreviousTxnID, "PreviousTxnID", HASH256, 5, SField::sMD_DeleteFinal);
171 CONSTRUCT_TYPED_SFIELD(sfLedgerIndex, "LedgerIndex", HASH256, 6);
172 CONSTRUCT_TYPED_SFIELD(sfWalletLocator, "WalletLocator", HASH256, 7);
173 CONSTRUCT_TYPED_SFIELD(sfRootIndex, "RootIndex", HASH256, 8, SField::sMD_Always);
174 CONSTRUCT_TYPED_SFIELD(sfAccountTxnID, "AccountTxnID", HASH256, 9);
175 
176 // 256-bit (uncommon)
177 CONSTRUCT_TYPED_SFIELD(sfBookDirectory, "BookDirectory", HASH256, 16);
178 CONSTRUCT_TYPED_SFIELD(sfInvoiceID, "InvoiceID", HASH256, 17);
179 CONSTRUCT_TYPED_SFIELD(sfNickname, "Nickname", HASH256, 18);
180 CONSTRUCT_TYPED_SFIELD(sfAmendment, "Amendment", HASH256, 19);
181 // 20 is currently unused
182 CONSTRUCT_TYPED_SFIELD(sfDigest, "Digest", HASH256, 21);
183 CONSTRUCT_TYPED_SFIELD(sfChannel, "Channel", HASH256, 22);
184 CONSTRUCT_TYPED_SFIELD(sfConsensusHash, "ConsensusHash", HASH256, 23);
185 CONSTRUCT_TYPED_SFIELD(sfCheckID, "CheckID", HASH256, 24);
186 CONSTRUCT_TYPED_SFIELD(sfValidatedHash, "ValidatedHash", HASH256, 25);
187 
188 // currency amount (common)
189 CONSTRUCT_TYPED_SFIELD(sfAmount, "Amount", AMOUNT, 1);
190 CONSTRUCT_TYPED_SFIELD(sfBalance, "Balance", AMOUNT, 2);
191 CONSTRUCT_TYPED_SFIELD(sfLimitAmount, "LimitAmount", AMOUNT, 3);
192 CONSTRUCT_TYPED_SFIELD(sfTakerPays, "TakerPays", AMOUNT, 4);
193 CONSTRUCT_TYPED_SFIELD(sfTakerGets, "TakerGets", AMOUNT, 5);
194 CONSTRUCT_TYPED_SFIELD(sfLowLimit, "LowLimit", AMOUNT, 6);
195 CONSTRUCT_TYPED_SFIELD(sfHighLimit, "HighLimit", AMOUNT, 7);
196 CONSTRUCT_TYPED_SFIELD(sfFee, "Fee", AMOUNT, 8);
197 CONSTRUCT_TYPED_SFIELD(sfSendMax, "SendMax", AMOUNT, 9);
198 CONSTRUCT_TYPED_SFIELD(sfDeliverMin, "DeliverMin", AMOUNT, 10);
199 
200 // currency amount (uncommon)
201 CONSTRUCT_TYPED_SFIELD(sfMinimumOffer, "MinimumOffer", AMOUNT, 16);
202 CONSTRUCT_TYPED_SFIELD(sfRippleEscrow, "RippleEscrow", AMOUNT, 17);
203 CONSTRUCT_TYPED_SFIELD(sfDeliveredAmount, "DeliveredAmount", AMOUNT, 18);
204 
205 // variable length (common)
206 CONSTRUCT_TYPED_SFIELD(sfPublicKey, "PublicKey", VL, 1);
207 CONSTRUCT_TYPED_SFIELD(sfMessageKey, "MessageKey", VL, 2);
208 CONSTRUCT_TYPED_SFIELD(sfSigningPubKey, "SigningPubKey", VL, 3);
210 // Was 5 used and then obsoleted?
212 CONSTRUCT_TYPED_SFIELD(sfDomain, "Domain", VL, 7);
213 CONSTRUCT_TYPED_SFIELD(sfFundCode, "FundCode", VL, 8);
214 CONSTRUCT_TYPED_SFIELD(sfRemoveCode, "RemoveCode", VL, 9);
215 CONSTRUCT_TYPED_SFIELD(sfExpireCode, "ExpireCode", VL, 10);
216 CONSTRUCT_TYPED_SFIELD(sfCreateCode, "CreateCode", VL, 11);
217 CONSTRUCT_TYPED_SFIELD(sfMemoType, "MemoType", VL, 12);
218 CONSTRUCT_TYPED_SFIELD(sfMemoData, "MemoData", VL, 13);
219 CONSTRUCT_TYPED_SFIELD(sfMemoFormat, "MemoFormat", VL, 14);
220 
221 // variable length (uncommon)
222 CONSTRUCT_TYPED_SFIELD(sfFulfillment, "Fulfillment", VL, 16);
223 CONSTRUCT_TYPED_SFIELD(sfCondition, "Condition", VL, 17);
225 CONSTRUCT_TYPED_SFIELD(sfUNLModifyValidator, "UNLModifyValidator", VL, 19);
226 CONSTRUCT_TYPED_SFIELD(sfValidatorToDisable, "ValidatorToDisable", VL, 20);
227 CONSTRUCT_TYPED_SFIELD(sfValidatorToReEnable, "ValidatorToReEnable", VL, 21);
228 
229 // account
230 CONSTRUCT_TYPED_SFIELD(sfAccount, "Account", ACCOUNT, 1);
231 CONSTRUCT_TYPED_SFIELD(sfOwner, "Owner", ACCOUNT, 2);
232 CONSTRUCT_TYPED_SFIELD(sfDestination, "Destination", ACCOUNT, 3);
233 CONSTRUCT_TYPED_SFIELD(sfIssuer, "Issuer", ACCOUNT, 4);
234 CONSTRUCT_TYPED_SFIELD(sfAuthorize, "Authorize", ACCOUNT, 5);
235 CONSTRUCT_TYPED_SFIELD(sfUnauthorize, "Unauthorize", ACCOUNT, 6);
236 // 7 is currently unused
237 CONSTRUCT_TYPED_SFIELD(sfRegularKey, "RegularKey", ACCOUNT, 8);
238 
239 // vector of 256-bit
240 CONSTRUCT_TYPED_SFIELD(sfIndexes, "Indexes", VECTOR256, 1, SField::sMD_Never);
241 CONSTRUCT_TYPED_SFIELD(sfHashes, "Hashes", VECTOR256, 2);
242 CONSTRUCT_TYPED_SFIELD(sfAmendments, "Amendments", VECTOR256, 3);
243 
244 // path set
245 CONSTRUCT_UNTYPED_SFIELD(sfPaths, "Paths", PATHSET, 1);
246 
247 // inner object
248 // OBJECT/1 is reserved for end of object
249 CONSTRUCT_UNTYPED_SFIELD(sfTransactionMetaData, "TransactionMetaData", OBJECT, 2);
250 CONSTRUCT_UNTYPED_SFIELD(sfCreatedNode, "CreatedNode", OBJECT, 3);
251 CONSTRUCT_UNTYPED_SFIELD(sfDeletedNode, "DeletedNode", OBJECT, 4);
252 CONSTRUCT_UNTYPED_SFIELD(sfModifiedNode, "ModifiedNode", OBJECT, 5);
253 CONSTRUCT_UNTYPED_SFIELD(sfPreviousFields, "PreviousFields", OBJECT, 6);
254 CONSTRUCT_UNTYPED_SFIELD(sfFinalFields, "FinalFields", OBJECT, 7);
255 CONSTRUCT_UNTYPED_SFIELD(sfNewFields, "NewFields", OBJECT, 8);
256 CONSTRUCT_UNTYPED_SFIELD(sfTemplateEntry, "TemplateEntry", OBJECT, 9);
257 CONSTRUCT_UNTYPED_SFIELD(sfMemo, "Memo", OBJECT, 10);
258 CONSTRUCT_UNTYPED_SFIELD(sfSignerEntry, "SignerEntry", OBJECT, 11);
259 
260 // inner object (uncommon)
261 CONSTRUCT_UNTYPED_SFIELD(sfSigner, "Signer", OBJECT, 16);
262 // 17 has not been used yet
263 CONSTRUCT_UNTYPED_SFIELD(sfMajority, "Majority", OBJECT, 18);
264 CONSTRUCT_UNTYPED_SFIELD(sfDisabledValidator, "DisabledValidator", OBJECT, 19);
265 
266 // array of objects
267 // ARRAY/1 is reserved for end of array
268 // 2 has never been used
270 CONSTRUCT_UNTYPED_SFIELD(sfSignerEntries, "SignerEntries", ARRAY, 4);
271 CONSTRUCT_UNTYPED_SFIELD(sfTemplate, "Template", ARRAY, 5);
272 CONSTRUCT_UNTYPED_SFIELD(sfNecessary, "Necessary", ARRAY, 6);
273 CONSTRUCT_UNTYPED_SFIELD(sfSufficient, "Sufficient", ARRAY, 7);
274 CONSTRUCT_UNTYPED_SFIELD(sfAffectedNodes, "AffectedNodes", ARRAY, 8);
275 CONSTRUCT_UNTYPED_SFIELD(sfMemos, "Memos", ARRAY, 9);
276 
277 // array of objects (uncommon)
278 CONSTRUCT_UNTYPED_SFIELD(sfMajorities, "Majorities", ARRAY, 16);
279 CONSTRUCT_UNTYPED_SFIELD(sfDisabledValidators, "DisabledValidators", ARRAY, 17);
280 
281 // clang-format on
282 
283 #undef CONSTRUCT_TYPED_SFIELD
284 #undef CONSTRUCT_UNTYPED_SFIELD
285 
286 #pragma pop_macro("CONSTRUCT_TYPED_SFIELD")
287 #pragma pop_macro("CONSTRUCT_UNTYPED_SFIELD")
288 
291  SerializedTypeID tid,
292  int fv,
293  const char* fn,
294  int meta,
295  IsSigning signing)
296  : fieldCode(field_code(tid, fv))
297  , fieldType(tid)
298  , fieldValue(fv)
299  , fieldName(fn)
300  , fieldMeta(meta)
301  , fieldNum(++num)
302  , signingField(signing)
303  , jsonName(fieldName.c_str())
304 {
305  knownCodeToField[fieldCode] = this;
306 }
307 
309  : fieldCode(fc)
310  , fieldType(STI_UNKNOWN)
311  , fieldValue(0)
312  , fieldMeta(sMD_Never)
313  , fieldNum(++num)
314  , signingField(IsSigning::yes)
315  , jsonName(fieldName.c_str())
316 {
317  knownCodeToField[fieldCode] = this;
318 }
319 
320 SField const&
322 {
323  auto it = knownCodeToField.find(code);
324 
325  if (it != knownCodeToField.end())
326  {
327  return *(it->second);
328  }
329  return sfInvalid;
330 }
331 
332 int
333 SField::compare(SField const& f1, SField const& f2)
334 {
335  // -1 = f1 comes before f2, 0 = illegal combination, 1 = f1 comes after f2
336  if ((f1.fieldCode <= 0) || (f2.fieldCode <= 0))
337  return 0;
338 
339  if (f1.fieldCode < f2.fieldCode)
340  return -1;
341 
342  if (f2.fieldCode < f1.fieldCode)
343  return 1;
344 
345  return 0;
346 }
347 
348 SField const&
349 SField::getField(std::string const& fieldName)
350 {
351  for (auto const& [_, f] : knownCodeToField)
352  {
353  (void)_;
354  if (f->fieldName == fieldName)
355  return *f;
356  }
357  return sfInvalid;
358 }
359 
360 } // namespace ripple
ripple::sfIndexNext
const SF_UINT64 sfIndexNext
ripple::sfSignerListID
const SF_UINT32 sfSignerListID
ripple::sfHighQualityIn
const SF_UINT32 sfHighQualityIn
ripple::sfOfferSequence
const SF_UINT32 sfOfferSequence
ripple::sfPreviousTxnLgrSeq
const SF_UINT32 sfPreviousTxnLgrSeq
ripple::sfOwnerCount
const SF_UINT32 sfOwnerCount
ripple::sfPreviousTxnID
const SF_HASH256 sfPreviousTxnID
ripple::sfDigest
const SF_HASH256 sfDigest
ripple::sfSignerWeight
const SF_UINT16 sfSignerWeight
ripple::sfPaths
const SField sfPaths
ripple::sfUNLModifyValidator
const SF_VL sfUNLModifyValidator
ripple::sfSourceTag
const SF_UINT32 sfSourceTag
ripple::sfReserveBase
const SF_UINT32 sfReserveBase
ripple::sfCreateCode
const SF_VL sfCreateCode
ripple::SField::IsSigning
IsSigning
Definition: SField.h:123
ripple::sfMetadata
const SField sfMetadata
ripple::sfSendMax
const SF_AMOUNT sfSendMax
std::string
STL class.
ripple::sfSigners
const SField sfSigners
utility
ripple::sfOwnerNode
const SF_UINT64 sfOwnerNode
ripple::SField::sMD_Never
@ sMD_Never
Definition: SField.h:113
ripple::sfMinimumOffer
const SF_AMOUNT sfMinimumOffer
ripple::sfGeneric
const SField sfGeneric(access, 0)
Definition: SField.h:332
ripple::sfLedgerSequence
const SF_UINT32 sfLedgerSequence
ripple::sfDestination
const SF_ACCOUNT sfDestination
ripple::sfTransactionMetaData
const SField sfTransactionMetaData
ripple::sfAmount
const SF_AMOUNT sfAmount
ripple::sfWalletSize
const SF_UINT32 sfWalletSize
ripple::sfFirstLedgerSequence
const SF_UINT32 sfFirstLedgerSequence
ripple::sfTakerGetsCurrency
const SF_HASH160 sfTakerGetsCurrency
ripple::sfQualityOut
const SF_UINT32 sfQualityOut
ripple::sfBookDirectory
const SF_HASH256 sfBookDirectory
ripple::sfOwner
const SF_ACCOUNT sfOwner
ripple::sfSequence
const SF_UINT32 sfSequence
ripple::sfRegularKey
const SF_ACCOUNT sfRegularKey
ripple::SField::private_access_tag_t
Definition: SField.cpp:34
ripple::sfWalletLocator
const SF_HASH256 sfWalletLocator
ripple::field_code
int field_code(SerializedTypeID id, int index)
Definition: SField.h:87
ripple::SField::fieldName
const std::string fieldName
Definition: SField.h:129
ripple::sfSigningPubKey
const SF_VL sfSigningPubKey
ripple::SerializedTypeID
SerializedTypeID
Definition: SField.h:52
ripple::sfQualityIn
const SF_UINT32 sfQualityIn
ripple::sfSetFlag
const SF_UINT32 sfSetFlag
ripple::sfFinalFields
const SField sfFinalFields
ripple::sfEmailHash
const SF_HASH128 sfEmailHash
ripple::sfCloseTime
const SF_UINT32 sfCloseTime
ripple::sfTicketSequence
const SF_UINT32 sfTicketSequence
ripple::sfParentCloseTime
const SF_UINT32 sfParentCloseTime
ripple::SField::getField
static const SField & getField(int fieldCode)
Definition: SField.cpp:321
ripple::sfAmendment
const SF_HASH256 sfAmendment
ripple::SField::knownCodeToField
static std::map< int, SField const * > knownCodeToField
Definition: SField.h:276
ripple::sfTransactionHash
const SF_HASH256 sfTransactionHash
ripple::sfDeletedNode
const SField sfDeletedNode
ripple::sfInvalid
const SField sfInvalid(access, -1)
Definition: SField.h:331
ripple::sfTakerGetsIssuer
const SF_HASH160 sfTakerGetsIssuer
ripple::SField::sMD_Default
@ sMD_Default
Definition: SField.h:119
ripple::sfValidatedHash
const SF_HASH256 sfValidatedHash
ripple::sfLedgerEntry
const SField sfLedgerEntry
ripple::sfExpiration
const SF_UINT32 sfExpiration
ripple::sfSignerQuorum
const SF_UINT32 sfSignerQuorum
ripple::sfIndexes
const SF_VECTOR256 sfIndexes
ripple::sfLedgerHash
const SF_HASH256 sfLedgerHash
ripple::sfVersion
const SF_UINT16 sfVersion
ripple::sfExpireCode
const SF_VL sfExpireCode
ripple::sfLowNode
const SF_UINT64 sfLowNode
ripple::sfTakerPays
const SF_AMOUNT sfTakerPays
ripple::SField::SField
SField(SField const &)=delete
ripple::sfTransactionType
const SF_UINT16 sfTransactionType
ripple::sfDeliverMin
const SF_AMOUNT sfDeliverMin
ripple::sfLowQualityOut
const SF_UINT32 sfLowQualityOut
ripple::sfLimitAmount
const SF_AMOUNT sfLimitAmount
ripple::sfLowLimit
const SF_AMOUNT sfLowLimit
ripple::sfDeliveredAmount
const SF_AMOUNT sfDeliveredAmount
ripple::SField::private_access_tag_t::private_access_tag_t
private_access_tag_t()=default
ripple::sfSettleDelay
const SF_UINT32 sfSettleDelay
ripple::sfUnauthorize
const SF_ACCOUNT sfUnauthorize
ripple::sfMemos
const SField sfMemos
ripple::sfServerVersion
const SF_UINT64 sfServerVersion
ripple::sfBondAmount
const SF_UINT32 sfBondAmount
ripple::sfLoadFee
const SF_UINT32 sfLoadFee
ripple::DefaultVote::yes
@ yes
ripple::sfTakerPaysIssuer
const SF_HASH160 sfTakerPaysIssuer
ripple::sfNewFields
const SField sfNewFields
ripple::sfReserveIncrement
const SF_UINT32 sfReserveIncrement
ripple::sfMasterSignature
const SF_VL sfMasterSignature
ripple::sfIndexPrevious
const SF_UINT64 sfIndexPrevious
ripple::sfAffectedNodes
const SField sfAffectedNodes
ripple::sfTemplate
const SField sfTemplate
ripple::sfBookNode
const SF_UINT64 sfBookNode
ripple::sfFundCode
const SF_VL sfFundCode
ripple::SField::notSigning
static const IsSigning notSigning
Definition: SField.h:124
ripple::sfCookie
const SF_UINT64 sfCookie
ripple::sfLowQualityIn
const SF_UINT32 sfLowQualityIn
ripple::STI_UNKNOWN
@ STI_UNKNOWN
Definition: SField.h:54
ripple::sfValidatorToDisable
const SF_VL sfValidatorToDisable
ripple::sfTicketCount
const SF_UINT32 sfTicketCount
ripple::sfRippleEscrow
const SF_AMOUNT sfRippleEscrow
ripple::sfModifiedNode
const SField sfModifiedNode
ripple::STI_HASH256
@ STI_HASH256
Definition: SField.h:63
ripple::sfDestinationNode
const SF_UINT64 sfDestinationNode
ripple::sfTakerGets
const SF_AMOUNT sfTakerGets
ripple::sfMajority
const SField sfMajority
ripple::sfLedgerIndex
const SF_HASH256 sfLedgerIndex
ripple::sfRemoveCode
const SF_VL sfRemoveCode
ripple::sfTransferRate
const SF_UINT32 sfTransferRate
ripple::sfTickSize
const SF_UINT8 sfTickSize
ripple::SField::fieldCode
const int fieldCode
Definition: SField.h:126
ripple::sfAuthorize
const SF_ACCOUNT sfAuthorize
ripple::sfHighLimit
const SF_AMOUNT sfHighLimit
ripple::sfExchangeRate
const SF_UINT64 sfExchangeRate
ripple::sfStampEscrow
const SF_UINT32 sfStampEscrow
std::map
STL class.
ripple::CONSTRUCT_UNTYPED_SFIELD
CONSTRUCT_UNTYPED_SFIELD(sfLedgerEntry, "LedgerEntry", LEDGERENTRY, 257)
ripple::sfHash
const SField sfHash(access, STI_HASH256, 257, "hash")
ripple::sfSigner
const SField sfSigner
ripple::sfClearFlag
const SF_UINT32 sfClearFlag
ripple::sfSignerEntry
const SField sfSignerEntry
ripple::sfAccountHash
const SF_HASH256 sfAccountHash
ripple::sfTakerPaysCurrency
const SF_HASH160 sfTakerPaysCurrency
ripple::sfChannel
const SF_HASH256 sfChannel
ripple::sfCheckID
const SF_HASH256 sfCheckID
ripple::sfUNLModifyDisabling
const SF_UINT8 sfUNLModifyDisabling
ripple::sfPreviousFields
const SField sfPreviousFields
ripple::sfTransactionIndex
const SF_UINT32 sfTransactionIndex
ripple::sfIndex
const SField sfIndex(access, STI_HASH256, 258, "index")
ripple::sfSignerEntries
const SField sfSignerEntries
ripple::sfOperationLimit
const SF_UINT32 sfOperationLimit
ripple::sfBaseFee
const SF_UINT64 sfBaseFee
ripple::CONSTRUCT_TYPED_SFIELD
CONSTRUCT_TYPED_SFIELD(sfCloseResolution, "CloseResolution", UINT8, 1)
ripple::sfHashes
const SF_VECTOR256 sfHashes
ripple::sfMemoData
const SF_VL sfMemoData
ripple::sfTxnSignature
const SF_VL sfTxnSignature
ripple::access
static SField::private_access_tag_t access
Definition: SField.cpp:39
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::SField::sMD_Always
@ sMD_Always
Definition: SField.h:118
ripple::sfCloseResolution
const SF_UINT8 sfCloseResolution
ripple::sfTransactionResult
const SF_UINT8 sfTransactionResult
ripple::sfTemplateEntry
const SField sfTemplateEntry
ripple::sfLedgerEntryType
const SF_UINT16 sfLedgerEntryType
ripple::sfConsensusHash
const SF_HASH256 sfConsensusHash
ripple::SField
Identifies fields.
Definition: SField.h:109
ripple::sfAccountTxnID
const SF_HASH256 sfAccountTxnID
ripple::sfCondition
const SF_VL sfCondition
ripple::SField::num
static int num
Definition: SField.h:275
ripple::sfIssuer
const SF_ACCOUNT sfIssuer
ripple::SField::sMD_DeleteFinal
@ sMD_DeleteFinal
Definition: SField.h:116
ripple::sfFlags
const SF_UINT32 sfFlags
ripple::sfInvoiceID
const SF_HASH256 sfInvoiceID
cassert
ripple::sfDisabledValidator
const SField sfDisabledValidator
ripple::sfDestinationTag
const SF_UINT32 sfDestinationTag
ripple::sfCreatedNode
const SField sfCreatedNode
ripple::sfRootIndex
const SF_HASH256 sfRootIndex
ripple::sfSignature
const SF_VL sfSignature
ripple::sfBalance
const SF_AMOUNT sfBalance
ripple::SField::compare
static int compare(const SField &f1, const SField &f2)
Definition: SField.cpp:333
ripple::sfReferenceFeeUnits
const SF_UINT32 sfReferenceFeeUnits
ripple::sfCancelAfter
const SF_UINT32 sfCancelAfter
ripple::sfMessageKey
const SF_VL sfMessageKey
ripple::sfHighQualityOut
const SF_UINT32 sfHighQualityOut
ripple::sfValidation
const SField sfValidation
ripple::sfFinishAfter
const SF_UINT32 sfFinishAfter
ripple::sfFee
const SF_AMOUNT sfFee
ripple::sfMemo
const SField sfMemo
ripple::sfAccount
const SF_ACCOUNT sfAccount
ripple::sfSufficient
const SField sfSufficient
ripple::sfDomain
const SF_VL sfDomain
ripple::sfLastLedgerSequence
const SF_UINT32 sfLastLedgerSequence
ripple::sfNickname
const SF_HASH256 sfNickname
ripple::sfParentHash
const SF_HASH256 sfParentHash
ripple::sfMajorities
const SField sfMajorities
ripple::sfSigningTime
const SF_UINT32 sfSigningTime
ripple::sfDisabledValidators
const SField sfDisabledValidators
ripple::sfFulfillment
const SF_VL sfFulfillment
string_view
ripple::sfPublicKey
const SF_VL sfPublicKey
ripple::sfNecessary
const SField sfNecessary
ripple::sfHighNode
const SF_UINT64 sfHighNode
ripple::sfTransaction
const SField sfTransaction
ripple::sfAmendments
const SF_VECTOR256 sfAmendments
ripple::sfMethod
const SF_UINT8 sfMethod
ripple::sfMemoFormat
const SF_VL sfMemoFormat
ripple::sfValidatorToReEnable
const SF_VL sfValidatorToReEnable
ripple::sfMemoType
const SF_VL sfMemoType
string