rippled
TxFormats.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/TxFormats.h>
21 #include <ripple/protocol/jss.h>
22 
23 namespace ripple {
24 
26 {
27  // Fields shared by all txFormats:
28  static const std::initializer_list<SOElement> commonFields{
34  {sfPreviousTxnID, soeOPTIONAL}, // emulate027
37  {sfFee, soeREQUIRED},
42  {sfSigners, soeOPTIONAL}, // submit_multisigned
43  };
44 
45  add(jss::AccountSet,
47  {
59  },
60  commonFields);
61 
62  add(jss::TrustSet,
64  {
69  },
70  commonFields);
71 
72  add(jss::OfferCreate,
74  {
80  },
81  commonFields);
82 
83  add(jss::OfferCancel,
85  {
88  },
89  commonFields);
90 
91  add(jss::SetRegularKey,
93  {
96  },
97  commonFields);
98 
99  add(jss::Payment,
100  ttPAYMENT,
101  {
105  {sfPaths, soeDEFAULT},
110  },
111  commonFields);
112 
113  add(jss::EscrowCreate,
115  {
123  },
124  commonFields);
125 
126  add(jss::EscrowFinish,
128  {
129  {sfOwner, soeREQUIRED},
134  },
135  commonFields);
136 
137  add(jss::EscrowCancel,
139  {
140  {sfOwner, soeREQUIRED},
143  },
144  commonFields);
145 
146  add(jss::EnableAmendment,
147  ttAMENDMENT,
148  {
151  },
152  commonFields);
153 
154  add(jss::SetFee,
155  ttFEE,
156  {
158  // Old version uses raw numbers
163  // New version uses Amounts
167  },
168  commonFields);
169 
170  add(jss::UNLModify,
171  ttUNL_MODIFY,
172  {
176  },
177  commonFields);
178 
179  add(jss::TicketCreate,
181  {
184  },
185  commonFields);
186 
187  // The SignerEntries are optional because a SignerList is deleted by
188  // setting the SignerQuorum to zero and omitting SignerEntries.
189  add(jss::SignerListSet,
191  {
195  },
196  commonFields);
197 
198  add(jss::PaymentChannelCreate,
200  {
208  },
209  commonFields);
210 
211  add(jss::PaymentChannelFund,
213  {
218  },
219  commonFields);
220 
221  add(jss::PaymentChannelClaim,
223  {
230  },
231  commonFields);
232 
233  add(jss::CheckCreate,
235  {
242  },
243  commonFields);
244 
245  add(jss::CheckCash,
246  ttCHECK_CASH,
247  {
252  },
253  commonFields);
254 
255  add(jss::CheckCancel,
257  {
260  },
261  commonFields);
262 
263  add(jss::AccountDelete,
265  {
269  },
270  commonFields);
271 
272  add(jss::DepositPreauth,
274  {
278  },
279  commonFields);
280 
281  add(jss::NFTokenMint,
283  {
287  {sfURI, soeOPTIONAL},
289  },
290  commonFields);
291 
292  add(jss::NFTokenBurn,
294  {
296  {sfOwner, soeOPTIONAL},
298  },
299  commonFields);
300 
301  add(jss::NFTokenCreateOffer,
303  {
307  {sfOwner, soeOPTIONAL},
310  },
311  commonFields);
312 
313  add(jss::NFTokenCancelOffer,
315  {
318  },
319  commonFields);
320 
321  add(jss::NFTokenAcceptOffer,
323  {
328  },
329  commonFields);
330 }
331 
332 TxFormats const&
334 {
335  static TxFormats const instance;
336  return instance;
337 }
338 
339 } // namespace ripple
ripple::ttNFTOKEN_CREATE_OFFER
@ ttNFTOKEN_CREATE_OFFER
This transaction creates a new offer to buy or sell an NFT.
Definition: TxFormats.h:134
ripple::sfOfferSequence
const SF_UINT32 sfOfferSequence
ripple::ttACCOUNT_DELETE
@ ttACCOUNT_DELETE
This transaction type deletes an existing account.
Definition: TxFormats.h:122
ripple::sfPaths
const SField sfPaths
ripple::sfUNLModifyValidator
const SF_VL sfUNLModifyValidator
ripple::sfSourceTag
const SF_UINT32 sfSourceTag
ripple::sfBaseFeeDrops
const SF_AMOUNT sfBaseFeeDrops
ripple::sfReserveBase
const SF_UINT32 sfReserveBase
ripple::sfSendMax
const SF_AMOUNT sfSendMax
ripple::sfSigners
const SField sfSigners
ripple::sfLedgerSequence
const SF_UINT32 sfLedgerSequence
ripple::sfNFTokenOffers
const SF_VECTOR256 sfNFTokenOffers
ripple::sfDestination
const SF_ACCOUNT sfDestination
ripple::ttREGULAR_KEY_SET
@ ttREGULAR_KEY_SET
This transaction type sets or clears an account's "regular key".
Definition: TxFormats.h:74
ripple::sfAmount
const SF_AMOUNT sfAmount
ripple::sfNFTokenID
const SF_UINT256 sfNFTokenID
ripple::sfWalletSize
const SF_UINT32 sfWalletSize
ripple::sfCheckID
const SF_UINT256 sfCheckID
ripple::ttSIGNER_LIST_SET
@ ttSIGNER_LIST_SET
This transaction type modifies the signer list associated with an account.
Definition: TxFormats.h:95
ripple::sfQualityOut
const SF_UINT32 sfQualityOut
ripple::sfOwner
const SF_ACCOUNT sfOwner
ripple::sfSequence
const SF_UINT32 sfSequence
ripple::sfRegularKey
const SF_ACCOUNT sfRegularKey
ripple::ttESCROW_CANCEL
@ ttESCROW_CANCEL
This transaction type cancels an existing escrow.
Definition: TxFormats.h:71
ripple::sfSigningPubKey
const SF_VL sfSigningPubKey
ripple::ttFEE
@ ttFEE
This system-generated transaction type is used to update the network's fee settings.
Definition: TxFormats.h:152
ripple::ttOFFER_CANCEL
@ ttOFFER_CANCEL
This transaction type cancels existing offers to trade one asset for another.
Definition: TxFormats.h:83
ripple::ttPAYCHAN_CREATE
@ ttPAYCHAN_CREATE
This transaction type creates a new unidirectional XRP payment channel.
Definition: TxFormats.h:98
ripple::sfQualityIn
const SF_UINT32 sfQualityIn
ripple::sfSetFlag
const SF_UINT32 sfSetFlag
ripple::soeREQUIRED
@ soeREQUIRED
Definition: SOTemplate.h:35
ripple::sfTicketSequence
const SF_UINT32 sfTicketSequence
ripple::ttNFTOKEN_ACCEPT_OFFER
@ ttNFTOKEN_ACCEPT_OFFER
This transaction accepts an existing offer to buy or sell an existing NFT.
Definition: TxFormats.h:140
ripple::ttAMENDMENT
@ ttAMENDMENT
This system-generated transaction type is used to update the status of the various amendments.
Definition: TxFormats.h:146
ripple::sfTransferFee
const SF_UINT16 sfTransferFee
ripple::ttCHECK_CANCEL
@ ttCHECK_CANCEL
This transaction type cancels an existing check.
Definition: TxFormats.h:113
ripple::sfExpiration
const SF_UINT32 sfExpiration
ripple::sfSignerQuorum
const SF_UINT32 sfSignerQuorum
ripple::ttPAYMENT
@ ttPAYMENT
This transaction type executes a payment.
Definition: TxFormats.h:59
ripple::sfTakerPays
const SF_AMOUNT sfTakerPays
ripple::sfTransactionType
const SF_UINT16 sfTransactionType
ripple::sfDeliverMin
const SF_AMOUNT sfDeliverMin
ripple::sfLimitAmount
const SF_AMOUNT sfLimitAmount
ripple::ttUNL_MODIFY
@ ttUNL_MODIFY
This system-generated transaction type is used to update the network's negative UNL.
Definition: TxFormats.h:158
ripple::sfSettleDelay
const SF_UINT32 sfSettleDelay
ripple::sfUnauthorize
const SF_ACCOUNT sfUnauthorize
ripple::sfMemos
const SField sfMemos
ripple::ttCHECK_CREATE
@ ttCHECK_CREATE
This transaction type creates a new check.
Definition: TxFormats.h:107
ripple::TxFormats::getInstance
static TxFormats const & getInstance()
Definition: TxFormats.cpp:333
ripple::sfNFTokenMinter
const SF_ACCOUNT sfNFTokenMinter
ripple::ttTRUST_SET
@ ttTRUST_SET
This transaction type modifies a trustline between two accounts.
Definition: TxFormats.h:119
ripple::sfReserveIncrement
const SF_UINT32 sfReserveIncrement
ripple::soeOPTIONAL
@ soeOPTIONAL
Definition: SOTemplate.h:36
ripple::TxFormats::TxFormats
TxFormats()
Create the object.
Definition: TxFormats.cpp:25
ripple::ttNFTOKEN_MINT
@ ttNFTOKEN_MINT
This transaction mints a new NFT.
Definition: TxFormats.h:128
ripple::ttESCROW_CREATE
@ ttESCROW_CREATE
This transaction type creates an escrow object.
Definition: TxFormats.h:62
ripple::sfTicketCount
const SF_UINT32 sfTicketCount
ripple::sfAccountTxnID
const SF_UINT256 sfAccountTxnID
ripple::ttESCROW_FINISH
@ ttESCROW_FINISH
This transaction type completes an existing escrow.
Definition: TxFormats.h:65
ripple::sfTakerGets
const SF_AMOUNT sfTakerGets
ripple::sfTransferRate
const SF_UINT32 sfTransferRate
ripple::sfTickSize
const SF_UINT8 sfTickSize
ripple::sfPreviousTxnID
const SF_UINT256 sfPreviousTxnID
ripple::sfAuthorize
const SF_ACCOUNT sfAuthorize
ripple::sfReserveIncrementDrops
const SF_AMOUNT sfReserveIncrementDrops
ripple::sfClearFlag
const SF_UINT32 sfClearFlag
ripple::TxFormats
Manages the list of known transaction formats.
Definition: TxFormats.h:164
ripple::sfReserveBaseDrops
const SF_AMOUNT sfReserveBaseDrops
ripple::ttNFTOKEN_CANCEL_OFFER
@ ttNFTOKEN_CANCEL_OFFER
This transaction cancels an existing offer to buy or sell an existing NFT.
Definition: TxFormats.h:137
ripple::ttOFFER_CREATE
@ ttOFFER_CREATE
This transaction type creates an offer to trade one asset for another.
Definition: TxFormats.h:80
ripple::sfUNLModifyDisabling
const SF_UINT8 sfUNLModifyDisabling
ripple::sfEmailHash
const SF_UINT128 sfEmailHash
ripple::ttACCOUNT_SET
@ ttACCOUNT_SET
This transaction type adjusts various account settings.
Definition: TxFormats.h:68
ripple::sfSignerEntries
const SField sfSignerEntries
ripple::sfOperationLimit
const SF_UINT32 sfOperationLimit
ripple::sfBaseFee
const SF_UINT64 sfBaseFee
ripple::sfNFTokenBuyOffer
const SF_UINT256 sfNFTokenBuyOffer
ripple::sfTxnSignature
const SF_VL sfTxnSignature
ripple::sfURI
const SF_VL sfURI
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::sfWalletLocator
const SF_UINT256 sfWalletLocator
ripple::sfCondition
const SF_VL sfCondition
ripple::sfIssuer
const SF_ACCOUNT sfIssuer
ripple::ttDEPOSIT_PREAUTH
@ ttDEPOSIT_PREAUTH
This transaction type grants or revokes authorization to transfer funds.
Definition: TxFormats.h:116
ripple::sfInvoiceID
const SF_UINT256 sfInvoiceID
ripple::sfFlags
const SF_UINT32 sfFlags
ripple::sfDestinationTag
const SF_UINT32 sfDestinationTag
ripple::ttCHECK_CASH
@ ttCHECK_CASH
This transaction type cashes an existing check.
Definition: TxFormats.h:110
ripple::sfSignature
const SF_VL sfSignature
ripple::ttPAYCHAN_FUND
@ ttPAYCHAN_FUND
This transaction type funds an existing unidirectional XRP payment channel.
Definition: TxFormats.h:101
ripple::sfBalance
const SF_AMOUNT sfBalance
ripple::sfReferenceFeeUnits
const SF_UINT32 sfReferenceFeeUnits
ripple::ttPAYCHAN_CLAIM
@ ttPAYCHAN_CLAIM
This transaction type submits a claim against an existing unidirectional payment channel.
Definition: TxFormats.h:104
ripple::sfCancelAfter
const SF_UINT32 sfCancelAfter
ripple::sfMessageKey
const SF_VL sfMessageKey
ripple::ttNFTOKEN_BURN
@ ttNFTOKEN_BURN
This transaction burns (i.e.
Definition: TxFormats.h:131
ripple::sfFinishAfter
const SF_UINT32 sfFinishAfter
ripple::sfChannel
const SF_UINT256 sfChannel
ripple::sfNFTokenTaxon
const SF_UINT32 sfNFTokenTaxon
ripple::sfFee
const SF_AMOUNT sfFee
ripple::sfAccount
const SF_ACCOUNT sfAccount
ripple::sfDomain
const SF_VL sfDomain
ripple::sfLastLedgerSequence
const SF_UINT32 sfLastLedgerSequence
ripple::sfAmendment
const SF_UINT256 sfAmendment
ripple::sfFulfillment
const SF_VL sfFulfillment
ripple::sfPublicKey
const SF_VL sfPublicKey
ripple::sfNFTokenSellOffer
const SF_UINT256 sfNFTokenSellOffer
ripple::ttTICKET_CREATE
@ ttTICKET_CREATE
This transaction type creates a new set of tickets.
Definition: TxFormats.h:89
ripple::soeDEFAULT
@ soeDEFAULT
Definition: SOTemplate.h:37
ripple::sfNFTokenBrokerFee
const SF_AMOUNT sfNFTokenBrokerFee
ripple::KnownFormats< TxType, TxFormats >::add
Item const & add(char const *name, TxType type, std::initializer_list< SOElement > uniqueFields, std::initializer_list< SOElement > commonFields={})
Add a new format.
Definition: KnownFormats.h:170
std::initializer_list