From 5e520303ea6bc93f50de80f0b66cd0bb7909f3e7 Mon Sep 17 00:00:00 2001 From: ximinez Date: Fri, 9 Jan 2026 19:13:06 -0800 Subject: [PATCH] deploy: b2c5927b488fa0c306117de971f336c8d49317de --- AMMCreate_8cpp_source.html | 2 +- AccountSet__test_8cpp_source.html | 2 +- Application_8cpp_source.html | 2 +- Batch_8cpp_source.html | 6 +- Batch__test_8cpp_source.html | 8535 +++++++++-------- BuildLedger_8cpp_source.html | 2 +- DeleteAccount_8cpp_source.html | 4 +- Escrow_8cpp_source.html | 2 +- FeeVote__test_8cpp_source.html | 2 +- LedgerHistory__test_8cpp_source.html | 2 +- LedgerStateFix_8cpp_source.html | 2 +- LoanBrokerSet_8cpp_source.html | 2 +- LoanPay_8cpp_source.html | 2 +- LoanSet_8cpp_source.html | 6 +- NegativeUNL__test_8cpp_source.html | 2 +- NetworkOPs_8cpp_source.html | 2 +- OpenLedger_8cpp_source.html | 2 +- PeerImp_8cpp_source.html | 2 +- PseudoTx__test_8cpp_source.html | 2 +- Regression__test_8cpp_source.html | 2 +- SetRegularKey_8cpp_source.html | 4 +- SetSignerList_8cpp_source.html | 2 +- Submit_8cpp_source.html | 2 +- TransactionSign_8cpp_source.html | 2 +- Transactor_8cpp_source.html | 2296 ++--- Transactor_8h_source.html | 44 +- TxQ_8cpp_source.html | 2 +- TxQ__test_8cpp_source.html | 2 +- VaultCreate_8cpp_source.html | 2 +- applySteps_8cpp_source.html | 2 +- apply_8cpp_source.html | 471 +- apply_8h_source.html | 6 +- classxrpl_1_1AMMBid.html | 46 +- classxrpl_1_1AMMClawback.html | 44 +- classxrpl_1_1AMMCreate.html | 44 +- classxrpl_1_1AMMDelete.html | 46 +- classxrpl_1_1AMMDeposit.html | 44 +- classxrpl_1_1AMMVote.html | 46 +- classxrpl_1_1AMMWithdraw.html | 44 +- classxrpl_1_1Batch.html | 38 +- classxrpl_1_1BridgeModify.html | 44 +- classxrpl_1_1CancelCheck.html | 46 +- classxrpl_1_1CancelOffer.html | 46 +- classxrpl_1_1CashCheck.html | 46 +- classxrpl_1_1Change.html | 42 +- classxrpl_1_1Clawback.html | 44 +- classxrpl_1_1CreateCheck.html | 46 +- classxrpl_1_1CreateOffer.html | 44 +- classxrpl_1_1CreateTicket.html | 46 +- classxrpl_1_1CredentialAccept.html | 44 +- classxrpl_1_1CredentialCreate.html | 44 +- classxrpl_1_1CredentialDelete.html | 44 +- classxrpl_1_1DIDDelete.html | 46 +- classxrpl_1_1DIDSet.html | 46 +- classxrpl_1_1DelegateSet.html | 46 +- classxrpl_1_1DeleteAccount.html | 44 +- classxrpl_1_1DeleteOracle.html | 46 +- classxrpl_1_1DepositPreauth.html | 46 +- classxrpl_1_1EscrowCancel.html | 46 +- classxrpl_1_1EscrowCreate.html | 46 +- classxrpl_1_1EscrowFinish.html | 42 +- classxrpl_1_1LedgerStateFix.html | 44 +- classxrpl_1_1LoanBrokerCoverClawback.html | 46 +- classxrpl_1_1LoanBrokerCoverDeposit.html | 46 +- classxrpl_1_1LoanBrokerCoverWithdraw.html | 46 +- classxrpl_1_1LoanBrokerDelete.html | 46 +- classxrpl_1_1LoanBrokerSet.html | 46 +- classxrpl_1_1LoanDelete.html | 46 +- classxrpl_1_1LoanManage.html | 44 +- classxrpl_1_1LoanPay.html | 42 +- classxrpl_1_1LoanSet.html | 40 +- classxrpl_1_1MPTokenAuthorize.html | 44 +- classxrpl_1_1MPTokenIssuanceCreate.html | 44 +- classxrpl_1_1MPTokenIssuanceDestroy.html | 44 +- classxrpl_1_1MPTokenIssuanceSet.html | 42 +- classxrpl_1_1NFTokenAcceptOffer.html | 44 +- classxrpl_1_1NFTokenBurn.html | 46 +- classxrpl_1_1NFTokenCancelOffer.html | 44 +- classxrpl_1_1NFTokenCreateOffer.html | 44 +- classxrpl_1_1NFTokenMint.html | 44 +- classxrpl_1_1NFTokenModify.html | 46 +- classxrpl_1_1PayChanClaim.html | 44 +- classxrpl_1_1PayChanCreate.html | 46 +- classxrpl_1_1PayChanFund.html | 46 +- classxrpl_1_1Payment.html | 42 +- classxrpl_1_1PermissionedDomainDelete.html | 46 +- classxrpl_1_1PermissionedDomainSet.html | 46 +- classxrpl_1_1SetAccount.html | 42 +- classxrpl_1_1SetOracle.html | 46 +- classxrpl_1_1SetRegularKey.html | 44 +- classxrpl_1_1SetSignerList.html | 42 +- classxrpl_1_1SetTrust.html | 42 +- classxrpl_1_1Transactor.html | 48 +- classxrpl_1_1VaultClawback.html | 46 +- classxrpl_1_1VaultCreate.html | 44 +- classxrpl_1_1VaultDelete.html | 46 +- classxrpl_1_1VaultDeposit.html | 46 +- classxrpl_1_1VaultSet.html | 46 +- classxrpl_1_1VaultWithdraw.html | 46 +- ..._1_1XChainAddAccountCreateAttestation.html | 46 +- classxrpl_1_1XChainAddClaimAttestation.html | 46 +- classxrpl_1_1XChainClaim.html | 46 +- classxrpl_1_1XChainCommit.html | 46 +- classxrpl_1_1XChainCreateAccountCommit.html | 46 +- classxrpl_1_1XChainCreateBridge.html | 46 +- classxrpl_1_1XChainCreateClaimID.html | 46 +- classxrpl_1_1test_1_1Batch__test-members.html | 133 +- classxrpl_1_1test_1_1Batch__test.html | 102 +- functions_c.html | 22 +- functions_d.html | 23 +- functions_e.html | 8 +- functions_f.html | 4 +- functions_func_c.html | 4 +- functions_func_d.html | 13 +- functions_func_e.html | 2 +- functions_func_f.html | 4 +- functions_func_h.html | 2 +- functions_func_j.html | 6 +- functions_func_l.html | 4 +- functions_func_n.html | 2 +- functions_func_o.html | 12 +- functions_func_s.html | 6 +- functions_func_u.html | 2 +- functions_func_v.html | 12 +- functions_h.html | 4 +- functions_i.html | 8 +- functions_j.html | 6 +- functions_l.html | 8 +- functions_m.html | 2 +- functions_n.html | 9 +- functions_o.html | 6 +- functions_p.html | 8 +- functions_q.html | 3 +- functions_s.html | 26 +- functions_t.html | 16 +- functions_u.html | 2 +- functions_v.html | 16 +- namespacexrpl.html | 20 +- search/all_10.js | 6 +- search/all_11.js | 4 +- search/all_12.js | 2 +- search/all_13.js | 12 +- search/all_14.js | 4 +- search/all_15.js | 8 +- search/all_16.js | 6 +- search/all_17.js | 14 +- search/all_18.js | 2 +- search/all_19.js | 10 +- search/all_1a.js | 28 +- search/all_1b.js | 28 +- search/all_1c.js | 2 +- search/all_1d.js | 12 +- search/all_1e.js | 4 +- search/all_20.js | 2 +- search/all_21.js | 2 +- search/all_22.js | 4 +- search/all_8.js | 10 +- search/all_9.js | 4 +- search/all_a.js | 28 +- search/all_b.js | 171 +- search/all_c.js | 12 +- search/all_d.js | 10 +- search/all_e.js | 2 +- search/all_f.js | 6 +- search/enumvalues_19.js | 2 +- search/enumvalues_2.js | 2 +- search/enumvalues_e.js | 2 +- search/functions_1.js | 6 +- search/functions_10.js | 4 +- search/functions_12.js | 4 +- search/functions_13.js | 24 +- search/functions_14.js | 6 +- search/functions_15.js | 2 +- search/functions_16.js | 4 +- search/functions_17.js | 2 +- search/functions_1a.js | 2 +- search/functions_1b.js | 4 +- search/functions_2.js | 2 +- search/functions_3.js | 8 +- search/functions_4.js | 93 +- search/functions_5.js | 8 +- search/functions_6.js | 4 +- search/functions_7.js | 2 +- search/functions_8.js | 2 +- search/functions_9.js | 2 +- search/functions_a.js | 4 +- search/functions_c.js | 2 +- search/functions_d.js | 2 +- search/functions_e.js | 2 +- search/functions_f.js | 4 +- search/typedefs_2.js | 2 +- search/variables_13.js | 2 +- search/variables_d.js | 4 +- search/variables_f.js | 2 +- 194 files changed, 8003 insertions(+), 7826 deletions(-) diff --git a/AMMCreate_8cpp_source.html b/AMMCreate_8cpp_source.html index 532e13fc90..1c2f8b250d 100644 --- a/AMMCreate_8cpp_source.html +++ b/AMMCreate_8cpp_source.html @@ -457,7 +457,7 @@ $(document).ready(function() { init_codefold(0); });
void apply(RawView &to)
Definition Sandbox.h:36
Definition TER.h:396
AccountID const account_
Definition Transactor.h:128
-
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
ApplyContext & ctx_
Definition Transactor.h:124
diff --git a/AccountSet__test_8cpp_source.html b/AccountSet__test_8cpp_source.html index 24687dcca3..cbcfff1010 100644 --- a/AccountSet__test_8cpp_source.html +++ b/AccountSet__test_8cpp_source.html @@ -757,7 +757,7 @@ $(document).ready(function() { init_codefold(0); });
std::pair< PublicKey, SecretKey > randomKeyPair(KeyType type)
Create a key pair using secure random numbers.
constexpr std::uint32_t asfDisableMaster
Definition TxFlags.h:61
bool dirIsEmpty(ReadView const &view, Keylet const &k)
Returns true if the directory is empty.
Definition View.cpp:1009
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
std::string to_string(base_uint< Bits, Tag > const &a)
Definition base_uint.h:611
T get(Section const &section, std::string const &name, T const &defaultValue=T{})
Retrieve a key/value pair from a section.
std::string strHex(FwdIt begin, FwdIt end)
Definition strHex.h:11
diff --git a/Application_8cpp_source.html b/Application_8cpp_source.html index d3f27205cf..0751679231 100644 --- a/Application_8cpp_source.html +++ b/Application_8cpp_source.html @@ -2749,7 +2749,7 @@ $(document).ready(function() { init_codefold(0); });
void addJson(Json::Value &json, LedgerFill const &fill)
Given a Ledger and options, fill a Json::Value with a description of the ledger.
Overlay::Setup setup_Overlay(BasicConfig const &config)
HashRouter::Setup setup_HashRouter(Config const &config)
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
std::unordered_map< std::string, boost::asio::ip::tcp::endpoint > Endpoints
Definition ServerImpl.h:22
std::optional< uint256 > getRegisteredFeature(std::string const &name)
Definition Feature.cpp:363
std::unique_ptr< PeerSetBuilder > make_PeerSetBuilder(Application &app)
Definition PeerSet.cpp:126
diff --git a/Batch_8cpp_source.html b/Batch_8cpp_source.html index e1e9e1bc7f..93ba1fc797 100644 --- a/Batch_8cpp_source.html +++ b/Batch_8cpp_source.html @@ -563,10 +563,10 @@ $(document).ready(function() { init_codefold(0); });
TxType getTxnType() const
Definition STTx.h:187
uint256 getTransactionID() const
Definition STTx.h:199
Definition TER.h:396
-
static NotTEC checkSign(PreclaimContext const &ctx)
-
static NotTEC checkBatchSign(PreclaimContext const &ctx)
+
static NotTEC checkSign(PreclaimContext const &ctx)
+
static NotTEC checkBatchSign(PreclaimContext const &ctx)
ApplyView & view()
Definition Transactor.h:144
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
Definition XRPAmount.h:24
T emplace(T... args)
diff --git a/Batch__test_8cpp_source.html b/Batch__test_8cpp_source.html index e34dc28448..a64390aacf 100644 --- a/Batch__test_8cpp_source.html +++ b/Batch__test_8cpp_source.html @@ -253,3399 +253,3399 @@ $(document).ready(function() { init_codefold(0); });
150 {
-
151 testcase("enabled");
-
152
-
153 using namespace test::jtx;
-
154 using namespace std::literals;
+
151 using namespace test::jtx;
+
152 using namespace std::literals;
+
153
+
154 bool const withInnerSigFix = features[fixBatchInnerSigs];
155
156 for (bool const withBatch : {true, false})
157 {
-
158 auto const amend = withBatch ? features : features - featureBatch;
-
159 test::jtx::Env env{*this, envconfig(), amend};
-
160
-
161 auto const alice = Account("alice");
-
162 auto const bob = Account("bob");
-
163 auto const carol = Account("carol");
-
164 env.fund(XRP(10000), alice, bob, carol);
-
165 env.close();
+
158 testcase << "enabled: Batch "
+
159 << (withBatch ? "enabled" : "disabled")
+
160 << ", Inner Sig Fix: "
+
161 << (withInnerSigFix ? "enabled" : "disabled");
+
162
+
163 auto const amend = withBatch ? features : features - featureBatch;
+
164
+
165 test::jtx::Env env{*this, amend};
166
-
167 // ttBatch
-
168 {
-
169 auto const seq = env.seq(alice);
-
170 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
171 auto const txResult =
-
172 withBatch ? ter(tesSUCCESS) : ter(temDISABLED);
-
173 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
174 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
175 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
-
176 txResult);
-
177 env.close();
-
178 }
-
179
-
180 // tfInnerBatchTxn
-
181 // If the feature is disabled, the transaction fails with
-
182 // temINVALID_FLAG If the feature is enabled, the transaction fails
-
183 // early in checkValidity()
-
184 {
-
185 auto const txResult =
- -
187 env(pay(alice, bob, XRP(1)),
- -
189 txResult);
-
190 env.close();
-
191 }
-
192
-
193 env.close();
-
194 }
-
195 }
+
167 auto const alice = Account("alice");
+
168 auto const bob = Account("bob");
+
169 auto const carol = Account("carol");
+
170 env.fund(XRP(10000), alice, bob, carol);
+
171 env.close();
+
172
+
173 // ttBatch
+
174 {
+
175 auto const seq = env.seq(alice);
+
176 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
177 auto const txResult =
+
178 withBatch ? ter(tesSUCCESS) : ter(temDISABLED);
+
179 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
180 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
181 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+
182 txResult);
+
183 env.close();
+
184 }
+
185
+
186 // tfInnerBatchTxn
+
187 // If the feature is disabled, the transaction fails with
+
188 // temINVALID_FLAG. If the feature is enabled, the transaction fails
+
189 // early in checkValidity()
+
190 {
+
191 auto const txResult =
+ +
193 env(pay(alice, bob, XRP(1)),
+ +
195 txResult);
+
196 env.close();
+
197 }
+
198
+
199 env.close();
+
200 }
+
201 }
-
196
-
197 void
-
- -
199 {
-
200 testcase("preflight");
-
201
-
202 using namespace test::jtx;
-
203 using namespace std::literals;
-
204
-
205 //----------------------------------------------------------------------
-
206 // preflight
+
202
+
203 void
+
+ +
205 {
+
206 testcase("preflight");
207
-
208 test::jtx::Env env{*this, envconfig()};
-
209
-
210 auto const alice = Account("alice");
-
211 auto const bob = Account("bob");
-
212 auto const carol = Account("carol");
-
213 env.fund(XRP(10000), alice, bob, carol);
-
214 env.close();
+
208 using namespace test::jtx;
+
209 using namespace std::literals;
+
210
+
211 //----------------------------------------------------------------------
+
212 // preflight
+
213
+
214 test::jtx::Env env{*this, features};
215
-
216 // temBAD_FEE: preflight1
-
217 {
-
218 env(batch::outer(alice, env.seq(alice), XRP(-1), tfAllOrNothing),
-
219 ter(temBAD_FEE));
-
220 env.close();
-
221 }
-
222
-
223 // DEFENSIVE: temINVALID_FLAG: Batch: inner batch flag.
-
224 // ACTUAL: telENV_RPC_FAILED: checkValidity()
-
225 {
-
226 auto const seq = env.seq(alice);
-
227 auto const batchFee = batch::calcBatchFee(env, 0, 0);
-
228 env(batch::outer(alice, seq, batchFee, tfInnerBatchTxn),
- -
230 env.close();
-
231 }
-
232
-
233 // temINVALID_FLAG: Batch: invalid flags.
-
234 {
-
235 auto const seq = env.seq(alice);
-
236 auto const batchFee = batch::calcBatchFee(env, 0, 0);
-
237 env(batch::outer(alice, seq, batchFee, tfDisallowXRP),
- -
239 env.close();
-
240 }
-
241
-
242 // temINVALID_FLAG: Batch: too many flags.
-
243 {
-
244 auto const seq = env.seq(alice);
-
245 auto const batchFee = batch::calcBatchFee(env, 0, 0);
-
246 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
- - -
249 env.close();
-
250 }
-
251
-
252 // temARRAY_EMPTY: Batch: txns array must have at least 2 entries.
-
253 {
-
254 auto const seq = env.seq(alice);
-
255 auto const batchFee = batch::calcBatchFee(env, 0, 0);
-
256 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
- -
258 env.close();
-
259 }
-
260
-
261 // temARRAY_EMPTY: Batch: txns array must have at least 2 entries.
-
262 {
-
263 auto const seq = env.seq(alice);
-
264 auto const batchFee = batch::calcBatchFee(env, 0, 0);
-
265 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
266 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
- -
268 env.close();
-
269 }
-
270
-
271 // DEFENSIVE: temARRAY_TOO_LARGE: Batch: txns array exceeds 8 entries.
-
272 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
-
273 {
-
274 auto const seq = env.seq(alice);
-
275 auto const batchFee = batch::calcBatchFee(env, 0, 9);
-
276 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
277 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
278 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
-
279 batch::inner(pay(alice, bob, XRP(1)), seq + 3),
-
280 batch::inner(pay(alice, bob, XRP(1)), seq + 4),
-
281 batch::inner(pay(alice, bob, XRP(1)), seq + 5),
-
282 batch::inner(pay(alice, bob, XRP(1)), seq + 6),
-
283 batch::inner(pay(alice, bob, XRP(1)), seq + 7),
-
284 batch::inner(pay(alice, bob, XRP(1)), seq + 8),
-
285 batch::inner(pay(alice, bob, XRP(1)), seq + 9),
- -
287 env.close();
-
288 }
-
289
-
290 // temREDUNDANT: Batch: duplicate Txn found.
-
291 {
-
292 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
293 auto const seq = env.seq(alice);
-
294 auto jt = env.jtnofill(
-
295 batch::outer(alice, env.seq(alice), batchFee, tfAllOrNothing),
-
296 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
297 batch::inner(pay(alice, bob, XRP(10)), seq + 1));
-
298
-
299 env(jt.jv, batch::sig(bob), ter(temREDUNDANT));
-
300 env.close();
-
301 }
-
302
-
303 // DEFENSIVE: temINVALID: Batch: batch cannot have inner batch txn.
-
304 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
-
305 {
-
306 auto const seq = env.seq(alice);
-
307 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
308 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
- -
310 batch::outer(alice, seq, batchFee, tfAllOrNothing), seq),
-
311 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
- -
313 env.close();
-
314 }
-
315
-
316 // temINVALID_FLAG: Batch: inner txn must have the
-
317 // tfInnerBatchTxn flag.
-
318 {
-
319 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
320 auto const seq = env.seq(alice);
-
321 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
322 tx1[jss::Flags] = 0;
-
323 auto jt = env.jtnofill(
-
324 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
325 tx1,
-
326 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
327
-
328 env(jt.jv, batch::sig(bob), ter(temINVALID_FLAG));
-
329 env.close();
-
330 }
-
331
-
332 // temBAD_SIGNATURE: Batch: inner txn cannot include TxnSignature.
-
333 {
-
334 auto const seq = env.seq(alice);
-
335 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
336 auto jt = env.jt(pay(alice, bob, XRP(1)));
-
337 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
338 batch::inner(jt.jv, seq + 1),
-
339 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
- -
341 env.close();
-
342 }
-
343
-
344 // temBAD_SIGNER: Batch: inner txn cannot include Signers.
-
345 {
-
346 auto const seq = env.seq(alice);
-
347 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
348 auto tx1 = pay(alice, bob, XRP(1));
-
349 tx1[sfSigners.jsonName] = Json::arrayValue;
-
350 tx1[sfSigners.jsonName][0U][sfSigner.jsonName] = Json::objectValue;
-
351 tx1[sfSigners.jsonName][0U][sfSigner.jsonName][sfAccount.jsonName] =
-
352 alice.human();
-
353 tx1[sfSigners.jsonName][0U][sfSigner.jsonName]
-
354 [sfSigningPubKey.jsonName] = strHex(alice.pk());
-
355 tx1[sfSigners.jsonName][0U][sfSigner.jsonName]
-
356 [sfTxnSignature.jsonName] = "DEADBEEF";
-
357 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
358 batch::inner(tx1, seq + 1),
-
359 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
- -
361 env.close();
-
362 }
-
363
-
364 // temBAD_REGKEY: Batch: inner txn must include empty
-
365 // SigningPubKey.
-
366 {
-
367 auto const seq = env.seq(alice);
-
368 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
369 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
-
370 tx1[jss::SigningPubKey] = strHex(alice.pk());
-
371 auto jt = env.jtnofill(
-
372 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
373 tx1,
-
374 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
-
375
-
376 env(jt.jv, ter(temBAD_REGKEY));
-
377 env.close();
-
378 }
-
379
-
380 // temINVALID_INNER_BATCH: Batch: inner txn preflight failed.
-
381 {
-
382 auto const seq = env.seq(alice);
-
383 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
384 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
385 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
386 // amount can't be negative
-
387 batch::inner(pay(alice, bob, XRP(-1)), seq + 2),
- -
389 env.close();
-
390 }
-
391
-
392 // temBAD_FEE: Batch: inner txn must have a fee of 0.
-
393 {
-
394 auto const seq = env.seq(alice);
-
395 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
396 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
-
397 tx1[jss::Fee] = to_string(env.current()->fees().base);
-
398 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
399 tx1,
-
400 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
401 ter(temBAD_FEE));
-
402 env.close();
-
403 }
-
404
-
405 // temBAD_FEE: Inner txn with negative fee
-
406 {
-
407 auto const seq = env.seq(alice);
-
408 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
409 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
-
410 tx1[jss::Fee] = "-1";
-
411 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
412 tx1,
-
413 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
414 ter(temBAD_FEE));
-
415 env.close();
-
416 }
-
417
-
418 // temBAD_FEE: Inner txn with non-integer fee
-
419 {
-
420 auto const seq = env.seq(alice);
-
421 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
422 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
-
423 tx1[jss::Fee] = "1.5";
-
424 try
-
425 {
-
426 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
427 tx1,
-
428 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
-
429 fail("Expected parse_error for fractional fee");
-
430 }
-
431 catch (jtx::parse_error const&)
-
432 {
-
433 BEAST_EXPECT(true);
-
434 }
-
435 }
-
436
-
437 // temSEQ_AND_TICKET: Batch: inner txn cannot have both Sequence
-
438 // and TicketSequence.
-
439 {
-
440 auto const seq = env.seq(alice);
-
441 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
442 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), 0, 1);
-
443 tx1[jss::Sequence] = seq + 1;
-
444 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
445 tx1,
-
446 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
- -
448 env.close();
-
449 }
-
450
-
451 // temSEQ_AND_TICKET: Batch: inner txn must have either Sequence or
-
452 // TicketSequence.
-
453 {
-
454 auto const seq = env.seq(alice);
-
455 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
456 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
457 batch::inner(pay(alice, bob, XRP(1)), 0),
-
458 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
- -
460 env.close();
-
461 }
-
462
-
463 // temREDUNDANT: Batch: duplicate sequence found:
-
464 {
-
465 auto const seq = env.seq(alice);
-
466 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
467 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
468 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
469 batch::inner(pay(alice, bob, XRP(2)), seq + 1),
- -
471 env.close();
-
472 }
-
473
-
474 // temREDUNDANT: Batch: duplicate ticket found:
-
475 {
-
476 auto const seq = env.seq(alice);
-
477 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
478 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
479 batch::inner(pay(alice, bob, XRP(1)), 0, seq + 1),
-
480 batch::inner(pay(alice, bob, XRP(2)), 0, seq + 1),
- -
482 env.close();
-
483 }
-
484
-
485 // temREDUNDANT: Batch: duplicate ticket & sequence found:
-
486 {
-
487 auto const seq = env.seq(alice);
-
488 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
489 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
490 batch::inner(pay(alice, bob, XRP(1)), 0, seq + 1),
-
491 batch::inner(pay(alice, bob, XRP(2)), seq + 1),
- -
493 env.close();
-
494 }
-
495
-
496 // DEFENSIVE: temARRAY_TOO_LARGE: Batch: signers array exceeds 8
-
497 // entries.
-
498 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
-
499 {
-
500 auto const seq = env.seq(alice);
-
501 auto const batchFee = batch::calcBatchFee(env, 9, 2);
-
502 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
503 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
504 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
- -
506 bob,
-
507 carol,
-
508 alice,
-
509 bob,
-
510 carol,
-
511 alice,
+
216 auto const alice = Account("alice");
+
217 auto const bob = Account("bob");
+
218 auto const carol = Account("carol");
+
219 env.fund(XRP(10000), alice, bob, carol);
+
220 env.close();
+
221
+
222 // temBAD_FEE: preflight1
+
223 {
+
224 env(batch::outer(alice, env.seq(alice), XRP(-1), tfAllOrNothing),
+
225 ter(temBAD_FEE));
+
226 env.close();
+
227 }
+
228
+
229 // DEFENSIVE: temINVALID_FLAG: Batch: inner batch flag.
+
230 // ACTUAL: telENV_RPC_FAILED: checkValidity()
+
231 {
+
232 auto const seq = env.seq(alice);
+
233 auto const batchFee = batch::calcBatchFee(env, 0, 0);
+
234 env(batch::outer(alice, seq, batchFee, tfInnerBatchTxn),
+ +
236 env.close();
+
237 }
+
238
+
239 // temINVALID_FLAG: Batch: invalid flags.
+
240 {
+
241 auto const seq = env.seq(alice);
+
242 auto const batchFee = batch::calcBatchFee(env, 0, 0);
+
243 env(batch::outer(alice, seq, batchFee, tfDisallowXRP),
+ +
245 env.close();
+
246 }
+
247
+
248 // temINVALID_FLAG: Batch: too many flags.
+
249 {
+
250 auto const seq = env.seq(alice);
+
251 auto const batchFee = batch::calcBatchFee(env, 0, 0);
+
252 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+ + +
255 env.close();
+
256 }
+
257
+
258 // temARRAY_EMPTY: Batch: txns array must have at least 2 entries.
+
259 {
+
260 auto const seq = env.seq(alice);
+
261 auto const batchFee = batch::calcBatchFee(env, 0, 0);
+
262 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+ +
264 env.close();
+
265 }
+
266
+
267 // temARRAY_EMPTY: Batch: txns array must have at least 2 entries.
+
268 {
+
269 auto const seq = env.seq(alice);
+
270 auto const batchFee = batch::calcBatchFee(env, 0, 0);
+
271 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
272 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+ +
274 env.close();
+
275 }
+
276
+
277 // DEFENSIVE: temARRAY_TOO_LARGE: Batch: txns array exceeds 8 entries.
+
278 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
+
279 {
+
280 auto const seq = env.seq(alice);
+
281 auto const batchFee = batch::calcBatchFee(env, 0, 9);
+
282 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
283 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
284 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+
285 batch::inner(pay(alice, bob, XRP(1)), seq + 3),
+
286 batch::inner(pay(alice, bob, XRP(1)), seq + 4),
+
287 batch::inner(pay(alice, bob, XRP(1)), seq + 5),
+
288 batch::inner(pay(alice, bob, XRP(1)), seq + 6),
+
289 batch::inner(pay(alice, bob, XRP(1)), seq + 7),
+
290 batch::inner(pay(alice, bob, XRP(1)), seq + 8),
+
291 batch::inner(pay(alice, bob, XRP(1)), seq + 9),
+ +
293 env.close();
+
294 }
+
295
+
296 // temREDUNDANT: Batch: duplicate Txn found.
+
297 {
+
298 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
299 auto const seq = env.seq(alice);
+
300 auto jt = env.jtnofill(
+
301 batch::outer(alice, env.seq(alice), batchFee, tfAllOrNothing),
+
302 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
303 batch::inner(pay(alice, bob, XRP(10)), seq + 1));
+
304
+
305 env(jt.jv, batch::sig(bob), ter(temREDUNDANT));
+
306 env.close();
+
307 }
+
308
+
309 // DEFENSIVE: temINVALID: Batch: batch cannot have inner batch txn.
+
310 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
+
311 {
+
312 auto const seq = env.seq(alice);
+
313 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
314 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+ +
316 batch::outer(alice, seq, batchFee, tfAllOrNothing), seq),
+
317 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+ +
319 env.close();
+
320 }
+
321
+
322 // temINVALID_FLAG: Batch: inner txn must have the
+
323 // tfInnerBatchTxn flag.
+
324 {
+
325 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
326 auto const seq = env.seq(alice);
+
327 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
328 tx1[jss::Flags] = 0;
+
329 auto jt = env.jtnofill(
+
330 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
331 tx1,
+
332 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
333
+
334 env(jt.jv, batch::sig(bob), ter(temINVALID_FLAG));
+
335 env.close();
+
336 }
+
337
+
338 // temBAD_SIGNATURE: Batch: inner txn cannot include TxnSignature.
+
339 {
+
340 auto const seq = env.seq(alice);
+
341 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
342 auto jt = env.jt(pay(alice, bob, XRP(1)));
+
343 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
344 batch::inner(jt.jv, seq + 1),
+
345 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+ +
347 env.close();
+
348 }
+
349
+
350 // temBAD_SIGNER: Batch: inner txn cannot include Signers.
+
351 {
+
352 auto const seq = env.seq(alice);
+
353 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
354 auto tx1 = pay(alice, bob, XRP(1));
+
355 tx1[sfSigners.jsonName] = Json::arrayValue;
+
356 tx1[sfSigners.jsonName][0U][sfSigner.jsonName] = Json::objectValue;
+
357 tx1[sfSigners.jsonName][0U][sfSigner.jsonName][sfAccount.jsonName] =
+
358 alice.human();
+
359 tx1[sfSigners.jsonName][0U][sfSigner.jsonName]
+
360 [sfSigningPubKey.jsonName] = strHex(alice.pk());
+
361 tx1[sfSigners.jsonName][0U][sfSigner.jsonName]
+
362 [sfTxnSignature.jsonName] = "DEADBEEF";
+
363 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
364 batch::inner(tx1, seq + 1),
+
365 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+ +
367 env.close();
+
368 }
+
369
+
370 // temBAD_REGKEY: Batch: inner txn must include empty
+
371 // SigningPubKey.
+
372 {
+
373 auto const seq = env.seq(alice);
+
374 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
375 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
+
376 tx1[jss::SigningPubKey] = strHex(alice.pk());
+
377 auto jt = env.jtnofill(
+
378 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
379 tx1,
+
380 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
+
381
+
382 env(jt.jv, ter(temBAD_REGKEY));
+
383 env.close();
+
384 }
+
385
+
386 // temINVALID_INNER_BATCH: Batch: inner txn preflight failed.
+
387 {
+
388 auto const seq = env.seq(alice);
+
389 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
390 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
391 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
392 // amount can't be negative
+
393 batch::inner(pay(alice, bob, XRP(-1)), seq + 2),
+ +
395 env.close();
+
396 }
+
397
+
398 // temBAD_FEE: Batch: inner txn must have a fee of 0.
+
399 {
+
400 auto const seq = env.seq(alice);
+
401 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
402 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
+
403 tx1[jss::Fee] = to_string(env.current()->fees().base);
+
404 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
405 tx1,
+
406 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
407 ter(temBAD_FEE));
+
408 env.close();
+
409 }
+
410
+
411 // temBAD_FEE: Inner txn with negative fee
+
412 {
+
413 auto const seq = env.seq(alice);
+
414 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
415 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
+
416 tx1[jss::Fee] = "-1";
+
417 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
418 tx1,
+
419 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
420 ter(temBAD_FEE));
+
421 env.close();
+
422 }
+
423
+
424 // temBAD_FEE: Inner txn with non-integer fee
+
425 {
+
426 auto const seq = env.seq(alice);
+
427 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
428 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
+
429 tx1[jss::Fee] = "1.5";
+
430 try
+
431 {
+
432 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
433 tx1,
+
434 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
+
435 fail("Expected parse_error for fractional fee");
+
436 }
+
437 catch (jtx::parse_error const&)
+
438 {
+
439 BEAST_EXPECT(true);
+
440 }
+
441 }
+
442
+
443 // temSEQ_AND_TICKET: Batch: inner txn cannot have both Sequence
+
444 // and TicketSequence.
+
445 {
+
446 auto const seq = env.seq(alice);
+
447 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
448 auto tx1 = batch::inner(pay(alice, bob, XRP(1)), 0, 1);
+
449 tx1[jss::Sequence] = seq + 1;
+
450 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
451 tx1,
+
452 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+ +
454 env.close();
+
455 }
+
456
+
457 // temSEQ_AND_TICKET: Batch: inner txn must have either Sequence or
+
458 // TicketSequence.
+
459 {
+
460 auto const seq = env.seq(alice);
+
461 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
462 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
463 batch::inner(pay(alice, bob, XRP(1)), 0),
+
464 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+ +
466 env.close();
+
467 }
+
468
+
469 // temREDUNDANT: Batch: duplicate sequence found:
+
470 {
+
471 auto const seq = env.seq(alice);
+
472 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
473 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
474 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
475 batch::inner(pay(alice, bob, XRP(2)), seq + 1),
+ +
477 env.close();
+
478 }
+
479
+
480 // temREDUNDANT: Batch: duplicate ticket found:
+
481 {
+
482 auto const seq = env.seq(alice);
+
483 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
484 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
485 batch::inner(pay(alice, bob, XRP(1)), 0, seq + 1),
+
486 batch::inner(pay(alice, bob, XRP(2)), 0, seq + 1),
+ +
488 env.close();
+
489 }
+
490
+
491 // temREDUNDANT: Batch: duplicate ticket & sequence found:
+
492 {
+
493 auto const seq = env.seq(alice);
+
494 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
495 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
496 batch::inner(pay(alice, bob, XRP(1)), 0, seq + 1),
+
497 batch::inner(pay(alice, bob, XRP(2)), seq + 1),
+ +
499 env.close();
+
500 }
+
501
+
502 // DEFENSIVE: temARRAY_TOO_LARGE: Batch: signers array exceeds 8
+
503 // entries.
+
504 // ACTUAL: telENV_RPC_FAILED: isRawTransactionOkay()
+
505 {
+
506 auto const seq = env.seq(alice);
+
507 auto const batchFee = batch::calcBatchFee(env, 9, 2);
+
508 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
509 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
510 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
+
512 bob,
513 carol,
514 alice,
-
515 alice),
- -
517 env.close();
-
518 }
-
519
-
520 // temBAD_SIGNER: Batch: signer cannot be the outer account
-
521 {
-
522 auto const seq = env.seq(alice);
-
523 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
524 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
525 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
526 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
527 batch::sig(alice, bob),
- -
529 env.close();
-
530 }
-
531
-
532 // temREDUNDANT: Batch: duplicate signer found
-
533 {
-
534 auto const seq = env.seq(alice);
-
535 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
536 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
537 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
538 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
539 batch::sig(bob, bob),
- -
541 env.close();
-
542 }
-
543
-
544 // temBAD_SIGNER: Batch: no account signature for inner txn.
-
545 // Note: Extra signature by bob
-
546 {
-
547 auto const seq = env.seq(alice);
-
548 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
549 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
550 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
551 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
-
552 batch::sig(bob),
- -
554 env.close();
-
555 }
-
556
-
557 // temBAD_SIGNER: Batch: no account signature for inner txn.
-
558 {
-
559 auto const seq = env.seq(alice);
-
560 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
561 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
562 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
563 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
564 batch::sig(carol),
- -
566 env.close();
-
567 }
-
568
-
569 // temBAD_SIGNATURE: Batch: invalid batch txn signature.
-
570 {
-
571 auto const seq = env.seq(alice);
-
572 auto const bobSeq = env.seq(bob);
-
573 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
574 auto jt = env.jtnofill(
-
575 batch::outer(alice, env.seq(alice), batchFee, tfAllOrNothing),
-
576 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
577 batch::inner(pay(bob, alice, XRP(5)), bobSeq));
-
578
-
579 Serializer msg;
- -
581 msg, tfAllOrNothing, jt.stx->getBatchTransactionIDs());
-
582 auto const sig = xrpl::sign(bob.pk(), bob.sk(), msg.slice());
-
583 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
-
584 [sfAccount.jsonName] = bob.human();
-
585 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
-
586 [sfSigningPubKey.jsonName] = strHex(alice.pk());
-
587 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
-
588 [sfTxnSignature.jsonName] =
-
589 strHex(Slice{sig.data(), sig.size()});
-
590
-
591 env(jt.jv, ter(temBAD_SIGNATURE));
-
592 env.close();
-
593 }
-
594
-
595 // temBAD_SIGNER: Batch: invalid batch signers.
-
596 {
-
597 auto const seq = env.seq(alice);
-
598 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
599 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
600 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
601 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
602 batch::inner(pay(carol, alice, XRP(5)), env.seq(carol)),
-
603 batch::sig(bob),
- -
605 env.close();
-
606 }
-
607 }
+
515 bob,
+
516 carol,
+
517 alice,
+
518 bob,
+
519 carol,
+
520 alice,
+
521 alice),
+ +
523 env.close();
+
524 }
+
525
+
526 // temBAD_SIGNER: Batch: signer cannot be the outer account
+
527 {
+
528 auto const seq = env.seq(alice);
+
529 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
530 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
531 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
532 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
533 batch::sig(alice, bob),
+ +
535 env.close();
+
536 }
+
537
+
538 // temREDUNDANT: Batch: duplicate signer found
+
539 {
+
540 auto const seq = env.seq(alice);
+
541 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
542 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
543 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
544 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
545 batch::sig(bob, bob),
+ +
547 env.close();
+
548 }
+
549
+
550 // temBAD_SIGNER: Batch: no account signature for inner txn.
+
551 // Note: Extra signature by bob
+
552 {
+
553 auto const seq = env.seq(alice);
+
554 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
555 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
556 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
557 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
+
558 batch::sig(bob),
+ +
560 env.close();
+
561 }
+
562
+
563 // temBAD_SIGNER: Batch: no account signature for inner txn.
+
564 {
+
565 auto const seq = env.seq(alice);
+
566 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
567 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
568 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
569 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
570 batch::sig(carol),
+ +
572 env.close();
+
573 }
+
574
+
575 // temBAD_SIGNATURE: Batch: invalid batch txn signature.
+
576 {
+
577 auto const seq = env.seq(alice);
+
578 auto const bobSeq = env.seq(bob);
+
579 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
580 auto jt = env.jtnofill(
+
581 batch::outer(alice, env.seq(alice), batchFee, tfAllOrNothing),
+
582 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
583 batch::inner(pay(bob, alice, XRP(5)), bobSeq));
+
584
+
585 Serializer msg;
+ +
587 msg, tfAllOrNothing, jt.stx->getBatchTransactionIDs());
+
588 auto const sig = xrpl::sign(bob.pk(), bob.sk(), msg.slice());
+
589 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
+
590 [sfAccount.jsonName] = bob.human();
+
591 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
+
592 [sfSigningPubKey.jsonName] = strHex(alice.pk());
+
593 jt.jv[sfBatchSigners.jsonName][0u][sfBatchSigner.jsonName]
+
594 [sfTxnSignature.jsonName] =
+
595 strHex(Slice{sig.data(), sig.size()});
+
596
+
597 env(jt.jv, ter(temBAD_SIGNATURE));
+
598 env.close();
+
599 }
+
600
+
601 // temBAD_SIGNER: Batch: invalid batch signers.
+
602 {
+
603 auto const seq = env.seq(alice);
+
604 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
605 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
606 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
607 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
608 batch::inner(pay(carol, alice, XRP(5)), env.seq(carol)),
+
609 batch::sig(bob),
+ +
611 env.close();
+
612 }
+
613 }
-
608
-
609 void
-
- -
611 {
-
612 testcase("preclaim");
-
613
-
614 using namespace test::jtx;
-
615 using namespace std::literals;
-
616
-
617 //----------------------------------------------------------------------
-
618 // preclaim
+
614
+
615 void
+
+ +
617 {
+
618 testcase("preclaim");
619
-
620 test::jtx::Env env{*this, envconfig()};
-
621
-
622 auto const alice = Account("alice");
-
623 auto const bob = Account("bob");
-
624 auto const carol = Account("carol");
-
625 auto const dave = Account("dave");
-
626 auto const elsa = Account("elsa");
-
627 auto const frank = Account("frank");
-
628 auto const phantom = Account("phantom");
-
629 env.memoize(phantom);
-
630
-
631 env.fund(XRP(10000), alice, bob, carol, dave, elsa, frank);
-
632 env.close();
-
633
-
634 //----------------------------------------------------------------------
-
635 // checkSign.checkSingleSign
+
620 using namespace test::jtx;
+
621 using namespace std::literals;
+
622
+
623 //----------------------------------------------------------------------
+
624 // preclaim
+
625
+
626 test::jtx::Env env{*this, features};
+
627
+
628 auto const alice = Account("alice");
+
629 auto const bob = Account("bob");
+
630 auto const carol = Account("carol");
+
631 auto const dave = Account("dave");
+
632 auto const elsa = Account("elsa");
+
633 auto const frank = Account("frank");
+
634 auto const phantom = Account("phantom");
+
635 env.memoize(phantom);
636
-
637 // tefBAD_AUTH: Bob is not authorized to sign for Alice
-
638 {
-
639 auto const seq = env.seq(alice);
-
640 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
641 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
642 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
643 batch::inner(pay(alice, bob, XRP(20)), seq + 2),
-
644 sig(bob),
- -
646 env.close();
-
647 }
-
648
-
649 //----------------------------------------------------------------------
-
650 // checkBatchSign.checkMultiSign
-
651
-
652 // tefNOT_MULTI_SIGNING: SignersList not enabled
-
653 {
-
654 auto const seq = env.seq(alice);
-
655 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
656 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
657 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
658 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
659 batch::msig(bob, {dave, carol}),
- -
661 env.close();
-
662 }
-
663
-
664 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
-
665 env.close();
-
666
-
667 env(signers(bob, 2, {{carol, 1}, {dave, 1}, {elsa, 1}}));
-
668 env.close();
+
637 env.fund(XRP(10000), alice, bob, carol, dave, elsa, frank);
+
638 env.close();
+
639
+
640 //----------------------------------------------------------------------
+
641 // checkSign.checkSingleSign
+
642
+
643 // tefBAD_AUTH: Bob is not authorized to sign for Alice
+
644 {
+
645 auto const seq = env.seq(alice);
+
646 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
647 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
648 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
649 batch::inner(pay(alice, bob, XRP(20)), seq + 2),
+
650 sig(bob),
+ +
652 env.close();
+
653 }
+
654
+
655 //----------------------------------------------------------------------
+
656 // checkBatchSign.checkMultiSign
+
657
+
658 // tefNOT_MULTI_SIGNING: SignersList not enabled
+
659 {
+
660 auto const seq = env.seq(alice);
+
661 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
662 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
663 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
664 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
665 batch::msig(bob, {dave, carol}),
+ +
667 env.close();
+
668 }
669
-
670 // tefBAD_SIGNATURE: Account not in SignersList
-
671 {
-
672 auto const seq = env.seq(alice);
-
673 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
674 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
675 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
676 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
677 batch::msig(bob, {carol, frank}),
- -
679 env.close();
-
680 }
-
681
-
682 // tefBAD_SIGNATURE: Wrong publicKey type
-
683 {
-
684 auto const seq = env.seq(alice);
-
685 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
686 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
687 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
688 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
689 batch::msig(bob, {carol, Account("dave", KeyType::ed25519)}),
- -
691 env.close();
-
692 }
-
693
-
694 // tefMASTER_DISABLED: Master key disabled
-
695 {
-
696 env(regkey(elsa, frank));
-
697 env(fset(elsa, asfDisableMaster), sig(elsa));
-
698 auto const seq = env.seq(alice);
-
699 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
700 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
701 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
702 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
703 batch::msig(bob, {carol, elsa}),
- -
705 env.close();
-
706 }
-
707
-
708 // tefBAD_SIGNATURE: Signer does not exist
-
709 {
-
710 auto const seq = env.seq(alice);
-
711 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
712 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
713 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
714 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
715 batch::msig(bob, {carol, phantom}),
- -
717 env.close();
-
718 }
-
719
-
720 // tefBAD_SIGNATURE: Signer has not enabled RegularKey
-
721 {
-
722 auto const seq = env.seq(alice);
-
723 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
724 Account const davo{"davo", KeyType::ed25519};
-
725 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
726 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
727 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
728 batch::msig(bob, {carol, Reg{dave, davo}}),
- -
730 env.close();
-
731 }
-
732
-
733 // tefBAD_SIGNATURE: Wrong RegularKey Set
-
734 {
-
735 env(regkey(dave, frank));
-
736 auto const seq = env.seq(alice);
-
737 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
738 Account const davo{"davo", KeyType::ed25519};
-
739 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
740 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
741 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
742 batch::msig(bob, {carol, Reg{dave, davo}}),
-
743 ter(tefBAD_SIGNATURE));
-
744 env.close();
-
745 }
-
746
-
747 // tefBAD_QUORUM
-
748 {
-
749 auto const seq = env.seq(alice);
-
750 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
751 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
752 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
753 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
754 batch::msig(bob, {carol}),
-
755 ter(tefBAD_QUORUM));
-
756 env.close();
-
757 }
-
758
-
759 // tesSUCCESS: BatchSigners.Signers
-
760 {
-
761 auto const seq = env.seq(alice);
-
762 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
763 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
764 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
765 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
766 batch::msig(bob, {carol, dave}),
-
767 ter(tesSUCCESS));
-
768 env.close();
-
769 }
-
770
-
771 // tesSUCCESS: Multisign + BatchSigners.Signers
-
772 {
-
773 auto const seq = env.seq(alice);
-
774 auto const batchFee = batch::calcBatchFee(env, 4, 2);
-
775 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
776 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
777 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
-
778 batch::msig(bob, {carol, dave}),
-
779 msig(bob, carol),
-
780 ter(tesSUCCESS));
-
781 env.close();
-
782 }
-
783
-
784 //----------------------------------------------------------------------
-
785 // checkBatchSign.checkSingleSign
-
786
-
787 // tefBAD_AUTH: Inner Account is not signer
-
788 {
-
789 auto const ledSeq = env.current()->seq();
-
790 auto const seq = env.seq(alice);
-
791 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
792 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
793 batch::inner(pay(alice, phantom, XRP(1000)), seq + 1),
-
794 batch::inner(noop(phantom), ledSeq),
-
795 batch::sig(Reg{phantom, carol}),
-
796 ter(tefBAD_AUTH));
-
797 env.close();
-
798 }
-
799
-
800 // tefBAD_AUTH: Account is not signer
-
801 {
-
802 auto const ledSeq = env.current()->seq();
-
803 auto const seq = env.seq(alice);
-
804 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
805 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
806 batch::inner(pay(alice, bob, XRP(1000)), seq + 1),
-
807 batch::inner(noop(bob), ledSeq),
-
808 batch::sig(Reg{bob, carol}),
-
809 ter(tefBAD_AUTH));
-
810 env.close();
-
811 }
-
812
-
813 // tesSUCCESS: Signed With Regular Key
-
814 {
-
815 env(regkey(bob, carol));
-
816 auto const seq = env.seq(alice);
-
817 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
818 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
819 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
820 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
-
821 batch::sig(Reg{bob, carol}),
-
822 ter(tesSUCCESS));
-
823 env.close();
-
824 }
-
825
-
826 // tesSUCCESS: Signed With Master Key
-
827 {
-
828 auto const seq = env.seq(alice);
-
829 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
830 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
831 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
832 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
-
833 batch::sig(bob),
-
834 ter(tesSUCCESS));
-
835 env.close();
-
836 }
-
837
-
838 // tefMASTER_DISABLED: Signed With Master Key Disabled
-
839 {
-
840 env(regkey(bob, carol));
-
841 env(fset(bob, asfDisableMaster), sig(bob));
-
842 auto const seq = env.seq(alice);
-
843 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
844 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
845 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
846 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
-
847 batch::sig(bob),
-
848 ter(tefMASTER_DISABLED));
-
849 env.close();
-
850 }
-
851 }
+
670 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
671 env.close();
+
672
+
673 env(signers(bob, 2, {{carol, 1}, {dave, 1}, {elsa, 1}}));
+
674 env.close();
+
675
+
676 // tefBAD_SIGNATURE: Account not in SignersList
+
677 {
+
678 auto const seq = env.seq(alice);
+
679 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
680 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
681 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
682 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
683 batch::msig(bob, {carol, frank}),
+ +
685 env.close();
+
686 }
+
687
+
688 // tefBAD_SIGNATURE: Wrong publicKey type
+
689 {
+
690 auto const seq = env.seq(alice);
+
691 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
692 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
693 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
694 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
695 batch::msig(bob, {carol, Account("dave", KeyType::ed25519)}),
+ +
697 env.close();
+
698 }
+
699
+
700 // tefMASTER_DISABLED: Master key disabled
+
701 {
+
702 env(regkey(elsa, frank));
+
703 env(fset(elsa, asfDisableMaster), sig(elsa));
+
704 auto const seq = env.seq(alice);
+
705 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
706 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
707 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
708 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
709 batch::msig(bob, {carol, elsa}),
+ +
711 env.close();
+
712 }
+
713
+
714 // tefBAD_SIGNATURE: Signer does not exist
+
715 {
+
716 auto const seq = env.seq(alice);
+
717 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
718 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
719 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
720 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
721 batch::msig(bob, {carol, phantom}),
+ +
723 env.close();
+
724 }
+
725
+
726 // tefBAD_SIGNATURE: Signer has not enabled RegularKey
+
727 {
+
728 auto const seq = env.seq(alice);
+
729 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
730 Account const davo{"davo", KeyType::ed25519};
+
731 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
732 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
733 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
734 batch::msig(bob, {carol, Reg{dave, davo}}),
+ +
736 env.close();
+
737 }
+
738
+
739 // tefBAD_SIGNATURE: Wrong RegularKey Set
+
740 {
+
741 env(regkey(dave, frank));
+
742 auto const seq = env.seq(alice);
+
743 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
744 Account const davo{"davo", KeyType::ed25519};
+
745 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
746 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
747 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
748 batch::msig(bob, {carol, Reg{dave, davo}}),
+
749 ter(tefBAD_SIGNATURE));
+
750 env.close();
+
751 }
+
752
+
753 // tefBAD_QUORUM
+
754 {
+
755 auto const seq = env.seq(alice);
+
756 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
757 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
758 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
759 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
760 batch::msig(bob, {carol}),
+
761 ter(tefBAD_QUORUM));
+
762 env.close();
+
763 }
+
764
+
765 // tesSUCCESS: BatchSigners.Signers
+
766 {
+
767 auto const seq = env.seq(alice);
+
768 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
769 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
770 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
771 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
772 batch::msig(bob, {carol, dave}),
+
773 ter(tesSUCCESS));
+
774 env.close();
+
775 }
+
776
+
777 // tesSUCCESS: Multisign + BatchSigners.Signers
+
778 {
+
779 auto const seq = env.seq(alice);
+
780 auto const batchFee = batch::calcBatchFee(env, 4, 2);
+
781 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
782 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
783 batch::inner(pay(bob, alice, XRP(5)), env.seq(bob)),
+
784 batch::msig(bob, {carol, dave}),
+
785 msig(bob, carol),
+
786 ter(tesSUCCESS));
+
787 env.close();
+
788 }
+
789
+
790 //----------------------------------------------------------------------
+
791 // checkBatchSign.checkSingleSign
+
792
+
793 // tefBAD_AUTH: Inner Account is not signer
+
794 {
+
795 auto const ledSeq = env.current()->seq();
+
796 auto const seq = env.seq(alice);
+
797 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
798 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
799 batch::inner(pay(alice, phantom, XRP(1000)), seq + 1),
+
800 batch::inner(noop(phantom), ledSeq),
+
801 batch::sig(Reg{phantom, carol}),
+
802 ter(tefBAD_AUTH));
+
803 env.close();
+
804 }
+
805
+
806 // tefBAD_AUTH: Account is not signer
+
807 {
+
808 auto const ledSeq = env.current()->seq();
+
809 auto const seq = env.seq(alice);
+
810 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
811 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
812 batch::inner(pay(alice, bob, XRP(1000)), seq + 1),
+
813 batch::inner(noop(bob), ledSeq),
+
814 batch::sig(Reg{bob, carol}),
+
815 ter(tefBAD_AUTH));
+
816 env.close();
+
817 }
+
818
+
819 // tesSUCCESS: Signed With Regular Key
+
820 {
+
821 env(regkey(bob, carol));
+
822 auto const seq = env.seq(alice);
+
823 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
824 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
825 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
826 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
+
827 batch::sig(Reg{bob, carol}),
+
828 ter(tesSUCCESS));
+
829 env.close();
+
830 }
+
831
+
832 // tesSUCCESS: Signed With Master Key
+
833 {
+
834 auto const seq = env.seq(alice);
+
835 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
836 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
837 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
838 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
+
839 batch::sig(bob),
+
840 ter(tesSUCCESS));
+
841 env.close();
+
842 }
+
843
+
844 // tefMASTER_DISABLED: Signed With Master Key Disabled
+
845 {
+
846 env(regkey(bob, carol));
+
847 env(fset(bob, asfDisableMaster), sig(bob));
+
848 auto const seq = env.seq(alice);
+
849 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
850 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
851 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
852 batch::inner(pay(bob, alice, XRP(2)), env.seq(bob)),
+
853 batch::sig(bob),
+
854 ter(tefMASTER_DISABLED));
+
855 env.close();
+
856 }
+
857 }
-
852
-
853 void
-
- -
855 {
-
856 testcase("bad raw txn");
-
857
-
858 using namespace test::jtx;
-
859 using namespace std::literals;
-
860
-
861 test::jtx::Env env{*this, envconfig()};
-
862
-
863 auto const alice = Account("alice");
-
864 auto const bob = Account("bob");
-
865
-
866 env.fund(XRP(10000), alice, bob);
-
867
-
868 // Invalid: sfTransactionType
-
869 {
-
870 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
871 auto const seq = env.seq(alice);
-
872 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
873 tx1.removeMember(jss::TransactionType);
-
874 auto jt = env.jtnofill(
-
875 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
876 tx1,
-
877 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
878
-
879 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
-
880 env.close();
-
881 }
-
882
-
883 // Invalid: sfAccount
-
884 {
-
885 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
886 auto const seq = env.seq(alice);
-
887 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
888 tx1.removeMember(jss::Account);
-
889 auto jt = env.jtnofill(
-
890 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
891 tx1,
-
892 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
893
-
894 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
-
895 env.close();
-
896 }
-
897
-
898 // Invalid: sfSequence
-
899 {
-
900 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
901 auto const seq = env.seq(alice);
-
902 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
903 tx1.removeMember(jss::Sequence);
-
904 auto jt = env.jtnofill(
-
905 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
906 tx1,
-
907 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
908
-
909 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
-
910 env.close();
-
911 }
-
912
-
913 // Invalid: sfFee
-
914 {
-
915 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
916 auto const seq = env.seq(alice);
-
917 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
918 tx1.removeMember(jss::Fee);
-
919 auto jt = env.jtnofill(
-
920 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
921 tx1,
-
922 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
923
-
924 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
-
925 env.close();
-
926 }
-
927
-
928 // Invalid: sfSigningPubKey
-
929 {
-
930 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
931 auto const seq = env.seq(alice);
-
932 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
-
933 tx1.removeMember(jss::SigningPubKey);
-
934 auto jt = env.jtnofill(
-
935 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
936 tx1,
-
937 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
-
938
-
939 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
-
940 env.close();
-
941 }
-
942 }
+
858
+
859 void
+
+ +
861 {
+
862 testcase("bad raw txn");
+
863
+
864 using namespace test::jtx;
+
865 using namespace std::literals;
+
866
+
867 test::jtx::Env env{*this, features};
+
868
+
869 auto const alice = Account("alice");
+
870 auto const bob = Account("bob");
+
871
+
872 env.fund(XRP(10000), alice, bob);
+
873
+
874 // Invalid: sfTransactionType
+
875 {
+
876 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
877 auto const seq = env.seq(alice);
+
878 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
879 tx1.removeMember(jss::TransactionType);
+
880 auto jt = env.jtnofill(
+
881 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
882 tx1,
+
883 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
884
+
885 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
+
886 env.close();
+
887 }
+
888
+
889 // Invalid: sfAccount
+
890 {
+
891 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
892 auto const seq = env.seq(alice);
+
893 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
894 tx1.removeMember(jss::Account);
+
895 auto jt = env.jtnofill(
+
896 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
897 tx1,
+
898 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
899
+
900 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
+
901 env.close();
+
902 }
+
903
+
904 // Invalid: sfSequence
+
905 {
+
906 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
907 auto const seq = env.seq(alice);
+
908 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
909 tx1.removeMember(jss::Sequence);
+
910 auto jt = env.jtnofill(
+
911 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
912 tx1,
+
913 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
914
+
915 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
+
916 env.close();
+
917 }
+
918
+
919 // Invalid: sfFee
+
920 {
+
921 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
922 auto const seq = env.seq(alice);
+
923 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
924 tx1.removeMember(jss::Fee);
+
925 auto jt = env.jtnofill(
+
926 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
927 tx1,
+
928 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
929
+
930 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
+
931 env.close();
+
932 }
+
933
+
934 // Invalid: sfSigningPubKey
+
935 {
+
936 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
937 auto const seq = env.seq(alice);
+
938 auto tx1 = batch::inner(pay(alice, bob, XRP(10)), seq + 1);
+
939 tx1.removeMember(jss::SigningPubKey);
+
940 auto jt = env.jtnofill(
+
941 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
942 tx1,
+
943 batch::inner(pay(alice, bob, XRP(10)), seq + 2));
+
944
+
945 env(jt.jv, batch::sig(bob), ter(telENV_RPC_FAILED));
+
946 env.close();
+
947 }
+
948 }
-
943
-
944 void
-
- -
946 {
-
947 testcase("bad sequence");
-
948
-
949 using namespace test::jtx;
-
950 using namespace std::literals;
-
951
-
952 test::jtx::Env env{*this, envconfig()};
-
953
-
954 auto const alice = Account("alice");
-
955 auto const bob = Account("bob");
-
956 auto const gw = Account("gw");
-
957 auto const USD = gw["USD"];
-
958
-
959 env.fund(XRP(10000), alice, bob, gw);
-
960 env.close();
-
961 env.trust(USD(1000), alice, bob);
-
962 env(pay(gw, alice, USD(100)));
-
963 env(pay(gw, bob, USD(100)));
-
964 env.close();
-
965
-
966 env(noop(bob), ter(tesSUCCESS));
-
967 env.close();
-
968
-
969 // Invalid: Alice Sequence is a past sequence
-
970 {
-
971 auto const preAliceSeq = env.seq(alice);
-
972 auto const preAlice = env.balance(alice);
-
973 auto const preAliceUSD = env.balance(alice, USD.issue());
-
974 auto const preBobSeq = env.seq(bob);
-
975 auto const preBob = env.balance(bob);
-
976 auto const preBobUSD = env.balance(bob, USD.issue());
-
977
-
978 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
979 auto const [txIDs, batchID] = submitBatch(
-
980 env,
- -
982 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
-
983 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq - 10),
-
984 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
-
985 batch::sig(bob));
-
986
-
987 env.close();
-
988 {
-
989 std::vector<TestLedgerData> testCases = {
-
990 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
991 };
-
992 validateClosedLedger(env, testCases);
-
993 }
-
994
-
995 env.close();
-
996 {
-
997 // next ledger is empty
-
998 std::vector<TestLedgerData> testCases = {};
-
999 validateClosedLedger(env, testCases);
-
1000 }
-
1001
-
1002 // Alice pays fee & Bob should not be affected.
-
1003 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
-
1004 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1005 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
1006 BEAST_EXPECT(env.seq(bob) == preBobSeq);
-
1007 BEAST_EXPECT(env.balance(bob) == preBob);
-
1008 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
1009 }
-
1010
-
1011 // Invalid: Alice Sequence is a future sequence
-
1012 {
-
1013 auto const preAliceSeq = env.seq(alice);
-
1014 auto const preAlice = env.balance(alice);
-
1015 auto const preAliceUSD = env.balance(alice, USD.issue());
-
1016 auto const preBobSeq = env.seq(bob);
-
1017 auto const preBob = env.balance(bob);
-
1018 auto const preBobUSD = env.balance(bob, USD.issue());
-
1019
-
1020 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
1021 auto const [txIDs, batchID] = submitBatch(
-
1022 env,
-
1023 tesSUCCESS,
-
1024 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
-
1025 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 10),
-
1026 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
-
1027 batch::sig(bob));
-
1028
-
1029 env.close();
-
1030 {
-
1031 std::vector<TestLedgerData> testCases = {
-
1032 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1033 };
-
1034 validateClosedLedger(env, testCases);
-
1035 }
-
1036
-
1037 env.close();
-
1038 {
-
1039 // next ledger is empty
-
1040 std::vector<TestLedgerData> testCases = {};
-
1041 validateClosedLedger(env, testCases);
-
1042 }
-
1043
-
1044 // Alice pays fee & Bob should not be affected.
-
1045 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
-
1046 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1047 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
1048 BEAST_EXPECT(env.seq(bob) == preBobSeq);
-
1049 BEAST_EXPECT(env.balance(bob) == preBob);
-
1050 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
1051 }
-
1052
-
1053 // Invalid: Bob Sequence is a past sequence
-
1054 {
-
1055 auto const preAliceSeq = env.seq(alice);
-
1056 auto const preAlice = env.balance(alice);
-
1057 auto const preAliceUSD = env.balance(alice, USD.issue());
-
1058 auto const preBobSeq = env.seq(bob);
-
1059 auto const preBob = env.balance(bob);
-
1060 auto const preBobUSD = env.balance(bob, USD.issue());
-
1061
-
1062 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
1063 auto const [txIDs, batchID] = submitBatch(
-
1064 env,
-
1065 tesSUCCESS,
-
1066 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
-
1067 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 1),
-
1068 batch::inner(pay(bob, alice, XRP(5)), preBobSeq - 10),
-
1069 batch::sig(bob));
-
1070
-
1071 env.close();
-
1072 {
-
1073 std::vector<TestLedgerData> testCases = {
-
1074 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1075 };
-
1076 validateClosedLedger(env, testCases);
-
1077 }
-
1078
-
1079 env.close();
-
1080 {
-
1081 // next ledger is empty
-
1082 std::vector<TestLedgerData> testCases = {};
-
1083 validateClosedLedger(env, testCases);
-
1084 }
-
1085
-
1086 // Alice pays fee & Bob should not be affected.
-
1087 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
-
1088 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1089 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
1090 BEAST_EXPECT(env.seq(bob) == preBobSeq);
-
1091 BEAST_EXPECT(env.balance(bob) == preBob);
-
1092 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
1093 }
-
1094
-
1095 // Invalid: Bob Sequence is a future sequence
-
1096 {
-
1097 auto const preAliceSeq = env.seq(alice);
-
1098 auto const preAlice = env.balance(alice);
-
1099 auto const preAliceUSD = env.balance(alice, USD.issue());
-
1100 auto const preBobSeq = env.seq(bob);
-
1101 auto const preBob = env.balance(bob);
-
1102 auto const preBobUSD = env.balance(bob, USD.issue());
-
1103
-
1104 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
1105 auto const [txIDs, batchID] = submitBatch(
-
1106 env,
-
1107 tesSUCCESS,
-
1108 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
-
1109 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 1),
-
1110 batch::inner(pay(bob, alice, XRP(5)), preBobSeq + 10),
-
1111 batch::sig(bob));
-
1112
-
1113 env.close();
-
1114 {
-
1115 std::vector<TestLedgerData> testCases = {
-
1116 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1117 };
-
1118 validateClosedLedger(env, testCases);
-
1119 }
-
1120
-
1121 env.close();
-
1122 {
-
1123 // next ledger is empty
-
1124 std::vector<TestLedgerData> testCases = {};
-
1125 validateClosedLedger(env, testCases);
-
1126 }
-
1127
-
1128 // Alice pays fee & Bob should not be affected.
-
1129 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
-
1130 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1131 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
1132 BEAST_EXPECT(env.seq(bob) == preBobSeq);
-
1133 BEAST_EXPECT(env.balance(bob) == preBob);
-
1134 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
1135 }
-
1136
-
1137 // Invalid: Outer and Inner Sequence are the same
-
1138 {
-
1139 auto const preAliceSeq = env.seq(alice);
-
1140 auto const preAlice = env.balance(alice);
-
1141 auto const preAliceUSD = env.balance(alice, USD.issue());
-
1142 auto const preBobSeq = env.seq(bob);
-
1143 auto const preBob = env.balance(bob);
-
1144 auto const preBobUSD = env.balance(bob, USD.issue());
-
1145
-
1146 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
1147 auto const [txIDs, batchID] = submitBatch(
-
1148 env,
-
1149 tesSUCCESS,
-
1150 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
-
1151 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq),
-
1152 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
-
1153 batch::sig(bob));
-
1154
-
1155 env.close();
-
1156 {
-
1157 std::vector<TestLedgerData> testCases = {
-
1158 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1159 };
-
1160 validateClosedLedger(env, testCases);
-
1161 }
-
1162
-
1163 env.close();
-
1164 {
-
1165 // next ledger is empty
-
1166 std::vector<TestLedgerData> testCases = {};
-
1167 validateClosedLedger(env, testCases);
-
1168 }
-
1169
-
1170 // Alice pays fee & Bob should not be affected.
-
1171 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
-
1172 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1173 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
1174 BEAST_EXPECT(env.seq(bob) == preBobSeq);
-
1175 BEAST_EXPECT(env.balance(bob) == preBob);
-
1176 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
1177 }
-
1178 }
+
949
+
950 void
+
+ +
952 {
+
953 testcase("bad sequence");
+
954
+
955 using namespace test::jtx;
+
956 using namespace std::literals;
+
957
+
958 test::jtx::Env env{*this, features};
+
959
+
960 auto const alice = Account("alice");
+
961 auto const bob = Account("bob");
+
962 auto const gw = Account("gw");
+
963 auto const USD = gw["USD"];
+
964
+
965 env.fund(XRP(10000), alice, bob, gw);
+
966 env.close();
+
967 env.trust(USD(1000), alice, bob);
+
968 env(pay(gw, alice, USD(100)));
+
969 env(pay(gw, bob, USD(100)));
+
970 env.close();
+
971
+
972 env(noop(bob), ter(tesSUCCESS));
+
973 env.close();
+
974
+
975 // Invalid: Alice Sequence is a past sequence
+
976 {
+
977 auto const preAliceSeq = env.seq(alice);
+
978 auto const preAlice = env.balance(alice);
+
979 auto const preAliceUSD = env.balance(alice, USD.issue());
+
980 auto const preBobSeq = env.seq(bob);
+
981 auto const preBob = env.balance(bob);
+
982 auto const preBobUSD = env.balance(bob, USD.issue());
+
983
+
984 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
985 auto const [txIDs, batchID] = submitBatch(
+
986 env,
+ +
988 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
+
989 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq - 10),
+
990 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
+
991 batch::sig(bob));
+
992
+
993 env.close();
+
994 {
+
995 std::vector<TestLedgerData> testCases = {
+
996 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
997 };
+
998 validateClosedLedger(env, testCases);
+
999 }
+
1000
+
1001 env.close();
+
1002 {
+
1003 // next ledger is empty
+
1004 std::vector<TestLedgerData> testCases = {};
+
1005 validateClosedLedger(env, testCases);
+
1006 }
+
1007
+
1008 // Alice pays fee & Bob should not be affected.
+
1009 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
+
1010 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1011 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
1012 BEAST_EXPECT(env.seq(bob) == preBobSeq);
+
1013 BEAST_EXPECT(env.balance(bob) == preBob);
+
1014 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
1015 }
+
1016
+
1017 // Invalid: Alice Sequence is a future sequence
+
1018 {
+
1019 auto const preAliceSeq = env.seq(alice);
+
1020 auto const preAlice = env.balance(alice);
+
1021 auto const preAliceUSD = env.balance(alice, USD.issue());
+
1022 auto const preBobSeq = env.seq(bob);
+
1023 auto const preBob = env.balance(bob);
+
1024 auto const preBobUSD = env.balance(bob, USD.issue());
+
1025
+
1026 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
1027 auto const [txIDs, batchID] = submitBatch(
+
1028 env,
+
1029 tesSUCCESS,
+
1030 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
+
1031 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 10),
+
1032 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
+
1033 batch::sig(bob));
+
1034
+
1035 env.close();
+
1036 {
+
1037 std::vector<TestLedgerData> testCases = {
+
1038 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1039 };
+
1040 validateClosedLedger(env, testCases);
+
1041 }
+
1042
+
1043 env.close();
+
1044 {
+
1045 // next ledger is empty
+
1046 std::vector<TestLedgerData> testCases = {};
+
1047 validateClosedLedger(env, testCases);
+
1048 }
+
1049
+
1050 // Alice pays fee & Bob should not be affected.
+
1051 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
+
1052 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1053 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
1054 BEAST_EXPECT(env.seq(bob) == preBobSeq);
+
1055 BEAST_EXPECT(env.balance(bob) == preBob);
+
1056 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
1057 }
+
1058
+
1059 // Invalid: Bob Sequence is a past sequence
+
1060 {
+
1061 auto const preAliceSeq = env.seq(alice);
+
1062 auto const preAlice = env.balance(alice);
+
1063 auto const preAliceUSD = env.balance(alice, USD.issue());
+
1064 auto const preBobSeq = env.seq(bob);
+
1065 auto const preBob = env.balance(bob);
+
1066 auto const preBobUSD = env.balance(bob, USD.issue());
+
1067
+
1068 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
1069 auto const [txIDs, batchID] = submitBatch(
+
1070 env,
+
1071 tesSUCCESS,
+
1072 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
+
1073 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 1),
+
1074 batch::inner(pay(bob, alice, XRP(5)), preBobSeq - 10),
+
1075 batch::sig(bob));
+
1076
+
1077 env.close();
+
1078 {
+
1079 std::vector<TestLedgerData> testCases = {
+
1080 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1081 };
+
1082 validateClosedLedger(env, testCases);
+
1083 }
+
1084
+
1085 env.close();
+
1086 {
+
1087 // next ledger is empty
+
1088 std::vector<TestLedgerData> testCases = {};
+
1089 validateClosedLedger(env, testCases);
+
1090 }
+
1091
+
1092 // Alice pays fee & Bob should not be affected.
+
1093 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
+
1094 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1095 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
1096 BEAST_EXPECT(env.seq(bob) == preBobSeq);
+
1097 BEAST_EXPECT(env.balance(bob) == preBob);
+
1098 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
1099 }
+
1100
+
1101 // Invalid: Bob Sequence is a future sequence
+
1102 {
+
1103 auto const preAliceSeq = env.seq(alice);
+
1104 auto const preAlice = env.balance(alice);
+
1105 auto const preAliceUSD = env.balance(alice, USD.issue());
+
1106 auto const preBobSeq = env.seq(bob);
+
1107 auto const preBob = env.balance(bob);
+
1108 auto const preBobUSD = env.balance(bob, USD.issue());
+
1109
+
1110 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
1111 auto const [txIDs, batchID] = submitBatch(
+
1112 env,
+
1113 tesSUCCESS,
+
1114 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
+
1115 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq + 1),
+
1116 batch::inner(pay(bob, alice, XRP(5)), preBobSeq + 10),
+
1117 batch::sig(bob));
+
1118
+
1119 env.close();
+
1120 {
+
1121 std::vector<TestLedgerData> testCases = {
+
1122 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1123 };
+
1124 validateClosedLedger(env, testCases);
+
1125 }
+
1126
+
1127 env.close();
+
1128 {
+
1129 // next ledger is empty
+
1130 std::vector<TestLedgerData> testCases = {};
+
1131 validateClosedLedger(env, testCases);
+
1132 }
+
1133
+
1134 // Alice pays fee & Bob should not be affected.
+
1135 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
+
1136 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1137 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
1138 BEAST_EXPECT(env.seq(bob) == preBobSeq);
+
1139 BEAST_EXPECT(env.balance(bob) == preBob);
+
1140 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
1141 }
+
1142
+
1143 // Invalid: Outer and Inner Sequence are the same
+
1144 {
+
1145 auto const preAliceSeq = env.seq(alice);
+
1146 auto const preAlice = env.balance(alice);
+
1147 auto const preAliceUSD = env.balance(alice, USD.issue());
+
1148 auto const preBobSeq = env.seq(bob);
+
1149 auto const preBob = env.balance(bob);
+
1150 auto const preBobUSD = env.balance(bob, USD.issue());
+
1151
+
1152 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
1153 auto const [txIDs, batchID] = submitBatch(
+
1154 env,
+
1155 tesSUCCESS,
+
1156 batch::outer(alice, preAliceSeq, batchFee, tfAllOrNothing),
+
1157 batch::inner(pay(alice, bob, XRP(10)), preAliceSeq),
+
1158 batch::inner(pay(bob, alice, XRP(5)), preBobSeq),
+
1159 batch::sig(bob));
+
1160
+
1161 env.close();
+
1162 {
+
1163 std::vector<TestLedgerData> testCases = {
+
1164 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1165 };
+
1166 validateClosedLedger(env, testCases);
+
1167 }
+
1168
+
1169 env.close();
+
1170 {
+
1171 // next ledger is empty
+
1172 std::vector<TestLedgerData> testCases = {};
+
1173 validateClosedLedger(env, testCases);
+
1174 }
+
1175
+
1176 // Alice pays fee & Bob should not be affected.
+
1177 BEAST_EXPECT(env.seq(alice) == preAliceSeq + 1);
+
1178 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1179 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
1180 BEAST_EXPECT(env.seq(bob) == preBobSeq);
+
1181 BEAST_EXPECT(env.balance(bob) == preBob);
+
1182 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
1183 }
+
1184 }
-
1179
-
1180 void
-
- -
1182 {
-
1183 testcase("bad outer fee");
-
1184
-
1185 using namespace test::jtx;
-
1186 using namespace std::literals;
-
1187
-
1188 // Bad Fee Without Signer
-
1189 {
-
1190 test::jtx::Env env{*this, envconfig()};
-
1191
-
1192 auto const alice = Account("alice");
-
1193 auto const bob = Account("bob");
-
1194 env.fund(XRP(10000), alice, bob);
-
1195 env.close();
-
1196
-
1197 env(noop(bob), ter(tesSUCCESS));
-
1198 env.close();
-
1199
-
1200 // Bad Fee: Should be batch::calcBatchFee(env, 0, 2)
-
1201 auto const batchFee = batch::calcBatchFee(env, 0, 1);
-
1202 auto const aliceSeq = env.seq(alice);
-
1203 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1204 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1205 batch::inner(pay(alice, bob, XRP(15)), aliceSeq + 2),
- -
1207 env.close();
-
1208 }
-
1209
-
1210 // Bad Fee With MultiSign
-
1211 {
-
1212 test::jtx::Env env{*this, envconfig()};
-
1213
-
1214 auto const alice = Account("alice");
-
1215 auto const bob = Account("bob");
-
1216 auto const carol = Account("carol");
-
1217 env.fund(XRP(10000), alice, bob, carol);
-
1218 env.close();
+
1185
+
1186 void
+
+ +
1188 {
+
1189 testcase("bad outer fee");
+
1190
+
1191 using namespace test::jtx;
+
1192 using namespace std::literals;
+
1193
+
1194 // Bad Fee Without Signer
+
1195 {
+
1196 test::jtx::Env env{*this, features};
+
1197
+
1198 auto const alice = Account("alice");
+
1199 auto const bob = Account("bob");
+
1200 env.fund(XRP(10000), alice, bob);
+
1201 env.close();
+
1202
+
1203 env(noop(bob), ter(tesSUCCESS));
+
1204 env.close();
+
1205
+
1206 // Bad Fee: Should be batch::calcBatchFee(env, 0, 2)
+
1207 auto const batchFee = batch::calcBatchFee(env, 0, 1);
+
1208 auto const aliceSeq = env.seq(alice);
+
1209 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1210 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1211 batch::inner(pay(alice, bob, XRP(15)), aliceSeq + 2),
+ +
1213 env.close();
+
1214 }
+
1215
+
1216 // Bad Fee With MultiSign
+
1217 {
+
1218 test::jtx::Env env{*this, features};
1219
-
1220 env(noop(bob), ter(tesSUCCESS));
-
1221 env.close();
-
1222
-
1223 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1220 auto const alice = Account("alice");
+
1221 auto const bob = Account("bob");
+
1222 auto const carol = Account("carol");
+
1223 env.fund(XRP(10000), alice, bob, carol);
1224 env.close();
1225
-
1226 // Bad Fee: Should be batch::calcBatchFee(env, 2, 2)
-
1227 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
1228 auto const aliceSeq = env.seq(alice);
-
1229 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1230 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1231 batch::inner(pay(alice, bob, XRP(15)), aliceSeq + 2),
-
1232 msig(bob, carol),
- -
1234 env.close();
-
1235 }
-
1236
-
1237 // Bad Fee With MultiSign + BatchSigners
-
1238 {
-
1239 test::jtx::Env env{*this, envconfig()};
-
1240
-
1241 auto const alice = Account("alice");
-
1242 auto const bob = Account("bob");
-
1243 auto const carol = Account("carol");
-
1244 env.fund(XRP(10000), alice, bob, carol);
-
1245 env.close();
+
1226 env(noop(bob), ter(tesSUCCESS));
+
1227 env.close();
+
1228
+
1229 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1230 env.close();
+
1231
+
1232 // Bad Fee: Should be batch::calcBatchFee(env, 2, 2)
+
1233 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
1234 auto const aliceSeq = env.seq(alice);
+
1235 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1236 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1237 batch::inner(pay(alice, bob, XRP(15)), aliceSeq + 2),
+
1238 msig(bob, carol),
+ +
1240 env.close();
+
1241 }
+
1242
+
1243 // Bad Fee With MultiSign + BatchSigners
+
1244 {
+
1245 test::jtx::Env env{*this, features};
1246
-
1247 env(noop(bob), ter(tesSUCCESS));
-
1248 env.close();
-
1249
-
1250 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1247 auto const alice = Account("alice");
+
1248 auto const bob = Account("bob");
+
1249 auto const carol = Account("carol");
+
1250 env.fund(XRP(10000), alice, bob, carol);
1251 env.close();
1252
-
1253 // Bad Fee: Should be batch::calcBatchFee(env, 3, 2)
-
1254 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
1255 auto const aliceSeq = env.seq(alice);
-
1256 auto const bobSeq = env.seq(bob);
-
1257 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1258 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1259 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
1260 batch::sig(bob),
-
1261 msig(bob, carol),
- -
1263 env.close();
-
1264 }
-
1265
-
1266 // Bad Fee With MultiSign + BatchSigners.Signers
-
1267 {
-
1268 test::jtx::Env env{*this, envconfig()};
-
1269
-
1270 auto const alice = Account("alice");
-
1271 auto const bob = Account("bob");
-
1272 auto const carol = Account("carol");
-
1273 env.fund(XRP(10000), alice, bob, carol);
-
1274 env.close();
+
1253 env(noop(bob), ter(tesSUCCESS));
+
1254 env.close();
+
1255
+
1256 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1257 env.close();
+
1258
+
1259 // Bad Fee: Should be batch::calcBatchFee(env, 3, 2)
+
1260 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
1261 auto const aliceSeq = env.seq(alice);
+
1262 auto const bobSeq = env.seq(bob);
+
1263 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1264 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1265 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
1266 batch::sig(bob),
+
1267 msig(bob, carol),
+ +
1269 env.close();
+
1270 }
+
1271
+
1272 // Bad Fee With MultiSign + BatchSigners.Signers
+
1273 {
+
1274 test::jtx::Env env{*this, features};
1275
-
1276 env(noop(bob), ter(tesSUCCESS));
-
1277 env.close();
-
1278
-
1279 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1276 auto const alice = Account("alice");
+
1277 auto const bob = Account("bob");
+
1278 auto const carol = Account("carol");
+
1279 env.fund(XRP(10000), alice, bob, carol);
1280 env.close();
1281
-
1282 env(signers(bob, 2, {{alice, 1}, {carol, 1}}));
+
1282 env(noop(bob), ter(tesSUCCESS));
1283 env.close();
1284
-
1285 // Bad Fee: Should be batch::calcBatchFee(env, 4, 2)
-
1286 auto const batchFee = batch::calcBatchFee(env, 3, 2);
-
1287 auto const aliceSeq = env.seq(alice);
-
1288 auto const bobSeq = env.seq(bob);
-
1289 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1290 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1291 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
1292 batch::msig(bob, {alice, carol}),
-
1293 msig(bob, carol),
- -
1295 env.close();
-
1296 }
-
1297
-
1298 // Bad Fee With BatchSigners
-
1299 {
-
1300 test::jtx::Env env{*this, envconfig()};
-
1301
-
1302 auto const alice = Account("alice");
-
1303 auto const bob = Account("bob");
-
1304 env.fund(XRP(10000), alice, bob);
-
1305 env.close();
-
1306
-
1307 env(noop(bob), ter(tesSUCCESS));
-
1308 env.close();
-
1309
-
1310 // Bad Fee: Should be batch::calcBatchFee(env, 1, 2)
-
1311 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1312 auto const aliceSeq = env.seq(alice);
-
1313 auto const bobSeq = env.seq(bob);
-
1314 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1315 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1316 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
1317 batch::sig(bob),
- -
1319 env.close();
-
1320 }
-
1321
-
1322 // Bad Fee Dynamic Fee Calculation
-
1323 {
-
1324 test::jtx::Env env{*this, envconfig()};
-
1325
-
1326 auto const alice = Account("alice");
-
1327 auto const bob = Account("bob");
-
1328 auto const gw = Account("gw");
-
1329 auto const USD = gw["USD"];
-
1330
-
1331 env.fund(XRP(10000), alice, bob, gw);
-
1332 env.close();
-
1333 auto const ammCreate =
-
1334 [&alice](STAmount const& amount, STAmount const& amount2) {
-
1335 Json::Value jv;
-
1336 jv[jss::Account] = alice.human();
-
1337 jv[jss::Amount] = amount.getJson(JsonOptions::none);
-
1338 jv[jss::Amount2] = amount2.getJson(JsonOptions::none);
-
1339 jv[jss::TradingFee] = 0;
-
1340 jv[jss::TransactionType] = jss::AMMCreate;
-
1341 return jv;
-
1342 };
-
1343
-
1344 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1345 auto const seq = env.seq(alice);
-
1346 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
1347 batch::inner(ammCreate(XRP(10), USD(10)), seq + 1),
-
1348 batch::inner(pay(alice, bob, XRP(10)), seq + 2),
- -
1350 env.close();
-
1351 }
-
1352 }
+
1285 env(signers(alice, 2, {{bob, 1}, {carol, 1}}));
+
1286 env.close();
+
1287
+
1288 env(signers(bob, 2, {{alice, 1}, {carol, 1}}));
+
1289 env.close();
+
1290
+
1291 // Bad Fee: Should be batch::calcBatchFee(env, 4, 2)
+
1292 auto const batchFee = batch::calcBatchFee(env, 3, 2);
+
1293 auto const aliceSeq = env.seq(alice);
+
1294 auto const bobSeq = env.seq(bob);
+
1295 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1296 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1297 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
1298 batch::msig(bob, {alice, carol}),
+
1299 msig(bob, carol),
+ +
1301 env.close();
+
1302 }
+
1303
+
1304 // Bad Fee With BatchSigners
+
1305 {
+
1306 test::jtx::Env env{*this, features};
+
1307
+
1308 auto const alice = Account("alice");
+
1309 auto const bob = Account("bob");
+
1310 env.fund(XRP(10000), alice, bob);
+
1311 env.close();
+
1312
+
1313 env(noop(bob), ter(tesSUCCESS));
+
1314 env.close();
+
1315
+
1316 // Bad Fee: Should be batch::calcBatchFee(env, 1, 2)
+
1317 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1318 auto const aliceSeq = env.seq(alice);
+
1319 auto const bobSeq = env.seq(bob);
+
1320 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1321 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1322 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
1323 batch::sig(bob),
+ +
1325 env.close();
+
1326 }
+
1327
+
1328 // Bad Fee Dynamic Fee Calculation
+
1329 {
+
1330 test::jtx::Env env{*this, features};
+
1331
+
1332 auto const alice = Account("alice");
+
1333 auto const bob = Account("bob");
+
1334 auto const gw = Account("gw");
+
1335 auto const USD = gw["USD"];
+
1336
+
1337 env.fund(XRP(10000), alice, bob, gw);
+
1338 env.close();
+
1339 auto const ammCreate =
+
1340 [&alice](STAmount const& amount, STAmount const& amount2) {
+
1341 Json::Value jv;
+
1342 jv[jss::Account] = alice.human();
+
1343 jv[jss::Amount] = amount.getJson(JsonOptions::none);
+
1344 jv[jss::Amount2] = amount2.getJson(JsonOptions::none);
+
1345 jv[jss::TradingFee] = 0;
+
1346 jv[jss::TransactionType] = jss::AMMCreate;
+
1347 return jv;
+
1348 };
+
1349
+
1350 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1351 auto const seq = env.seq(alice);
+
1352 env(batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
1353 batch::inner(ammCreate(XRP(10), USD(10)), seq + 1),
+
1354 batch::inner(pay(alice, bob, XRP(10)), seq + 2),
+ +
1356 env.close();
+
1357 }
+
1358 }
-
1353
-
1354 void
-
- -
1356 {
-
1357 testcase("calculate base fee");
-
1358
-
1359 using namespace test::jtx;
-
1360 using namespace std::literals;
-
1361
-
1362 // telENV_RPC_FAILED: Batch: txns array exceeds 8 entries.
-
1363 {
-
1364 test::jtx::Env env{*this, envconfig()};
-
1365
-
1366 auto const alice = Account("alice");
-
1367 auto const bob = Account("bob");
-
1368 env.fund(XRP(10000), alice, bob);
-
1369 env.close();
-
1370
-
1371 auto const batchFee = batch::calcBatchFee(env, 0, 9);
-
1372 auto const aliceSeq = env.seq(alice);
-
1373 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1374 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1375 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1376 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1377 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1378 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1379 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1359
+
1360 void
+
+ +
1362 {
+
1363 testcase("calculate base fee");
+
1364
+
1365 using namespace test::jtx;
+
1366 using namespace std::literals;
+
1367
+
1368 // telENV_RPC_FAILED: Batch: txns array exceeds 8 entries.
+
1369 {
+
1370 test::jtx::Env env{*this, features};
+
1371
+
1372 auto const alice = Account("alice");
+
1373 auto const bob = Account("bob");
+
1374 env.fund(XRP(10000), alice, bob);
+
1375 env.close();
+
1376
+
1377 auto const batchFee = batch::calcBatchFee(env, 0, 9);
+
1378 auto const aliceSeq = env.seq(alice);
+
1379 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
1380 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
1381 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
1382 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
- -
1384 env.close();
-
1385 }
-
1386
-
1387 // temARRAY_TOO_LARGE: Batch: txns array exceeds 8 entries.
-
1388 {
-
1389 test::jtx::Env env{*this, envconfig()};
-
1390
-
1391 auto const alice = Account("alice");
-
1392 auto const bob = Account("bob");
-
1393 env.fund(XRP(10000), alice, bob);
-
1394 env.close();
-
1395
-
1396 auto const batchFee = batch::calcBatchFee(env, 0, 9);
-
1397 auto const aliceSeq = env.seq(alice);
-
1398 auto jt = env.jtnofill(
-
1399 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1400 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1401 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1402 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1403 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1404 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1405 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1383 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1384 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1385 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1386 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1387 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1388 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+ +
1390 env.close();
+
1391 }
+
1392
+
1393 // temARRAY_TOO_LARGE: Batch: txns array exceeds 8 entries.
+
1394 {
+
1395 test::jtx::Env env{*this, features};
+
1396
+
1397 auto const alice = Account("alice");
+
1398 auto const bob = Account("bob");
+
1399 env.fund(XRP(10000), alice, bob);
+
1400 env.close();
+
1401
+
1402 auto const batchFee = batch::calcBatchFee(env, 0, 9);
+
1403 auto const aliceSeq = env.seq(alice);
+
1404 auto jt = env.jtnofill(
+
1405 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
1406 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
1407 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
1408 batch::inner(pay(alice, bob, XRP(1)), aliceSeq));
-
1409
-
1410 env.app().openLedger().modify(
-
1411 [&](OpenView& view, beast::Journal j) {
-
1412 auto const result =
-
1413 xrpl::apply(env.app(), view, *jt.stx, tapNONE, j);
-
1414 BEAST_EXPECT(
-
1415 !result.applied && result.ter == temARRAY_TOO_LARGE);
-
1416 return result.applied;
-
1417 });
-
1418 }
-
1419
-
1420 // telENV_RPC_FAILED: Batch: signers array exceeds 8 entries.
-
1421 {
-
1422 test::jtx::Env env{*this, envconfig()};
-
1423
-
1424 auto const alice = Account("alice");
-
1425 auto const bob = Account("bob");
-
1426 env.fund(XRP(10000), alice, bob);
-
1427 env.close();
-
1428
-
1429 auto const aliceSeq = env.seq(alice);
-
1430 auto const batchFee = batch::calcBatchFee(env, 9, 2);
-
1431 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1432 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1433 batch::inner(pay(alice, bob, XRP(5)), aliceSeq + 2),
-
1434 batch::sig(bob, bob, bob, bob, bob, bob, bob, bob, bob, bob),
- -
1436 env.close();
-
1437 }
-
1438
-
1439 // temARRAY_TOO_LARGE: Batch: signers array exceeds 8 entries.
-
1440 {
-
1441 test::jtx::Env env{*this, envconfig()};
-
1442
-
1443 auto const alice = Account("alice");
-
1444 auto const bob = Account("bob");
-
1445 env.fund(XRP(10000), alice, bob);
-
1446 env.close();
-
1447
-
1448 auto const batchFee = batch::calcBatchFee(env, 0, 9);
-
1449 auto const aliceSeq = env.seq(alice);
-
1450 auto jt = env.jtnofill(
-
1451 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
1452 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
1453 batch::inner(pay(alice, bob, XRP(5)), aliceSeq + 2),
-
1454 batch::sig(bob, bob, bob, bob, bob, bob, bob, bob, bob, bob));
-
1455
-
1456 env.app().openLedger().modify(
-
1457 [&](OpenView& view, beast::Journal j) {
-
1458 auto const result =
-
1459 xrpl::apply(env.app(), view, *jt.stx, tapNONE, j);
-
1460 BEAST_EXPECT(
-
1461 !result.applied && result.ter == temARRAY_TOO_LARGE);
-
1462 return result.applied;
-
1463 });
-
1464 }
-
1465 }
-
-
1466
-
1467 void
-
- -
1469 {
-
1470 testcase("all or nothing");
-
1471
-
1472 using namespace test::jtx;
-
1473 using namespace std::literals;
-
1474
-
1475 test::jtx::Env env{*this, envconfig()};
-
1476
-
1477 auto const alice = Account("alice");
-
1478 auto const bob = Account("bob");
-
1479 auto const gw = Account("gw");
-
1480 auto const USD = gw["USD"];
-
1481 env.fund(XRP(10000), alice, bob, gw);
-
1482 env.close();
-
1483
-
1484 // all
-
1485 {
-
1486 auto const preAlice = env.balance(alice);
-
1487 auto const preBob = env.balance(bob);
-
1488
-
1489 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1490 auto const seq = env.seq(alice);
-
1491 auto const [txIDs, batchID] = submitBatch(
-
1492 env,
-
1493 tesSUCCESS,
-
1494 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
1495 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1496 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
-
1497 env.close();
-
1498
-
1499 std::vector<TestLedgerData> testCases = {
-
1500 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1501 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
1502 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1503 };
-
1504 validateClosedLedger(env, testCases);
-
1505
-
1506 // Alice consumes sequences (# of txns)
-
1507 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
1508
-
1509 // Alice pays XRP & Fee; Bob receives XRP
-
1510 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
1511 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
1512 }
-
1513
-
1514 // tec failure
-
1515 {
-
1516 auto const preAlice = env.balance(alice);
-
1517 auto const preBob = env.balance(bob);
-
1518
-
1519 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1520 auto const seq = env.seq(alice);
-
1521
-
1522 auto const [txIDs, batchID] = submitBatch(
-
1523 env,
-
1524 tesSUCCESS,
-
1525 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
1526 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1527 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1528 batch::inner(pay(alice, bob, XRP(9999)), seq + 2));
-
1529 env.close();
-
1530
-
1531 std::vector<TestLedgerData> testCases = {
-
1532 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1533 };
-
1534 validateClosedLedger(env, testCases);
-
1535
-
1536 // Alice consumes sequence
-
1537 BEAST_EXPECT(env.seq(alice) == seq + 1);
-
1538
-
1539 // Alice pays Fee; Bob should not be affected
-
1540 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1541 BEAST_EXPECT(env.balance(bob) == preBob);
-
1542 }
-
1543
-
1544 // tef failure
-
1545 {
-
1546 auto const preAlice = env.balance(alice);
-
1547 auto const preBob = env.balance(bob);
-
1548
-
1549 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1550 auto const seq = env.seq(alice);
-
1551 auto const [txIDs, batchID] = submitBatch(
-
1552 env,
-
1553 tesSUCCESS,
-
1554 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
1555 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1556 // tefNO_AUTH_REQUIRED: trustline auth is not required
-
1557 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 2));
-
1558 env.close();
-
1559
-
1560 std::vector<TestLedgerData> testCases = {
-
1561 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1562 };
-
1563 validateClosedLedger(env, testCases);
-
1564
-
1565 // Alice consumes sequence
-
1566 BEAST_EXPECT(env.seq(alice) == seq + 1);
-
1567
-
1568 // Alice pays Fee; Bob should not be affected
-
1569 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1570 BEAST_EXPECT(env.balance(bob) == preBob);
-
1571 }
-
1572
-
1573 // ter failure
-
1574 {
-
1575 auto const preAlice = env.balance(alice);
-
1576 auto const preBob = env.balance(bob);
-
1577
-
1578 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
1579 auto const seq = env.seq(alice);
-
1580 auto const [txIDs, batchID] = submitBatch(
-
1581 env,
-
1582 tesSUCCESS,
-
1583 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
1584 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1585 // terPRE_TICKET: ticket does not exist
-
1586 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 2));
-
1587 env.close();
-
1588
-
1589 std::vector<TestLedgerData> testCases = {
-
1590 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1591 };
-
1592 validateClosedLedger(env, testCases);
-
1593
-
1594 // Alice consumes sequence
-
1595 BEAST_EXPECT(env.seq(alice) == seq + 1);
-
1596
-
1597 // Alice pays Fee; Bob should not be affected
-
1598 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1599 BEAST_EXPECT(env.balance(bob) == preBob);
-
1600 }
-
1601 }
+
1408 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1409 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1410 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1411 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1412 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1413 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
1414 batch::inner(pay(alice, bob, XRP(1)), aliceSeq));
+
1415
+
1416 env.app().openLedger().modify(
+
1417 [&](OpenView& view, beast::Journal j) {
+
1418 auto const result =
+
1419 xrpl::apply(env.app(), view, *jt.stx, tapNONE, j);
+
1420 BEAST_EXPECT(
+
1421 !result.applied && result.ter == temARRAY_TOO_LARGE);
+
1422 return result.applied;
+
1423 });
+
1424 }
+
1425
+
1426 // telENV_RPC_FAILED: Batch: signers array exceeds 8 entries.
+
1427 {
+
1428 test::jtx::Env env{*this, features};
+
1429
+
1430 auto const alice = Account("alice");
+
1431 auto const bob = Account("bob");
+
1432 env.fund(XRP(10000), alice, bob);
+
1433 env.close();
+
1434
+
1435 auto const aliceSeq = env.seq(alice);
+
1436 auto const batchFee = batch::calcBatchFee(env, 9, 2);
+
1437 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1438 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1439 batch::inner(pay(alice, bob, XRP(5)), aliceSeq + 2),
+
1440 batch::sig(bob, bob, bob, bob, bob, bob, bob, bob, bob, bob),
+ +
1442 env.close();
+
1443 }
+
1444
+
1445 // temARRAY_TOO_LARGE: Batch: signers array exceeds 8 entries.
+
1446 {
+
1447 test::jtx::Env env{*this, features};
+
1448
+
1449 auto const alice = Account("alice");
+
1450 auto const bob = Account("bob");
+
1451 env.fund(XRP(10000), alice, bob);
+
1452 env.close();
+
1453
+
1454 auto const batchFee = batch::calcBatchFee(env, 0, 9);
+
1455 auto const aliceSeq = env.seq(alice);
+
1456 auto jt = env.jtnofill(
+
1457 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
1458 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
1459 batch::inner(pay(alice, bob, XRP(5)), aliceSeq + 2),
+
1460 batch::sig(bob, bob, bob, bob, bob, bob, bob, bob, bob, bob));
+
1461
+
1462 env.app().openLedger().modify(
+
1463 [&](OpenView& view, beast::Journal j) {
+
1464 auto const result =
+
1465 xrpl::apply(env.app(), view, *jt.stx, tapNONE, j);
+
1466 BEAST_EXPECT(
+
1467 !result.applied && result.ter == temARRAY_TOO_LARGE);
+
1468 return result.applied;
+
1469 });
+
1470 }
+
1471 }
+
1472
+
1473 void
+
+ +
1475 {
+
1476 testcase("all or nothing");
+
1477
+
1478 using namespace test::jtx;
+
1479 using namespace std::literals;
+
1480
+
1481 test::jtx::Env env{*this, features};
+
1482
+
1483 auto const alice = Account("alice");
+
1484 auto const bob = Account("bob");
+
1485 auto const gw = Account("gw");
+
1486 auto const USD = gw["USD"];
+
1487 env.fund(XRP(10000), alice, bob, gw);
+
1488 env.close();
+
1489
+
1490 // all
+
1491 {
+
1492 auto const preAlice = env.balance(alice);
+
1493 auto const preBob = env.balance(bob);
+
1494
+
1495 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1496 auto const seq = env.seq(alice);
+
1497 auto const [txIDs, batchID] = submitBatch(
+
1498 env,
+
1499 tesSUCCESS,
+
1500 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
1501 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1502 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
+
1503 env.close();
+
1504
+
1505 std::vector<TestLedgerData> testCases = {
+
1506 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1507 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
1508 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1509 };
+
1510 validateClosedLedger(env, testCases);
+
1511
+
1512 // Alice consumes sequences (# of txns)
+
1513 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
1514
+
1515 // Alice pays XRP & Fee; Bob receives XRP
+
1516 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
1517 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
1518 }
+
1519
+
1520 // tec failure
+
1521 {
+
1522 auto const preAlice = env.balance(alice);
+
1523 auto const preBob = env.balance(bob);
+
1524
+
1525 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1526 auto const seq = env.seq(alice);
+
1527
+
1528 auto const [txIDs, batchID] = submitBatch(
+
1529 env,
+
1530 tesSUCCESS,
+
1531 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
1532 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1533 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1534 batch::inner(pay(alice, bob, XRP(9999)), seq + 2));
+
1535 env.close();
+
1536
+
1537 std::vector<TestLedgerData> testCases = {
+
1538 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1539 };
+
1540 validateClosedLedger(env, testCases);
+
1541
+
1542 // Alice consumes sequence
+
1543 BEAST_EXPECT(env.seq(alice) == seq + 1);
+
1544
+
1545 // Alice pays Fee; Bob should not be affected
+
1546 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1547 BEAST_EXPECT(env.balance(bob) == preBob);
+
1548 }
+
1549
+
1550 // tef failure
+
1551 {
+
1552 auto const preAlice = env.balance(alice);
+
1553 auto const preBob = env.balance(bob);
+
1554
+
1555 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1556 auto const seq = env.seq(alice);
+
1557 auto const [txIDs, batchID] = submitBatch(
+
1558 env,
+
1559 tesSUCCESS,
+
1560 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
1561 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1562 // tefNO_AUTH_REQUIRED: trustline auth is not required
+
1563 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 2));
+
1564 env.close();
+
1565
+
1566 std::vector<TestLedgerData> testCases = {
+
1567 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1568 };
+
1569 validateClosedLedger(env, testCases);
+
1570
+
1571 // Alice consumes sequence
+
1572 BEAST_EXPECT(env.seq(alice) == seq + 1);
+
1573
+
1574 // Alice pays Fee; Bob should not be affected
+
1575 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1576 BEAST_EXPECT(env.balance(bob) == preBob);
+
1577 }
+
1578
+
1579 // ter failure
+
1580 {
+
1581 auto const preAlice = env.balance(alice);
+
1582 auto const preBob = env.balance(bob);
+
1583
+
1584 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
1585 auto const seq = env.seq(alice);
+
1586 auto const [txIDs, batchID] = submitBatch(
+
1587 env,
+
1588 tesSUCCESS,
+
1589 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
1590 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1591 // terPRE_TICKET: ticket does not exist
+
1592 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 2));
+
1593 env.close();
+
1594
+
1595 std::vector<TestLedgerData> testCases = {
+
1596 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1597 };
+
1598 validateClosedLedger(env, testCases);
+
1599
+
1600 // Alice consumes sequence
+
1601 BEAST_EXPECT(env.seq(alice) == seq + 1);
1602
-
1603 void
-
- -
1605 {
-
1606 testcase("only one");
-
1607
-
1608 using namespace test::jtx;
-
1609 using namespace std::literals;
-
1610
-
1611 test::jtx::Env env{*this, envconfig()};
-
1612
-
1613 auto const alice = Account("alice");
-
1614 auto const bob = Account("bob");
-
1615 auto const carol = Account("carol");
-
1616 auto const dave = Account("dave");
-
1617 auto const gw = Account("gw");
-
1618 auto const USD = gw["USD"];
-
1619 env.fund(XRP(10000), alice, bob, carol, dave, gw);
-
1620 env.close();
-
1621
-
1622 // all transactions fail
-
1623 {
-
1624 auto const preAlice = env.balance(alice);
-
1625 auto const preBob = env.balance(bob);
-
1626
-
1627 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
1628 auto const seq = env.seq(alice);
-
1629 auto const [txIDs, batchID] = submitBatch(
-
1630 env,
-
1631 tesSUCCESS,
-
1632 batch::outer(alice, seq, batchFee, tfOnlyOne),
-
1633 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1634 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
-
1635 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1636 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
-
1637 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1638 batch::inner(pay(alice, bob, XRP(9999)), seq + 3));
-
1639 env.close();
-
1640
-
1641 std::vector<TestLedgerData> testCases = {
-
1642 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1643 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
-
1644 {2, "Payment", "tecUNFUNDED_PAYMENT", txIDs[1], batchID},
-
1645 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
-
1646 };
-
1647 validateClosedLedger(env, testCases);
-
1648
-
1649 // Alice consumes sequences (# of txns)
-
1650 BEAST_EXPECT(env.seq(alice) == seq + 4);
-
1651
-
1652 // Alice pays XRP & Fee; Bob receives XRP
-
1653 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1654 BEAST_EXPECT(env.balance(bob) == preBob);
-
1655 }
-
1656
-
1657 // first transaction fails
-
1658 {
-
1659 auto const preAlice = env.balance(alice);
-
1660 auto const preBob = env.balance(bob);
-
1661
-
1662 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
1663 auto const seq = env.seq(alice);
-
1664 auto const [txIDs, batchID] = submitBatch(
-
1665 env,
-
1666 tesSUCCESS,
-
1667 batch::outer(alice, seq, batchFee, tfOnlyOne),
-
1668 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1669 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
-
1670 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
-
1671 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
1672 env.close();
-
1673
-
1674 std::vector<TestLedgerData> testCases = {
-
1675 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1676 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
-
1677 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1678 };
-
1679 validateClosedLedger(env, testCases);
-
1680
-
1681 // Alice consumes sequences (# of txns)
-
1682 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
1683
-
1684 // Alice pays XRP & Fee; Bob receives XRP
-
1685 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
-
1686 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
1687 }
-
1688
-
1689 // tec failure
-
1690 {
-
1691 auto const preAlice = env.balance(alice);
-
1692 auto const preBob = env.balance(bob);
-
1693
-
1694 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
1695 auto const seq = env.seq(alice);
-
1696 auto const [txIDs, batchID] = submitBatch(
-
1697 env,
-
1698 tesSUCCESS,
-
1699 batch::outer(alice, seq, batchFee, tfOnlyOne),
-
1700 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1701 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1702 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
-
1703 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
1704 env.close();
-
1705
-
1706 std::vector<TestLedgerData> testCases = {
-
1707 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1708 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
1709 };
-
1710 validateClosedLedger(env, testCases);
+
1603 // Alice pays Fee; Bob should not be affected
+
1604 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1605 BEAST_EXPECT(env.balance(bob) == preBob);
+
1606 }
+
1607 }
+
+
1608
+
1609 void
+
+ +
1611 {
+
1612 testcase("only one");
+
1613
+
1614 using namespace test::jtx;
+
1615 using namespace std::literals;
+
1616
+
1617 test::jtx::Env env{*this, features};
+
1618
+
1619 auto const alice = Account("alice");
+
1620 auto const bob = Account("bob");
+
1621 auto const carol = Account("carol");
+
1622 auto const dave = Account("dave");
+
1623 auto const gw = Account("gw");
+
1624 auto const USD = gw["USD"];
+
1625 env.fund(XRP(10000), alice, bob, carol, dave, gw);
+
1626 env.close();
+
1627
+
1628 // all transactions fail
+
1629 {
+
1630 auto const preAlice = env.balance(alice);
+
1631 auto const preBob = env.balance(bob);
+
1632
+
1633 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
1634 auto const seq = env.seq(alice);
+
1635 auto const [txIDs, batchID] = submitBatch(
+
1636 env,
+
1637 tesSUCCESS,
+
1638 batch::outer(alice, seq, batchFee, tfOnlyOne),
+
1639 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1640 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
+
1641 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1642 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
+
1643 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1644 batch::inner(pay(alice, bob, XRP(9999)), seq + 3));
+
1645 env.close();
+
1646
+
1647 std::vector<TestLedgerData> testCases = {
+
1648 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1649 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
+
1650 {2, "Payment", "tecUNFUNDED_PAYMENT", txIDs[1], batchID},
+
1651 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
+
1652 };
+
1653 validateClosedLedger(env, testCases);
+
1654
+
1655 // Alice consumes sequences (# of txns)
+
1656 BEAST_EXPECT(env.seq(alice) == seq + 4);
+
1657
+
1658 // Alice pays XRP & Fee; Bob receives XRP
+
1659 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1660 BEAST_EXPECT(env.balance(bob) == preBob);
+
1661 }
+
1662
+
1663 // first transaction fails
+
1664 {
+
1665 auto const preAlice = env.balance(alice);
+
1666 auto const preBob = env.balance(bob);
+
1667
+
1668 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
1669 auto const seq = env.seq(alice);
+
1670 auto const [txIDs, batchID] = submitBatch(
+
1671 env,
+
1672 tesSUCCESS,
+
1673 batch::outer(alice, seq, batchFee, tfOnlyOne),
+
1674 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1675 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
+
1676 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+
1677 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
1678 env.close();
+
1679
+
1680 std::vector<TestLedgerData> testCases = {
+
1681 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1682 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
+
1683 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1684 };
+
1685 validateClosedLedger(env, testCases);
+
1686
+
1687 // Alice consumes sequences (# of txns)
+
1688 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
1689
+
1690 // Alice pays XRP & Fee; Bob receives XRP
+
1691 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
+
1692 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
1693 }
+
1694
+
1695 // tec failure
+
1696 {
+
1697 auto const preAlice = env.balance(alice);
+
1698 auto const preBob = env.balance(bob);
+
1699
+
1700 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
1701 auto const seq = env.seq(alice);
+
1702 auto const [txIDs, batchID] = submitBatch(
+
1703 env,
+
1704 tesSUCCESS,
+
1705 batch::outer(alice, seq, batchFee, tfOnlyOne),
+
1706 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1707 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1708 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
+
1709 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
1710 env.close();
1711
-
1712 // Alice consumes sequences (# of txns)
-
1713 BEAST_EXPECT(env.seq(alice) == seq + 2);
-
1714
-
1715 // Alice pays XRP & Fee; Bob receives XRP
-
1716 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
-
1717 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
1718 }
-
1719
-
1720 // tef failure
-
1721 {
-
1722 auto const preAlice = env.balance(alice);
-
1723 auto const preBob = env.balance(bob);
-
1724
-
1725 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
1726 auto const seq = env.seq(alice);
-
1727 auto const [txIDs, batchID] = submitBatch(
-
1728 env,
-
1729 tesSUCCESS,
-
1730 batch::outer(alice, seq, batchFee, tfOnlyOne),
-
1731 // tefNO_AUTH_REQUIRED: trustline auth is not required
-
1732 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 1),
-
1733 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1734 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
1735 env.close();
-
1736
-
1737 std::vector<TestLedgerData> testCases = {
-
1738 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1739 {1, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1740 };
-
1741 validateClosedLedger(env, testCases);
+
1712 std::vector<TestLedgerData> testCases = {
+
1713 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1714 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
1715 };
+
1716 validateClosedLedger(env, testCases);
+
1717
+
1718 // Alice consumes sequences (# of txns)
+
1719 BEAST_EXPECT(env.seq(alice) == seq + 2);
+
1720
+
1721 // Alice pays XRP & Fee; Bob receives XRP
+
1722 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
+
1723 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
1724 }
+
1725
+
1726 // tef failure
+
1727 {
+
1728 auto const preAlice = env.balance(alice);
+
1729 auto const preBob = env.balance(bob);
+
1730
+
1731 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
1732 auto const seq = env.seq(alice);
+
1733 auto const [txIDs, batchID] = submitBatch(
+
1734 env,
+
1735 tesSUCCESS,
+
1736 batch::outer(alice, seq, batchFee, tfOnlyOne),
+
1737 // tefNO_AUTH_REQUIRED: trustline auth is not required
+
1738 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 1),
+
1739 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1740 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
1741 env.close();
1742
-
1743 // Alice consumes sequences (# of txns)
-
1744 BEAST_EXPECT(env.seq(alice) == seq + 2);
-
1745
-
1746 // Alice pays XRP & Fee; Bob receives XRP
-
1747 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(1));
-
1748 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
1749 }
-
1750
-
1751 // ter failure
-
1752 {
-
1753 auto const preAlice = env.balance(alice);
-
1754 auto const preBob = env.balance(bob);
-
1755
-
1756 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
1757 auto const seq = env.seq(alice);
-
1758 auto const [txIDs, batchID] = submitBatch(
-
1759 env,
-
1760 tesSUCCESS,
-
1761 batch::outer(alice, seq, batchFee, tfOnlyOne),
-
1762 // terPRE_TICKET: ticket does not exist
-
1763 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 1),
-
1764 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1765 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
1766 env.close();
-
1767
-
1768 std::vector<TestLedgerData> testCases = {
-
1769 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1770 {1, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1771 };
-
1772 validateClosedLedger(env, testCases);
+
1743 std::vector<TestLedgerData> testCases = {
+
1744 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1745 {1, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1746 };
+
1747 validateClosedLedger(env, testCases);
+
1748
+
1749 // Alice consumes sequences (# of txns)
+
1750 BEAST_EXPECT(env.seq(alice) == seq + 2);
+
1751
+
1752 // Alice pays XRP & Fee; Bob receives XRP
+
1753 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(1));
+
1754 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
1755 }
+
1756
+
1757 // ter failure
+
1758 {
+
1759 auto const preAlice = env.balance(alice);
+
1760 auto const preBob = env.balance(bob);
+
1761
+
1762 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
1763 auto const seq = env.seq(alice);
+
1764 auto const [txIDs, batchID] = submitBatch(
+
1765 env,
+
1766 tesSUCCESS,
+
1767 batch::outer(alice, seq, batchFee, tfOnlyOne),
+
1768 // terPRE_TICKET: ticket does not exist
+
1769 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 1),
+
1770 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1771 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
1772 env.close();
1773
-
1774 // Alice consumes sequences (# of txns)
-
1775 BEAST_EXPECT(env.seq(alice) == seq + 2);
-
1776
-
1777 // Alice pays XRP & Fee; Bob receives XRP
-
1778 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(1));
-
1779 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
1780 }
-
1781
-
1782 // tec (tecKILLED) error
-
1783 {
-
1784 auto const preAlice = env.balance(alice);
-
1785 auto const preBob = env.balance(bob);
-
1786 auto const preCarol = env.balance(carol);
-
1787 auto const seq = env.seq(alice);
-
1788 auto const batchFee = batch::calcBatchFee(env, 0, 6);
-
1789
-
1790 auto const [txIDs, batchID] = submitBatch(
-
1791 env,
-
1792 tesSUCCESS,
-
1793 batch::outer(alice, seq, batchFee, tfOnlyOne),
- -
1795 offer(
-
1796 alice,
-
1797 alice["USD"](100),
-
1798 XRP(100),
- -
1800 seq + 1),
- -
1802 offer(
-
1803 alice,
-
1804 alice["USD"](100),
-
1805 XRP(100),
- -
1807 seq + 2),
- -
1809 offer(
-
1810 alice,
-
1811 alice["USD"](100),
-
1812 XRP(100),
- -
1814 seq + 3),
-
1815 batch::inner(pay(alice, bob, XRP(100)), seq + 4),
-
1816 batch::inner(pay(alice, carol, XRP(100)), seq + 5),
-
1817 batch::inner(pay(alice, dave, XRP(100)), seq + 6));
-
1818 env.close();
-
1819
-
1820 std::vector<TestLedgerData> testCases = {
-
1821 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1822 {1, "OfferCreate", "tecKILLED", txIDs[0], batchID},
-
1823 {2, "OfferCreate", "tecKILLED", txIDs[1], batchID},
-
1824 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
-
1825 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
1826 };
-
1827 validateClosedLedger(env, testCases);
-
1828
-
1829 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(100) - batchFee);
-
1830 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
-
1831 BEAST_EXPECT(env.balance(carol) == preCarol);
-
1832 }
-
1833 }
-
+
1774 std::vector<TestLedgerData> testCases = {
+
1775 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1776 {1, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1777 };
+
1778 validateClosedLedger(env, testCases);
+
1779
+
1780 // Alice consumes sequences (# of txns)
+
1781 BEAST_EXPECT(env.seq(alice) == seq + 2);
+
1782
+
1783 // Alice pays XRP & Fee; Bob receives XRP
+
1784 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(1));
+
1785 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
1786 }
+
1787
+
1788 // tec (tecKILLED) error
+
1789 {
+
1790 auto const preAlice = env.balance(alice);
+
1791 auto const preBob = env.balance(bob);
+
1792 auto const preCarol = env.balance(carol);
+
1793 auto const seq = env.seq(alice);
+
1794 auto const batchFee = batch::calcBatchFee(env, 0, 6);
+
1795
+
1796 auto const [txIDs, batchID] = submitBatch(
+
1797 env,
+
1798 tesSUCCESS,
+
1799 batch::outer(alice, seq, batchFee, tfOnlyOne),
+ +
1801 offer(
+
1802 alice,
+
1803 alice["USD"](100),
+
1804 XRP(100),
+ +
1806 seq + 1),
+ +
1808 offer(
+
1809 alice,
+
1810 alice["USD"](100),
+
1811 XRP(100),
+ +
1813 seq + 2),
+ +
1815 offer(
+
1816 alice,
+
1817 alice["USD"](100),
+
1818 XRP(100),
+ +
1820 seq + 3),
+
1821 batch::inner(pay(alice, bob, XRP(100)), seq + 4),
+
1822 batch::inner(pay(alice, carol, XRP(100)), seq + 5),
+
1823 batch::inner(pay(alice, dave, XRP(100)), seq + 6));
+
1824 env.close();
+
1825
+
1826 std::vector<TestLedgerData> testCases = {
+
1827 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1828 {1, "OfferCreate", "tecKILLED", txIDs[0], batchID},
+
1829 {2, "OfferCreate", "tecKILLED", txIDs[1], batchID},
+
1830 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
+
1831 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
1832 };
+
1833 validateClosedLedger(env, testCases);
1834
-
1835 void
-
- -
1837 {
-
1838 testcase("until failure");
-
1839
-
1840 using namespace test::jtx;
-
1841 using namespace std::literals;
-
1842
-
1843 test::jtx::Env env{*this, envconfig()};
-
1844
-
1845 auto const alice = Account("alice");
-
1846 auto const bob = Account("bob");
-
1847 auto const carol = Account("carol");
-
1848 auto const dave = Account("dave");
-
1849 auto const gw = Account("gw");
-
1850 auto const USD = gw["USD"];
-
1851 env.fund(XRP(10000), alice, bob, carol, dave, gw);
-
1852 env.close();
-
1853
-
1854 // first transaction fails
-
1855 {
-
1856 auto const preAlice = env.balance(alice);
-
1857 auto const preBob = env.balance(bob);
-
1858
-
1859 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
1860 auto const seq = env.seq(alice);
-
1861 auto const [txIDs, batchID] = submitBatch(
-
1862 env,
-
1863 tesSUCCESS,
-
1864 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
1865 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1866 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
-
1867 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
-
1868 batch::inner(pay(alice, bob, XRP(2)), seq + 3),
-
1869 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
1870 env.close();
-
1871
-
1872 std::vector<TestLedgerData> testCases = {
-
1873 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1874 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
-
1875 };
-
1876 validateClosedLedger(env, testCases);
+
1835 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(100) - batchFee);
+
1836 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
+
1837 BEAST_EXPECT(env.balance(carol) == preCarol);
+
1838 }
+
1839 }
+
+
1840
+
1841 void
+
+ +
1843 {
+
1844 testcase("until failure");
+
1845
+
1846 using namespace test::jtx;
+
1847 using namespace std::literals;
+
1848
+
1849 test::jtx::Env env{*this, features};
+
1850
+
1851 auto const alice = Account("alice");
+
1852 auto const bob = Account("bob");
+
1853 auto const carol = Account("carol");
+
1854 auto const dave = Account("dave");
+
1855 auto const gw = Account("gw");
+
1856 auto const USD = gw["USD"];
+
1857 env.fund(XRP(10000), alice, bob, carol, dave, gw);
+
1858 env.close();
+
1859
+
1860 // first transaction fails
+
1861 {
+
1862 auto const preAlice = env.balance(alice);
+
1863 auto const preBob = env.balance(bob);
+
1864
+
1865 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
1866 auto const seq = env.seq(alice);
+
1867 auto const [txIDs, batchID] = submitBatch(
+
1868 env,
+
1869 tesSUCCESS,
+
1870 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
1871 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1872 batch::inner(pay(alice, bob, XRP(9999)), seq + 1),
+
1873 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+
1874 batch::inner(pay(alice, bob, XRP(2)), seq + 3),
+
1875 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
1876 env.close();
1877
-
1878 // Alice consumes sequences (# of txns)
-
1879 BEAST_EXPECT(env.seq(alice) == seq + 2);
-
1880
-
1881 // Alice pays XRP & Fee; Bob receives XRP
-
1882 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
1883 BEAST_EXPECT(env.balance(bob) == preBob);
-
1884 }
-
1885
-
1886 // all transactions succeed
-
1887 {
-
1888 auto const preAlice = env.balance(alice);
-
1889 auto const preBob = env.balance(bob);
-
1890
-
1891 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
1892 auto const seq = env.seq(alice);
-
1893 auto const [txIDs, batchID] = submitBatch(
-
1894 env,
-
1895 tesSUCCESS,
-
1896 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
1897 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1898 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
1899 batch::inner(pay(alice, bob, XRP(3)), seq + 3),
-
1900 batch::inner(pay(alice, bob, XRP(4)), seq + 4));
-
1901 env.close();
-
1902
-
1903 std::vector<TestLedgerData> testCases = {
-
1904 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1905 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
1906 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1907 {3, "Payment", "tesSUCCESS", txIDs[2], batchID},
-
1908 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
1909 };
-
1910 validateClosedLedger(env, testCases);
-
1911
-
1912 // Alice consumes sequences (# of txns)
-
1913 BEAST_EXPECT(env.seq(alice) == seq + 5);
-
1914
-
1915 // Alice pays XRP & Fee; Bob receives XRP
-
1916 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(10) - batchFee);
-
1917 BEAST_EXPECT(env.balance(bob) == preBob + XRP(10));
-
1918 }
-
1919
-
1920 // tec error
-
1921 {
-
1922 auto const preAlice = env.balance(alice);
-
1923 auto const preBob = env.balance(bob);
-
1924
-
1925 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
1926 auto const seq = env.seq(alice);
-
1927 auto const [txIDs, batchID] = submitBatch(
-
1928 env,
-
1929 tesSUCCESS,
-
1930 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
1931 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1932 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
1933 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
1934 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
-
1935 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
1936 env.close();
-
1937
-
1938 std::vector<TestLedgerData> testCases = {
-
1939 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1940 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
1941 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1942 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
-
1943 };
-
1944 validateClosedLedger(env, testCases);
-
1945
-
1946 // Alice consumes sequences (# of txns)
-
1947 BEAST_EXPECT(env.seq(alice) == seq + 4);
-
1948
-
1949 // Alice pays XRP & Fee; Bob receives XRP
-
1950 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
1951 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
1952 }
-
1953
-
1954 // tef error
-
1955 {
-
1956 auto const preAlice = env.balance(alice);
-
1957 auto const preBob = env.balance(bob);
-
1958
-
1959 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
1960 auto const seq = env.seq(alice);
-
1961 auto const [txIDs, batchID] = submitBatch(
-
1962 env,
-
1963 tesSUCCESS,
-
1964 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
1965 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1966 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
1967 // tefNO_AUTH_REQUIRED: trustline auth is not required
-
1968 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 3),
-
1969 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
1970 env.close();
-
1971
-
1972 std::vector<TestLedgerData> testCases = {
-
1973 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
1974 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
1975 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
1976 };
-
1977 validateClosedLedger(env, testCases);
-
1978
-
1979 // Alice consumes sequences (# of txns)
-
1980 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
1981
-
1982 // Alice pays XRP & Fee; Bob receives XRP
-
1983 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
1984 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
1985 }
-
1986
-
1987 // ter error
-
1988 {
-
1989 auto const preAlice = env.balance(alice);
-
1990 auto const preBob = env.balance(bob);
-
1991
-
1992 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
1993 auto const seq = env.seq(alice);
-
1994 auto const [txIDs, batchID] = submitBatch(
-
1995 env,
-
1996 tesSUCCESS,
-
1997 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
1998 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
1999 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
2000 // terPRE_TICKET: ticket does not exist
-
2001 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 3),
-
2002 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
2003 env.close();
-
2004
-
2005 std::vector<TestLedgerData> testCases = {
-
2006 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2007 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2008 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2009 };
-
2010 validateClosedLedger(env, testCases);
-
2011
-
2012 // Alice consumes sequences (# of txns)
-
2013 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
2014
-
2015 // Alice pays XRP & Fee; Bob receives XRP
-
2016 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
2017 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
2018 }
-
2019
-
2020 // tec (tecKILLED) error
-
2021 {
-
2022 auto const preAlice = env.balance(alice);
-
2023 auto const preBob = env.balance(bob);
-
2024 auto const preCarol = env.balance(carol);
-
2025 auto const seq = env.seq(alice);
-
2026 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
2027 auto const [txIDs, batchID] = submitBatch(
-
2028 env,
-
2029 tesSUCCESS,
-
2030 batch::outer(alice, seq, batchFee, tfUntilFailure),
-
2031 batch::inner(pay(alice, bob, XRP(100)), seq + 1),
-
2032 batch::inner(pay(alice, carol, XRP(100)), seq + 2),
- -
2034 offer(
-
2035 alice,
-
2036 alice["USD"](100),
-
2037 XRP(100),
- -
2039 seq + 3),
-
2040 batch::inner(pay(alice, dave, XRP(100)), seq + 4));
-
2041 env.close();
-
2042
-
2043 std::vector<TestLedgerData> testCases = {
-
2044 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2045 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2046 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2047 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
-
2048 };
-
2049 validateClosedLedger(env, testCases);
-
2050
-
2051 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(200) - batchFee);
-
2052 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
-
2053 BEAST_EXPECT(env.balance(carol) == preCarol + XRP(100));
-
2054 }
-
2055 }
-
+
1878 std::vector<TestLedgerData> testCases = {
+
1879 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1880 {1, "Payment", "tecUNFUNDED_PAYMENT", txIDs[0], batchID},
+
1881 };
+
1882 validateClosedLedger(env, testCases);
+
1883
+
1884 // Alice consumes sequences (# of txns)
+
1885 BEAST_EXPECT(env.seq(alice) == seq + 2);
+
1886
+
1887 // Alice pays XRP & Fee; Bob receives XRP
+
1888 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
1889 BEAST_EXPECT(env.balance(bob) == preBob);
+
1890 }
+
1891
+
1892 // all transactions succeed
+
1893 {
+
1894 auto const preAlice = env.balance(alice);
+
1895 auto const preBob = env.balance(bob);
+
1896
+
1897 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
1898 auto const seq = env.seq(alice);
+
1899 auto const [txIDs, batchID] = submitBatch(
+
1900 env,
+
1901 tesSUCCESS,
+
1902 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
1903 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1904 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
1905 batch::inner(pay(alice, bob, XRP(3)), seq + 3),
+
1906 batch::inner(pay(alice, bob, XRP(4)), seq + 4));
+
1907 env.close();
+
1908
+
1909 std::vector<TestLedgerData> testCases = {
+
1910 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1911 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
1912 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1913 {3, "Payment", "tesSUCCESS", txIDs[2], batchID},
+
1914 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
1915 };
+
1916 validateClosedLedger(env, testCases);
+
1917
+
1918 // Alice consumes sequences (# of txns)
+
1919 BEAST_EXPECT(env.seq(alice) == seq + 5);
+
1920
+
1921 // Alice pays XRP & Fee; Bob receives XRP
+
1922 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(10) - batchFee);
+
1923 BEAST_EXPECT(env.balance(bob) == preBob + XRP(10));
+
1924 }
+
1925
+
1926 // tec error
+
1927 {
+
1928 auto const preAlice = env.balance(alice);
+
1929 auto const preBob = env.balance(bob);
+
1930
+
1931 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
1932 auto const seq = env.seq(alice);
+
1933 auto const [txIDs, batchID] = submitBatch(
+
1934 env,
+
1935 tesSUCCESS,
+
1936 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
1937 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1938 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
1939 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
1940 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
+
1941 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
1942 env.close();
+
1943
+
1944 std::vector<TestLedgerData> testCases = {
+
1945 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1946 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
1947 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1948 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
+
1949 };
+
1950 validateClosedLedger(env, testCases);
+
1951
+
1952 // Alice consumes sequences (# of txns)
+
1953 BEAST_EXPECT(env.seq(alice) == seq + 4);
+
1954
+
1955 // Alice pays XRP & Fee; Bob receives XRP
+
1956 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
1957 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
1958 }
+
1959
+
1960 // tef error
+
1961 {
+
1962 auto const preAlice = env.balance(alice);
+
1963 auto const preBob = env.balance(bob);
+
1964
+
1965 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
1966 auto const seq = env.seq(alice);
+
1967 auto const [txIDs, batchID] = submitBatch(
+
1968 env,
+
1969 tesSUCCESS,
+
1970 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
1971 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
1972 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
1973 // tefNO_AUTH_REQUIRED: trustline auth is not required
+
1974 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 3),
+
1975 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
1976 env.close();
+
1977
+
1978 std::vector<TestLedgerData> testCases = {
+
1979 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
1980 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
1981 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
1982 };
+
1983 validateClosedLedger(env, testCases);
+
1984
+
1985 // Alice consumes sequences (# of txns)
+
1986 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
1987
+
1988 // Alice pays XRP & Fee; Bob receives XRP
+
1989 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
1990 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
1991 }
+
1992
+
1993 // ter error
+
1994 {
+
1995 auto const preAlice = env.balance(alice);
+
1996 auto const preBob = env.balance(bob);
+
1997
+
1998 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
1999 auto const seq = env.seq(alice);
+
2000 auto const [txIDs, batchID] = submitBatch(
+
2001 env,
+
2002 tesSUCCESS,
+
2003 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
2004 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2005 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
2006 // terPRE_TICKET: ticket does not exist
+
2007 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 3),
+
2008 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
2009 env.close();
+
2010
+
2011 std::vector<TestLedgerData> testCases = {
+
2012 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2013 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2014 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2015 };
+
2016 validateClosedLedger(env, testCases);
+
2017
+
2018 // Alice consumes sequences (# of txns)
+
2019 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
2020
+
2021 // Alice pays XRP & Fee; Bob receives XRP
+
2022 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
2023 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
2024 }
+
2025
+
2026 // tec (tecKILLED) error
+
2027 {
+
2028 auto const preAlice = env.balance(alice);
+
2029 auto const preBob = env.balance(bob);
+
2030 auto const preCarol = env.balance(carol);
+
2031 auto const seq = env.seq(alice);
+
2032 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
2033 auto const [txIDs, batchID] = submitBatch(
+
2034 env,
+
2035 tesSUCCESS,
+
2036 batch::outer(alice, seq, batchFee, tfUntilFailure),
+
2037 batch::inner(pay(alice, bob, XRP(100)), seq + 1),
+
2038 batch::inner(pay(alice, carol, XRP(100)), seq + 2),
+ +
2040 offer(
+
2041 alice,
+
2042 alice["USD"](100),
+
2043 XRP(100),
+ +
2045 seq + 3),
+
2046 batch::inner(pay(alice, dave, XRP(100)), seq + 4));
+
2047 env.close();
+
2048
+
2049 std::vector<TestLedgerData> testCases = {
+
2050 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2051 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2052 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2053 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
+
2054 };
+
2055 validateClosedLedger(env, testCases);
2056
-
2057 void
-
- -
2059 {
-
2060 testcase("independent");
-
2061
-
2062 using namespace test::jtx;
-
2063 using namespace std::literals;
-
2064
-
2065 test::jtx::Env env{*this, envconfig()};
-
2066
-
2067 auto const alice = Account("alice");
-
2068 auto const bob = Account("bob");
-
2069 auto const carol = Account("carol");
-
2070 auto const gw = Account("gw");
-
2071 auto const USD = gw["USD"];
-
2072 env.fund(XRP(10000), alice, bob, carol, gw);
-
2073 env.close();
-
2074
-
2075 // multiple transactions fail
-
2076 {
-
2077 auto const preAlice = env.balance(alice);
-
2078 auto const preBob = env.balance(bob);
-
2079
-
2080 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
2081 auto const seq = env.seq(alice);
-
2082 auto const [txIDs, batchID] = submitBatch(
-
2083 env,
-
2084 tesSUCCESS,
-
2085 batch::outer(alice, seq, batchFee, tfIndependent),
-
2086 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2087 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
2088 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
-
2089 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
2090 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
-
2091 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
2092 env.close();
-
2093
-
2094 std::vector<TestLedgerData> testCases = {
-
2095 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2096 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2097 {2, "Payment", "tecUNFUNDED_PAYMENT", txIDs[1], batchID},
-
2098 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
-
2099 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
2100 };
-
2101 validateClosedLedger(env, testCases);
-
2102
-
2103 // Alice consumes sequences (# of txns)
-
2104 BEAST_EXPECT(env.seq(alice) == seq + 5);
-
2105
-
2106 // Alice pays XRP & Fee; Bob receives XRP
-
2107 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(4) - batchFee);
-
2108 BEAST_EXPECT(env.balance(bob) == preBob + XRP(4));
-
2109 }
-
2110
-
2111 // tec error
-
2112 {
-
2113 auto const preAlice = env.balance(alice);
-
2114 auto const preBob = env.balance(bob);
-
2115
-
2116 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
2117 auto const seq = env.seq(alice);
-
2118 auto const [txIDs, batchID] = submitBatch(
-
2119 env,
-
2120 tesSUCCESS,
-
2121 batch::outer(alice, seq, batchFee, tfIndependent),
-
2122 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2123 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
2124 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
-
2125 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
-
2126 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
-
2127 env.close();
-
2128
-
2129 std::vector<TestLedgerData> testCases = {
-
2130 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2131 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2132 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2133 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
-
2134 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
2135 };
-
2136 validateClosedLedger(env, testCases);
-
2137
-
2138 // Alice consumes sequences (# of txns)
-
2139 BEAST_EXPECT(env.seq(alice) == seq + 5);
-
2140
-
2141 // Alice pays XRP & Fee; Bob receives XRP
-
2142 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(6) - batchFee);
-
2143 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
-
2144 }
-
2145
-
2146 // tef error
-
2147 {
-
2148 auto const preAlice = env.balance(alice);
-
2149 auto const preBob = env.balance(bob);
-
2150
-
2151 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
2152 auto const seq = env.seq(alice);
-
2153 auto const [txIDs, batchID] = submitBatch(
-
2154 env,
-
2155 tesSUCCESS,
-
2156 batch::outer(alice, seq, batchFee, tfIndependent),
-
2157 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2158 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
2159 // tefNO_AUTH_REQUIRED: trustline auth is not required
-
2160 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 3),
-
2161 batch::inner(pay(alice, bob, XRP(3)), seq + 3));
-
2162 env.close();
-
2163
-
2164 std::vector<TestLedgerData> testCases = {
-
2165 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2166 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2167 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2168 {3, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
2169 };
-
2170 validateClosedLedger(env, testCases);
-
2171
-
2172 // Alice consumes sequences (# of txns)
-
2173 BEAST_EXPECT(env.seq(alice) == seq + 4);
-
2174
-
2175 // Alice pays XRP & Fee; Bob receives XRP
-
2176 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(6));
-
2177 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
-
2178 }
-
2179
-
2180 // ter error
-
2181 {
-
2182 auto const preAlice = env.balance(alice);
-
2183 auto const preBob = env.balance(bob);
-
2184
-
2185 auto const batchFee = batch::calcBatchFee(env, 0, 4);
-
2186 auto const seq = env.seq(alice);
-
2187 auto const [txIDs, batchID] = submitBatch(
-
2188 env,
-
2189 tesSUCCESS,
-
2190 batch::outer(alice, seq, batchFee, tfIndependent),
-
2191 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2192 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
-
2193 // terPRE_TICKET: ticket does not exist
-
2194 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 3),
-
2195 batch::inner(pay(alice, bob, XRP(3)), seq + 3));
-
2196 env.close();
-
2197
-
2198 std::vector<TestLedgerData> testCases = {
-
2199 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2200 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2201 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2202 {3, "Payment", "tesSUCCESS", txIDs[3], batchID},
-
2203 };
-
2204 validateClosedLedger(env, testCases);
-
2205
-
2206 // Alice consumes sequences (# of txns)
-
2207 BEAST_EXPECT(env.seq(alice) == seq + 4);
-
2208
-
2209 // Alice pays XRP & Fee; Bob receives XRP
-
2210 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(6));
-
2211 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
-
2212 }
-
2213
-
2214 // tec (tecKILLED) error
-
2215 {
-
2216 auto const preAlice = env.balance(alice);
-
2217 auto const preBob = env.balance(bob);
-
2218 auto const preCarol = env.balance(carol);
-
2219 auto const seq = env.seq(alice);
-
2220 auto const batchFee = batch::calcBatchFee(env, 0, 3);
-
2221 auto const [txIDs, batchID] = submitBatch(
-
2222 env,
-
2223 tesSUCCESS,
-
2224 batch::outer(alice, seq, batchFee, tfIndependent),
-
2225 batch::inner(pay(alice, bob, XRP(100)), seq + 1),
-
2226 batch::inner(pay(alice, carol, XRP(100)), seq + 2),
- -
2228 offer(
-
2229 alice,
-
2230 alice["USD"](100),
-
2231 XRP(100),
- -
2233 seq + 3));
-
2234 env.close();
-
2235
-
2236 std::vector<TestLedgerData> testCases = {
-
2237 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2238 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2239 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2240 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
-
2241 };
-
2242 validateClosedLedger(env, testCases);
-
2243
-
2244 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(200) - batchFee);
-
2245 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
-
2246 BEAST_EXPECT(env.balance(carol) == preCarol + XRP(100));
-
2247 }
-
2248 }
+
2057 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(200) - batchFee);
+
2058 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
+
2059 BEAST_EXPECT(env.balance(carol) == preCarol + XRP(100));
+
2060 }
+
2061 }
+
2062
+
2063 void
+
+ +
2065 {
+
2066 testcase("independent");
+
2067
+
2068 using namespace test::jtx;
+
2069 using namespace std::literals;
+
2070
+
2071 test::jtx::Env env{*this, features};
+
2072
+
2073 auto const alice = Account("alice");
+
2074 auto const bob = Account("bob");
+
2075 auto const carol = Account("carol");
+
2076 auto const gw = Account("gw");
+
2077 auto const USD = gw["USD"];
+
2078 env.fund(XRP(10000), alice, bob, carol, gw);
+
2079 env.close();
+
2080
+
2081 // multiple transactions fail
+
2082 {
+
2083 auto const preAlice = env.balance(alice);
+
2084 auto const preBob = env.balance(bob);
+
2085
+
2086 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
2087 auto const seq = env.seq(alice);
+
2088 auto const [txIDs, batchID] = submitBatch(
+
2089 env,
+
2090 tesSUCCESS,
+
2091 batch::outer(alice, seq, batchFee, tfIndependent),
+
2092 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2093 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
2094 batch::inner(pay(alice, bob, XRP(9999)), seq + 2),
+
2095 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
2096 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
+
2097 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
2098 env.close();
+
2099
+
2100 std::vector<TestLedgerData> testCases = {
+
2101 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2102 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2103 {2, "Payment", "tecUNFUNDED_PAYMENT", txIDs[1], batchID},
+
2104 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
+
2105 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
2106 };
+
2107 validateClosedLedger(env, testCases);
+
2108
+
2109 // Alice consumes sequences (# of txns)
+
2110 BEAST_EXPECT(env.seq(alice) == seq + 5);
+
2111
+
2112 // Alice pays XRP & Fee; Bob receives XRP
+
2113 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(4) - batchFee);
+
2114 BEAST_EXPECT(env.balance(bob) == preBob + XRP(4));
+
2115 }
+
2116
+
2117 // tec error
+
2118 {
+
2119 auto const preAlice = env.balance(alice);
+
2120 auto const preBob = env.balance(bob);
+
2121
+
2122 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
2123 auto const seq = env.seq(alice);
+
2124 auto const [txIDs, batchID] = submitBatch(
+
2125 env,
+
2126 tesSUCCESS,
+
2127 batch::outer(alice, seq, batchFee, tfIndependent),
+
2128 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2129 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
2130 // tecUNFUNDED_PAYMENT: alice does not have enough XRP
+
2131 batch::inner(pay(alice, bob, XRP(9999)), seq + 3),
+
2132 batch::inner(pay(alice, bob, XRP(3)), seq + 4));
+
2133 env.close();
+
2134
+
2135 std::vector<TestLedgerData> testCases = {
+
2136 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2137 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2138 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2139 {3, "Payment", "tecUNFUNDED_PAYMENT", txIDs[2], batchID},
+
2140 {4, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
2141 };
+
2142 validateClosedLedger(env, testCases);
+
2143
+
2144 // Alice consumes sequences (# of txns)
+
2145 BEAST_EXPECT(env.seq(alice) == seq + 5);
+
2146
+
2147 // Alice pays XRP & Fee; Bob receives XRP
+
2148 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(6) - batchFee);
+
2149 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
+
2150 }
+
2151
+
2152 // tef error
+
2153 {
+
2154 auto const preAlice = env.balance(alice);
+
2155 auto const preBob = env.balance(bob);
+
2156
+
2157 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
2158 auto const seq = env.seq(alice);
+
2159 auto const [txIDs, batchID] = submitBatch(
+
2160 env,
+
2161 tesSUCCESS,
+
2162 batch::outer(alice, seq, batchFee, tfIndependent),
+
2163 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2164 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
2165 // tefNO_AUTH_REQUIRED: trustline auth is not required
+
2166 batch::inner(trust(alice, USD(1000), tfSetfAuth), seq + 3),
+
2167 batch::inner(pay(alice, bob, XRP(3)), seq + 3));
+
2168 env.close();
+
2169
+
2170 std::vector<TestLedgerData> testCases = {
+
2171 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2172 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2173 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2174 {3, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
2175 };
+
2176 validateClosedLedger(env, testCases);
+
2177
+
2178 // Alice consumes sequences (# of txns)
+
2179 BEAST_EXPECT(env.seq(alice) == seq + 4);
+
2180
+
2181 // Alice pays XRP & Fee; Bob receives XRP
+
2182 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(6));
+
2183 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
+
2184 }
+
2185
+
2186 // ter error
+
2187 {
+
2188 auto const preAlice = env.balance(alice);
+
2189 auto const preBob = env.balance(bob);
+
2190
+
2191 auto const batchFee = batch::calcBatchFee(env, 0, 4);
+
2192 auto const seq = env.seq(alice);
+
2193 auto const [txIDs, batchID] = submitBatch(
+
2194 env,
+
2195 tesSUCCESS,
+
2196 batch::outer(alice, seq, batchFee, tfIndependent),
+
2197 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2198 batch::inner(pay(alice, bob, XRP(2)), seq + 2),
+
2199 // terPRE_TICKET: ticket does not exist
+
2200 batch::inner(trust(alice, USD(1000), tfSetfAuth), 0, seq + 3),
+
2201 batch::inner(pay(alice, bob, XRP(3)), seq + 3));
+
2202 env.close();
+
2203
+
2204 std::vector<TestLedgerData> testCases = {
+
2205 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2206 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2207 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2208 {3, "Payment", "tesSUCCESS", txIDs[3], batchID},
+
2209 };
+
2210 validateClosedLedger(env, testCases);
+
2211
+
2212 // Alice consumes sequences (# of txns)
+
2213 BEAST_EXPECT(env.seq(alice) == seq + 4);
+
2214
+
2215 // Alice pays XRP & Fee; Bob receives XRP
+
2216 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee - XRP(6));
+
2217 BEAST_EXPECT(env.balance(bob) == preBob + XRP(6));
+
2218 }
+
2219
+
2220 // tec (tecKILLED) error
+
2221 {
+
2222 auto const preAlice = env.balance(alice);
+
2223 auto const preBob = env.balance(bob);
+
2224 auto const preCarol = env.balance(carol);
+
2225 auto const seq = env.seq(alice);
+
2226 auto const batchFee = batch::calcBatchFee(env, 0, 3);
+
2227 auto const [txIDs, batchID] = submitBatch(
+
2228 env,
+
2229 tesSUCCESS,
+
2230 batch::outer(alice, seq, batchFee, tfIndependent),
+
2231 batch::inner(pay(alice, bob, XRP(100)), seq + 1),
+
2232 batch::inner(pay(alice, carol, XRP(100)), seq + 2),
+ +
2234 offer(
+
2235 alice,
+
2236 alice["USD"](100),
+
2237 XRP(100),
+ +
2239 seq + 3));
+
2240 env.close();
+
2241
+
2242 std::vector<TestLedgerData> testCases = {
+
2243 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2244 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2245 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2246 {3, "OfferCreate", "tecKILLED", txIDs[2], batchID},
+
2247 };
+
2248 validateClosedLedger(env, testCases);
2249
-
2250 void
-
- -
2252 {
-
2253 testcase("inner submit rpc");
-
2254
-
2255 using namespace test::jtx;
-
2256 using namespace std::literals;
-
2257
-
2258 test::jtx::Env env{*this, envconfig()};
-
2259
-
2260 auto const alice = Account("alice");
-
2261 auto const bob = Account("bob");
-
2262
-
2263 env.fund(XRP(10000), alice, bob);
-
2264 env.close();
-
2265
-
2266 auto submitAndValidate = [&](Slice const& slice) {
-
2267 auto const jrr = env.rpc("submit", strHex(slice))[jss::result];
-
2268 BEAST_EXPECT(
-
2269 jrr[jss::status] == "error" &&
-
2270 jrr[jss::error] == "invalidTransaction" &&
-
2271 jrr[jss::error_exception] ==
-
2272 "fails local checks: Malformed: Invalid inner batch "
-
2273 "transaction.");
-
2274 env.close();
-
2275 };
-
2276
-
2277 // Invalid RPC Submission: TxnSignature
-
2278 // - has `TxnSignature` field
-
2279 // - has no `SigningPubKey` field
-
2280 // - has no `Signers` field
-
2281 // - has `tfInnerBatchTxn` flag
-
2282 {
-
2283 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
-
2284 txn[sfTxnSignature] = "DEADBEEF";
-
2285 STParsedJSONObject parsed("test", txn.getTxn());
-
2286 Serializer s;
-
2287 parsed.object->add(s);
-
2288 submitAndValidate(s.slice());
-
2289 }
-
2290
-
2291 // Invalid RPC Submission: SigningPubKey
-
2292 // - has no `TxnSignature` field
-
2293 // - has `SigningPubKey` field
-
2294 // - has no `Signers` field
-
2295 // - has `tfInnerBatchTxn` flag
-
2296 {
-
2297 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
-
2298 txn[sfSigningPubKey] = strHex(alice.pk());
-
2299 STParsedJSONObject parsed("test", txn.getTxn());
-
2300 Serializer s;
-
2301 parsed.object->add(s);
-
2302 submitAndValidate(s.slice());
-
2303 }
-
2304
-
2305 // Invalid RPC Submission: Signers
-
2306 // - has no `TxnSignature` field
-
2307 // - has empty `SigningPubKey` field
-
2308 // - has `Signers` field
-
2309 // - has `tfInnerBatchTxn` flag
-
2310 {
-
2311 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
-
2312 txn[sfSigners] = Json::arrayValue;
-
2313 STParsedJSONObject parsed("test", txn.getTxn());
-
2314 Serializer s;
-
2315 parsed.object->add(s);
-
2316 submitAndValidate(s.slice());
-
2317 }
-
2318
-
2319 // Invalid RPC Submission: tfInnerBatchTxn
-
2320 // - has no `TxnSignature` field
-
2321 // - has empty `SigningPubKey` field
-
2322 // - has no `Signers` field
-
2323 // - has `tfInnerBatchTxn` flag
-
2324 {
-
2325 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
-
2326 STParsedJSONObject parsed("test", txn.getTxn());
-
2327 Serializer s;
-
2328 parsed.object->add(s);
-
2329 auto const jrr = env.rpc("submit", strHex(s.slice()))[jss::result];
-
2330 BEAST_EXPECT(
-
2331 jrr[jss::status] == "success" &&
-
2332 jrr[jss::engine_result] == "temINVALID_FLAG");
-
2333
-
2334 env.close();
-
2335 }
-
2336 }
+
2250 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(200) - batchFee);
+
2251 BEAST_EXPECT(env.balance(bob) == preBob + XRP(100));
+
2252 BEAST_EXPECT(env.balance(carol) == preCarol + XRP(100));
+
2253 }
+
2254 }
+
2255
+
2256 void
+
+
2257 doTestInnerSubmitRPC(FeatureBitset features, bool withBatch)
+
2258 {
+
2259 bool const withInnerSigFix = features[fixBatchInnerSigs];
+
2260
+
2261 std::string const testName = [&]() {
+ +
2263 ss << "inner submit rpc: batch "
+
2264 << (withBatch ? "enabled" : "disabled") << ", inner sig fix: "
+
2265 << (withInnerSigFix ? "enabled" : "disabled") << ": ";
+
2266 return ss.str();
+
2267 }();
+
2268
+
2269 auto const amend = withBatch ? features : features - featureBatch;
+
2270
+
2271 using namespace test::jtx;
+
2272 using namespace std::literals;
+
2273
+
2274 test::jtx::Env env{*this, amend};
+
2275 if (!BEAST_EXPECT(amend[featureBatch] == withBatch))
+
2276 return;
+
2277
+
2278 auto const alice = Account("alice");
+
2279 auto const bob = Account("bob");
+
2280
+
2281 env.fund(XRP(10000), alice, bob);
+
2282 env.close();
+
2283
+
2284 auto submitAndValidate =
+
2285 [&](std::string caseName,
+
2286 Slice const& slice,
+
2287 int line,
+
2288 std::optional<std::string> expectedEnabled = std::nullopt,
+
2289 std::optional<std::string> expectedDisabled = std::nullopt,
+
2290 bool expectInvalidFlag = false) {
+
2291 testcase << testName << caseName
+
2292 << (expectInvalidFlag
+
2293 ? " - Expected to reach tx engine!"
+
2294 : "");
+
2295 auto const jrr = env.rpc("submit", strHex(slice))[jss::result];
+
2296 auto const expected = withBatch
+
2297 ? expectedEnabled.value_or(
+
2298 "fails local checks: Malformed: Invalid inner batch "
+
2299 "transaction.")
+
2300 : expectedDisabled.value_or(
+
2301 "fails local checks: Empty SigningPubKey.");
+
2302 if (expectInvalidFlag)
+
2303 {
+
2304 expect(
+
2305 jrr[jss::status] == "success" &&
+
2306 jrr[jss::engine_result] == "temINVALID_FLAG",
+
2307 pretty(jrr),
+
2308 __FILE__,
+
2309 line);
+
2310 }
+
2311 else
+
2312 {
+
2313 expect(
+
2314 jrr[jss::status] == "error" &&
+
2315 jrr[jss::error] == "invalidTransaction" &&
+
2316 jrr[jss::error_exception] == expected,
+
2317 pretty(jrr),
+
2318 __FILE__,
+
2319 line);
+
2320 }
+
2321 env.close();
+
2322 };
+
2323
+
2324 // Invalid RPC Submission: TxnSignature
+
2325 // + has `TxnSignature` field
+
2326 // - has no `SigningPubKey` field
+
2327 // - has no `Signers` field
+
2328 // + has `tfInnerBatchTxn` flag
+
2329 {
+
2330 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
+
2331 txn[sfTxnSignature] = "DEADBEEF";
+
2332 STParsedJSONObject parsed("test", txn.getTxn());
+
2333 Serializer s;
+
2334 parsed.object->add(s);
+
2335 submitAndValidate("TxnSignature set", s.slice(), __LINE__);
+
2336 }
2337
-
2338 void
-
- -
2340 {
-
2341 testcase("account activation");
-
2342
-
2343 using namespace test::jtx;
-
2344 using namespace std::literals;
-
2345
-
2346 test::jtx::Env env{*this, envconfig()};
-
2347
-
2348 auto const alice = Account("alice");
-
2349 auto const bob = Account("bob");
-
2350 env.fund(XRP(10000), alice);
-
2351 env.close();
-
2352 env.memoize(bob);
-
2353
-
2354 auto const preAlice = env.balance(alice);
-
2355 auto const ledSeq = env.current()->seq();
-
2356 auto const seq = env.seq(alice);
-
2357 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
2358 auto const [txIDs, batchID] = submitBatch(
-
2359 env,
-
2360 tesSUCCESS,
-
2361 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
2362 batch::inner(pay(alice, bob, XRP(1000)), seq + 1),
- -
2364 batch::sig(bob));
-
2365 env.close();
-
2366
-
2367 std::vector<TestLedgerData> testCases = {
-
2368 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2369 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2370 {2, "AccountSet", "tesSUCCESS", txIDs[1], batchID},
-
2371 };
-
2372 validateClosedLedger(env, testCases);
-
2373
-
2374 // Alice consumes sequences (# of txns)
-
2375 BEAST_EXPECT(env.seq(alice) == seq + 2);
-
2376
-
2377 // Bob consumes sequences (# of txns)
-
2378 BEAST_EXPECT(env.seq(bob) == ledSeq + 1);
-
2379
-
2380 // Alice pays XRP & Fee; Bob receives XRP
-
2381 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1000) - batchFee);
-
2382 BEAST_EXPECT(env.balance(bob) == XRP(1000));
-
2383 }
+
2338 // Invalid RPC Submission: SigningPubKey
+
2339 // - has no `TxnSignature` field
+
2340 // + has `SigningPubKey` field
+
2341 // - has no `Signers` field
+
2342 // + has `tfInnerBatchTxn` flag
+
2343 {
+
2344 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
+
2345 txn[sfSigningPubKey] = strHex(alice.pk());
+
2346 STParsedJSONObject parsed("test", txn.getTxn());
+
2347 Serializer s;
+
2348 parsed.object->add(s);
+
2349 submitAndValidate(
+
2350 "SigningPubKey set",
+
2351 s.slice(),
+
2352 __LINE__,
+ +
2354 "fails local checks: Invalid signature.");
+
2355 }
+
2356
+
2357 // Invalid RPC Submission: Signers
+
2358 // - has no `TxnSignature` field
+
2359 // + has empty `SigningPubKey` field
+
2360 // + has `Signers` field
+
2361 // + has `tfInnerBatchTxn` flag
+
2362 {
+
2363 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
+
2364 txn[sfSigners] = Json::arrayValue;
+
2365 STParsedJSONObject parsed("test", txn.getTxn());
+
2366 Serializer s;
+
2367 parsed.object->add(s);
+
2368 submitAndValidate(
+
2369 "Signers set",
+
2370 s.slice(),
+
2371 __LINE__,
+ +
2373 "fails local checks: Invalid Signers array size.");
+
2374 }
+
2375
+
2376 {
+
2377 // Fully signed inner batch transaction
+
2378 auto const txn =
+
2379 batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
+
2380 auto const jt = env.jt(txn.getTxn());
+
2381
+
2382 STParsedJSONObject parsed("test", jt.jv);
+
2383 Serializer s;
+
2384 parsed.object->add(s);
+
2385 submitAndValidate(
+
2386 "Fully signed",
+
2387 s.slice(),
+
2388 __LINE__,
+ + +
2391 !withBatch);
+
2392 }
+
2393
+
2394 // Invalid RPC Submission: tfInnerBatchTxn
+
2395 // - has no `TxnSignature` field
+
2396 // + has empty `SigningPubKey` field
+
2397 // - has no `Signers` field
+
2398 // + has `tfInnerBatchTxn` flag
+
2399 {
+
2400 auto txn = batch::inner(pay(alice, bob, XRP(1)), env.seq(alice));
+
2401 STParsedJSONObject parsed("test", txn.getTxn());
+
2402 Serializer s;
+
2403 parsed.object->add(s);
+
2404 submitAndValidate(
+
2405 "No signing fields set",
+
2406 s.slice(),
+
2407 __LINE__,
+
2408 "fails local checks: Empty SigningPubKey.",
+
2409 "fails local checks: Empty SigningPubKey.",
+
2410 withBatch && !withInnerSigFix);
+
2411 }
+
2412
+
2413 // Invalid RPC Submission: tfInnerBatchTxn pseudo-transaction
+
2414 // - has no `TxnSignature` field
+
2415 // + has empty `SigningPubKey` field
+
2416 // - has no `Signers` field
+
2417 // + has `tfInnerBatchTxn` flag
+
2418 {
+
2419 STTx amendTx(
+
2420 ttAMENDMENT, [seq = env.closed()->header().seq + 1](auto& obj) {
+
2421 obj.setAccountID(sfAccount, AccountID());
+
2422 obj.setFieldH256(sfAmendment, fixBatchInnerSigs);
+
2423 obj.setFieldU32(sfLedgerSequence, seq);
+
2424 obj.setFieldU32(sfFlags, tfInnerBatchTxn);
+
2425 });
+
2426 auto txn = batch::inner(
+
2427 amendTx.getJson(JsonOptions::none), env.seq(alice));
+
2428 STParsedJSONObject parsed("test", txn.getTxn());
+
2429 Serializer s;
+
2430 parsed.object->add(s);
+
2431 submitAndValidate(
+
2432 "Pseudo-transaction",
+
2433 s.slice(),
+
2434 __LINE__,
+
2435 withInnerSigFix
+
2436 ? "fails local checks: Empty SigningPubKey."
+
2437 : "fails local checks: Cannot submit pseudo transactions.",
+
2438 "fails local checks: Empty SigningPubKey.");
+
2439 }
+
2440 }
-
2384
-
2385 void
-
- -
2387 {
-
2388 testcase("account set");
-
2389
-
2390 using namespace test::jtx;
-
2391 using namespace std::literals;
-
2392
-
2393 test::jtx::Env env{*this, envconfig()};
-
2394
-
2395 auto const alice = Account("alice");
-
2396 auto const bob = Account("bob");
-
2397 env.fund(XRP(10000), alice, bob);
-
2398 env.close();
-
2399
-
2400 auto const preAlice = env.balance(alice);
-
2401 auto const preBob = env.balance(bob);
-
2402
-
2403 auto const seq = env.seq(alice);
-
2404 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
2405 auto tx1 = batch::inner(noop(alice), seq + 1);
-
2406 std::string domain = "example.com";
-
2407 tx1[sfDomain] = strHex(domain);
-
2408 auto const [txIDs, batchID] = submitBatch(
-
2409 env,
-
2410 tesSUCCESS,
-
2411 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
2412 tx1,
-
2413 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
-
2414 env.close();
-
2415
-
2416 std::vector<TestLedgerData> testCases = {
-
2417 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2418 {1, "AccountSet", "tesSUCCESS", txIDs[0], batchID},
-
2419 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
2420 };
-
2421 validateClosedLedger(env, testCases);
-
2422
-
2423 auto const sle = env.le(keylet::account(alice));
-
2424 BEAST_EXPECT(sle);
-
2425 BEAST_EXPECT(
-
2426 sle->getFieldVL(sfDomain) == Blob(domain.begin(), domain.end()));
-
2427
-
2428 // Alice consumes sequences (# of txns)
-
2429 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
2430
-
2431 // Alice pays XRP & Fee; Bob receives XRP
-
2432 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
-
2433 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
2434 }
+
2441
+
2442 void
+
+ +
2444 {
+
2445 for (bool const withBatch : {true, false})
+
2446 {
+
2447 doTestInnerSubmitRPC(features, withBatch);
+
2448 }
+
2449 }
-
2435
-
2436 void
-
- -
2438 {
-
2439 testcase("account delete");
-
2440
-
2441 using namespace test::jtx;
-
2442 using namespace std::literals;
-
2443
-
2444 // tfIndependent: account delete success
-
2445 {
-
2446 test::jtx::Env env{*this, envconfig()};
-
2447
-
2448 auto const alice = Account("alice");
-
2449 auto const bob = Account("bob");
-
2450 env.fund(XRP(10000), alice, bob);
-
2451 env.close();
-
2452
-
2453 incLgrSeqForAccDel(env, alice);
-
2454 for (int i = 0; i < 5; ++i)
-
2455 env.close();
-
2456
-
2457 auto const preAlice = env.balance(alice);
-
2458 auto const preBob = env.balance(bob);
-
2459
-
2460 auto const seq = env.seq(alice);
-
2461 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
-
2462 env.current()->fees().increment;
-
2463 auto const [txIDs, batchID] = submitBatch(
-
2464 env,
-
2465 tesSUCCESS,
-
2466 batch::outer(alice, seq, batchFee, tfIndependent),
-
2467 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2468 batch::inner(acctdelete(alice, bob), seq + 2),
-
2469 // terNO_ACCOUNT: alice does not exist
-
2470 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
2471 env.close();
-
2472
-
2473 std::vector<TestLedgerData> testCases = {
-
2474 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2475 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2476 {2, "AccountDelete", "tesSUCCESS", txIDs[1], batchID},
-
2477 };
-
2478 validateClosedLedger(env, testCases);
+
2450
+
2451 void
+
+ +
2453 {
+
2454 testcase("account activation");
+
2455
+
2456 using namespace test::jtx;
+
2457 using namespace std::literals;
+
2458
+
2459 test::jtx::Env env{*this, features};
+
2460
+
2461 auto const alice = Account("alice");
+
2462 auto const bob = Account("bob");
+
2463 env.fund(XRP(10000), alice);
+
2464 env.close();
+
2465 env.memoize(bob);
+
2466
+
2467 auto const preAlice = env.balance(alice);
+
2468 auto const ledSeq = env.current()->seq();
+
2469 auto const seq = env.seq(alice);
+
2470 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
2471 auto const [txIDs, batchID] = submitBatch(
+
2472 env,
+
2473 tesSUCCESS,
+
2474 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
2475 batch::inner(pay(alice, bob, XRP(1000)), seq + 1),
+ +
2477 batch::sig(bob));
+
2478 env.close();
2479
-
2480 // Alice does not exist; Bob receives Alice's XRP
-
2481 BEAST_EXPECT(!env.le(keylet::account(alice)));
-
2482 BEAST_EXPECT(env.balance(bob) == preBob + (preAlice - batchFee));
-
2483 }
-
2484
-
2485 // tfIndependent: account delete fails
-
2486 {
-
2487 test::jtx::Env env{*this, envconfig()};
-
2488
-
2489 auto const alice = Account("alice");
-
2490 auto const bob = Account("bob");
-
2491 env.fund(XRP(10000), alice, bob);
-
2492 env.close();
-
2493
-
2494 incLgrSeqForAccDel(env, alice);
-
2495 for (int i = 0; i < 5; ++i)
-
2496 env.close();
+
2480 std::vector<TestLedgerData> testCases = {
+
2481 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2482 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2483 {2, "AccountSet", "tesSUCCESS", txIDs[1], batchID},
+
2484 };
+
2485 validateClosedLedger(env, testCases);
+
2486
+
2487 // Alice consumes sequences (# of txns)
+
2488 BEAST_EXPECT(env.seq(alice) == seq + 2);
+
2489
+
2490 // Bob consumes sequences (# of txns)
+
2491 BEAST_EXPECT(env.seq(bob) == ledSeq + 1);
+
2492
+
2493 // Alice pays XRP & Fee; Bob receives XRP
+
2494 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1000) - batchFee);
+
2495 BEAST_EXPECT(env.balance(bob) == XRP(1000));
+
2496 }
+
2497
-
2498 auto const preAlice = env.balance(alice);
-
2499 auto const preBob = env.balance(bob);
-
2500
-
2501 env.trust(bob["USD"](1000), alice);
-
2502 env.close();
-
2503
-
2504 auto const seq = env.seq(alice);
-
2505 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
-
2506 env.current()->fees().increment;
-
2507 auto const [txIDs, batchID] = submitBatch(
-
2508 env,
-
2509 tesSUCCESS,
-
2510 batch::outer(alice, seq, batchFee, tfIndependent),
-
2511 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2512 // tecHAS_OBLIGATIONS: alice has obligations
-
2513 batch::inner(acctdelete(alice, bob), seq + 2),
-
2514 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
2515 env.close();
-
2516
-
2517 std::vector<TestLedgerData> testCases = {
-
2518 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2519 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
2520 {2, "AccountDelete", "tecHAS_OBLIGATIONS", txIDs[1], batchID},
-
2521 {3, "Payment", "tesSUCCESS", txIDs[2], batchID},
-
2522 };
-
2523 validateClosedLedger(env, testCases);
-
2524
-
2525 // Alice does not exist; Bob receives XRP
-
2526 BEAST_EXPECT(env.le(keylet::account(alice)));
-
2527 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
2528 }
-
2529
-
2530 // tfAllOrNothing: account delete fails
-
2531 {
-
2532 test::jtx::Env env{*this, envconfig()};
-
2533
-
2534 auto const alice = Account("alice");
-
2535 auto const bob = Account("bob");
-
2536 env.fund(XRP(10000), alice, bob);
-
2537 env.close();
-
2538
-
2539 incLgrSeqForAccDel(env, alice);
-
2540 for (int i = 0; i < 5; ++i)
-
2541 env.close();
-
2542
-
2543 auto const preAlice = env.balance(alice);
-
2544 auto const preBob = env.balance(bob);
-
2545
-
2546 auto const seq = env.seq(alice);
-
2547 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
-
2548 env.current()->fees().increment;
-
2549 auto const [txIDs, batchID] = submitBatch(
-
2550 env,
-
2551 tesSUCCESS,
-
2552 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
2553 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
2554 batch::inner(acctdelete(alice, bob), seq + 2),
-
2555 // terNO_ACCOUNT: alice does not exist
-
2556 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
-
2557 env.close();
-
2558
-
2559 std::vector<TestLedgerData> testCases = {
-
2560 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2561 };
-
2562 validateClosedLedger(env, testCases);
-
2563
-
2564 // Alice still exists; Bob is unchanged
-
2565 BEAST_EXPECT(env.le(keylet::account(alice)));
-
2566 BEAST_EXPECT(env.balance(bob) == preBob);
-
2567 }
-
2568 }
+
2498 void
+
+ +
2500 {
+
2501 testcase("account set");
+
2502
+
2503 using namespace test::jtx;
+
2504 using namespace std::literals;
+
2505
+
2506 test::jtx::Env env{*this, features};
+
2507
+
2508 auto const alice = Account("alice");
+
2509 auto const bob = Account("bob");
+
2510 env.fund(XRP(10000), alice, bob);
+
2511 env.close();
+
2512
+
2513 auto const preAlice = env.balance(alice);
+
2514 auto const preBob = env.balance(bob);
+
2515
+
2516 auto const seq = env.seq(alice);
+
2517 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
2518 auto tx1 = batch::inner(noop(alice), seq + 1);
+
2519 std::string domain = "example.com";
+
2520 tx1[sfDomain] = strHex(domain);
+
2521 auto const [txIDs, batchID] = submitBatch(
+
2522 env,
+
2523 tesSUCCESS,
+
2524 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
2525 tx1,
+
2526 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
+
2527 env.close();
+
2528
+
2529 std::vector<TestLedgerData> testCases = {
+
2530 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2531 {1, "AccountSet", "tesSUCCESS", txIDs[0], batchID},
+
2532 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
2533 };
+
2534 validateClosedLedger(env, testCases);
+
2535
+
2536 auto const sle = env.le(keylet::account(alice));
+
2537 BEAST_EXPECT(sle);
+
2538 BEAST_EXPECT(
+
2539 sle->getFieldVL(sfDomain) == Blob(domain.begin(), domain.end()));
+
2540
+
2541 // Alice consumes sequences (# of txns)
+
2542 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
2543
+
2544 // Alice pays XRP & Fee; Bob receives XRP
+
2545 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
+
2546 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
2547 }
+
2548
+
2549 void
+
+ +
2551 {
+
2552 testcase("account delete");
+
2553
+
2554 using namespace test::jtx;
+
2555 using namespace std::literals;
+
2556
+
2557 // tfIndependent: account delete success
+
2558 {
+
2559 test::jtx::Env env{*this, features};
+
2560
+
2561 auto const alice = Account("alice");
+
2562 auto const bob = Account("bob");
+
2563 env.fund(XRP(10000), alice, bob);
+
2564 env.close();
+
2565
+
2566 incLgrSeqForAccDel(env, alice);
+
2567 for (int i = 0; i < 5; ++i)
+
2568 env.close();
2569
-
2570 void
-
- -
2572 {
-
2573 testcase("loan");
-
2574
-
2575 bool const lendingBatchEnabled = !std::any_of(
-
2576 Batch::disabledTxTypes.begin(),
- -
2578 [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; });
-
2579
-
2580 using namespace test::jtx;
-
2581
-
2582 test::jtx::Env env{
-
2583 *this,
-
2584 envconfig(),
-
2585 features | featureSingleAssetVault | featureLendingProtocol |
-
2586 featureMPTokensV1};
-
2587
-
2588 Account const issuer{"issuer"};
-
2589 // For simplicity, lender will be the sole actor for the vault &
-
2590 // brokers.
-
2591 Account const lender{"lender"};
-
2592 // Borrower only wants to borrow
-
2593 Account const borrower{"borrower"};
-
2594
-
2595 // Fund the accounts and trust lines with the same amount so that tests
-
2596 // can use the same values regardless of the asset.
-
2597 env.fund(XRP(100'000), issuer, noripple(lender, borrower));
-
2598 env.close();
-
2599
-
2600 // Just use an XRP asset
-
2601 PrettyAsset const asset{xrpIssue(), 1'000'000};
-
2602
-
2603 Vault vault{env};
-
2604
-
2605 auto const deposit = asset(50'000);
-
2606 auto const debtMaximumValue = asset(25'000).value();
-
2607 auto const coverDepositValue = asset(1000).value();
-
2608
-
2609 auto [tx, vaultKeylet] =
-
2610 vault.create({.owner = lender, .asset = asset});
-
2611 env(tx);
-
2612 env.close();
-
2613 BEAST_EXPECT(env.le(vaultKeylet));
-
2614
-
2615 env(vault.deposit(
-
2616 {.depositor = lender, .id = vaultKeylet.key, .amount = deposit}));
-
2617 env.close();
-
2618
-
2619 auto const brokerKeylet =
-
2620 keylet::loanbroker(lender.id(), env.seq(lender));
-
2621
-
2622 {
-
2623 using namespace loanBroker;
-
2624 env(set(lender, vaultKeylet.key),
-
2625 managementFeeRate(TenthBips16(100)),
-
2626 debtMaximum(debtMaximumValue),
-
2627 coverRateMinimum(TenthBips32(percentageToTenthBips(10))),
-
2628 coverRateLiquidation(TenthBips32(percentageToTenthBips(25))));
+
2570 auto const preAlice = env.balance(alice);
+
2571 auto const preBob = env.balance(bob);
+
2572
+
2573 auto const seq = env.seq(alice);
+
2574 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
+
2575 env.current()->fees().increment;
+
2576 auto const [txIDs, batchID] = submitBatch(
+
2577 env,
+
2578 tesSUCCESS,
+
2579 batch::outer(alice, seq, batchFee, tfIndependent),
+
2580 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2581 batch::inner(acctdelete(alice, bob), seq + 2),
+
2582 // terNO_ACCOUNT: alice does not exist
+
2583 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
2584 env.close();
+
2585
+
2586 std::vector<TestLedgerData> testCases = {
+
2587 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2588 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2589 {2, "AccountDelete", "tesSUCCESS", txIDs[1], batchID},
+
2590 };
+
2591 validateClosedLedger(env, testCases);
+
2592
+
2593 // Alice does not exist; Bob receives Alice's XRP
+
2594 BEAST_EXPECT(!env.le(keylet::account(alice)));
+
2595 BEAST_EXPECT(env.balance(bob) == preBob + (preAlice - batchFee));
+
2596 }
+
2597
+
2598 // tfIndependent: account delete fails
+
2599 {
+
2600 test::jtx::Env env{*this, features};
+
2601
+
2602 auto const alice = Account("alice");
+
2603 auto const bob = Account("bob");
+
2604 env.fund(XRP(10000), alice, bob);
+
2605 env.close();
+
2606
+
2607 incLgrSeqForAccDel(env, alice);
+
2608 for (int i = 0; i < 5; ++i)
+
2609 env.close();
+
2610
+
2611 auto const preAlice = env.balance(alice);
+
2612 auto const preBob = env.balance(bob);
+
2613
+
2614 env.trust(bob["USD"](1000), alice);
+
2615 env.close();
+
2616
+
2617 auto const seq = env.seq(alice);
+
2618 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
+
2619 env.current()->fees().increment;
+
2620 auto const [txIDs, batchID] = submitBatch(
+
2621 env,
+
2622 tesSUCCESS,
+
2623 batch::outer(alice, seq, batchFee, tfIndependent),
+
2624 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2625 // tecHAS_OBLIGATIONS: alice has obligations
+
2626 batch::inner(acctdelete(alice, bob), seq + 2),
+
2627 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
2628 env.close();
2629
-
2630 env(coverDeposit(lender, brokerKeylet.key, coverDepositValue));
-
2631
-
2632 env.close();
-
2633 }
-
2634
-
2635 {
-
2636 using namespace loan;
-
2637 using namespace std::chrono_literals;
-
2638
-
2639 auto const lenderSeq = env.seq(lender);
-
2640 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
2641
-
2642 auto const loanKeylet = keylet::loan(brokerKeylet.key, 1);
-
2643 {
-
2644 auto const [txIDs, batchID] = submitBatch(
-
2645 env,
-
2646 lendingBatchEnabled ? temBAD_SIGNATURE
- -
2648 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
- -
2650 env.json(
-
2651 set(lender, brokerKeylet.key, asset(1000).value()),
-
2652 // Not allowed to include the counterparty signature
-
2653 sig(sfCounterpartySignature, borrower),
-
2654 sig(none),
-
2655 fee(none),
-
2656 seq(none)),
-
2657 lenderSeq + 1),
- -
2659 pay(lender,
-
2660 loanKeylet.key,
-
2661 STAmount{asset, asset(500).value()}),
-
2662 lenderSeq + 2));
-
2663 }
-
2664 {
-
2665 auto const [txIDs, batchID] = submitBatch(
-
2666 env,
- -
2668 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
- -
2670 env.json(
-
2671 set(lender, brokerKeylet.key, asset(1000).value()),
-
2672 // Counterparty must be set
-
2673 sig(none),
-
2674 fee(none),
-
2675 seq(none)),
-
2676 lenderSeq + 1),
- -
2678 pay(lender,
-
2679 loanKeylet.key,
-
2680 STAmount{asset, asset(500).value()}),
-
2681 lenderSeq + 2));
-
2682 }
-
2683 {
-
2684 auto const [txIDs, batchID] = submitBatch(
-
2685 env,
-
2686 lendingBatchEnabled ? temBAD_SIGNER
- -
2688 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
- -
2690 env.json(
-
2691 set(lender, brokerKeylet.key, asset(1000).value()),
-
2692 // Counterparty must sign the outer transaction
-
2693 counterparty(borrower.id()),
-
2694 sig(none),
-
2695 fee(none),
-
2696 seq(none)),
-
2697 lenderSeq + 1),
- -
2699 pay(lender,
-
2700 loanKeylet.key,
-
2701 STAmount{asset, asset(500).value()}),
-
2702 lenderSeq + 2));
-
2703 }
-
2704 {
-
2705 // LoanSet normally charges at least 2x base fee, but since the
-
2706 // signature check is done by the batch, it only charges the
-
2707 // base fee.
-
2708 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
2709 auto const [txIDs, batchID] = submitBatch(
-
2710 env,
-
2711 lendingBatchEnabled ? TER(tesSUCCESS)
- -
2713 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
- -
2715 env.json(
-
2716 set(lender, brokerKeylet.key, asset(1000).value()),
-
2717 counterparty(borrower.id()),
-
2718 sig(none),
-
2719 fee(none),
-
2720 seq(none)),
-
2721 lenderSeq + 1),
- -
2723 pay(
-
2724 // However, this inner transaction will fail,
-
2725 // because the lender is not allowed to draw the
-
2726 // transaction
-
2727 lender,
-
2728 loanKeylet.key,
-
2729 STAmount{asset, asset(500).value()}),
-
2730 lenderSeq + 2),
-
2731 batch::sig(borrower));
-
2732 }
-
2733 env.close();
-
2734 BEAST_EXPECT(env.le(brokerKeylet));
-
2735 BEAST_EXPECT(!env.le(loanKeylet));
-
2736 {
-
2737 // LoanSet normally charges at least 2x base fee, but since the
-
2738 // signature check is done by the batch, it only charges the
-
2739 // base fee.
-
2740 auto const lenderSeq = env.seq(lender);
-
2741 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
2742 auto const [txIDs, batchID] = submitBatch(
-
2743 env,
-
2744 lendingBatchEnabled ? TER(tesSUCCESS)
- -
2746 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
- -
2748 env.json(
-
2749 set(lender, brokerKeylet.key, asset(1000).value()),
-
2750 counterparty(borrower.id()),
-
2751 sig(none),
-
2752 fee(none),
-
2753 seq(none)),
-
2754 lenderSeq + 1),
- -
2756 manage(lender, loanKeylet.key, tfLoanImpair),
-
2757 lenderSeq + 2),
-
2758 batch::sig(borrower));
-
2759 }
-
2760 env.close();
-
2761 BEAST_EXPECT(env.le(brokerKeylet));
-
2762 if (auto const sleLoan = env.le(loanKeylet); lendingBatchEnabled
-
2763 ? BEAST_EXPECT(sleLoan)
-
2764 : !BEAST_EXPECT(!sleLoan))
-
2765 {
-
2766 BEAST_EXPECT(sleLoan->isFlag(lsfLoanImpaired));
-
2767 }
-
2768 }
-
2769 }
+
2630 std::vector<TestLedgerData> testCases = {
+
2631 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2632 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
2633 {2, "AccountDelete", "tecHAS_OBLIGATIONS", txIDs[1], batchID},
+
2634 {3, "Payment", "tesSUCCESS", txIDs[2], batchID},
+
2635 };
+
2636 validateClosedLedger(env, testCases);
+
2637
+
2638 // Alice does not exist; Bob receives XRP
+
2639 BEAST_EXPECT(env.le(keylet::account(alice)));
+
2640 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
2641 }
+
2642
+
2643 // tfAllOrNothing: account delete fails
+
2644 {
+
2645 test::jtx::Env env{*this, features};
+
2646
+
2647 auto const alice = Account("alice");
+
2648 auto const bob = Account("bob");
+
2649 env.fund(XRP(10000), alice, bob);
+
2650 env.close();
+
2651
+
2652 incLgrSeqForAccDel(env, alice);
+
2653 for (int i = 0; i < 5; ++i)
+
2654 env.close();
+
2655
+
2656 auto const preAlice = env.balance(alice);
+
2657 auto const preBob = env.balance(bob);
+
2658
+
2659 auto const seq = env.seq(alice);
+
2660 auto const batchFee = batch::calcBatchFee(env, 0, 2) +
+
2661 env.current()->fees().increment;
+
2662 auto const [txIDs, batchID] = submitBatch(
+
2663 env,
+
2664 tesSUCCESS,
+
2665 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
2666 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
2667 batch::inner(acctdelete(alice, bob), seq + 2),
+
2668 // terNO_ACCOUNT: alice does not exist
+
2669 batch::inner(pay(alice, bob, XRP(2)), seq + 3));
+
2670 env.close();
+
2671
+
2672 std::vector<TestLedgerData> testCases = {
+
2673 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2674 };
+
2675 validateClosedLedger(env, testCases);
+
2676
+
2677 // Alice still exists; Bob is unchanged
+
2678 BEAST_EXPECT(env.le(keylet::account(alice)));
+
2679 BEAST_EXPECT(env.balance(bob) == preBob);
+
2680 }
+
2681 }
-
2770
-
2771 void
-
- -
2773 {
-
2774 testcase("object create w/ sequence");
-
2775
-
2776 using namespace test::jtx;
-
2777 using namespace std::literals;
-
2778
-
2779 test::jtx::Env env{*this, envconfig()};
-
2780
-
2781 auto const alice = Account("alice");
-
2782 auto const bob = Account("bob");
-
2783 auto const gw = Account("gw");
-
2784 auto const USD = gw["USD"];
-
2785
-
2786 env.fund(XRP(10000), alice, bob, gw);
-
2787 env.close();
-
2788
-
2789 env.trust(USD(1000), alice, bob);
-
2790 env(pay(gw, alice, USD(100)));
-
2791 env(pay(gw, bob, USD(100)));
-
2792 env.close();
-
2793
-
2794 // success
-
2795 {
-
2796 auto const aliceSeq = env.seq(alice);
-
2797 auto const bobSeq = env.seq(bob);
-
2798 auto const preAlice = env.balance(alice);
-
2799 auto const preBob = env.balance(bob);
-
2800 auto const preAliceUSD = env.balance(alice, USD.issue());
-
2801 auto const preBobUSD = env.balance(bob, USD.issue());
-
2802
-
2803 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
2804 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
-
2805 auto const [txIDs, batchID] = submitBatch(
-
2806 env,
-
2807 tesSUCCESS,
-
2808 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
2809 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
-
2810 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
-
2811 batch::sig(bob));
-
2812 env.close();
-
2813
-
2814 std::vector<TestLedgerData> testCases = {
-
2815 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2816 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
-
2817 {2, "CheckCash", "tesSUCCESS", txIDs[1], batchID},
-
2818 };
-
2819 validateClosedLedger(env, testCases);
-
2820
-
2821 // Alice consumes sequences (# of txns)
-
2822 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
-
2823
-
2824 // Alice consumes sequences (# of txns)
-
2825 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
-
2826
-
2827 // Alice pays Fee; Bob XRP Unchanged
-
2828 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
2829 BEAST_EXPECT(env.balance(bob) == preBob);
-
2830
-
2831 // Alice pays USD & Bob receives USD
-
2832 BEAST_EXPECT(
-
2833 env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
-
2834 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
-
2835 }
-
2836
-
2837 // failure
-
2838 {
-
2839 env(fset(alice, asfRequireDest));
-
2840 env.close();
-
2841
-
2842 auto const aliceSeq = env.seq(alice);
-
2843 auto const bobSeq = env.seq(bob);
-
2844 auto const preAlice = env.balance(alice);
-
2845 auto const preBob = env.balance(bob);
-
2846 auto const preAliceUSD = env.balance(alice, USD.issue());
-
2847 auto const preBobUSD = env.balance(bob, USD.issue());
-
2848
-
2849 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
2850 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
-
2851 auto const [txIDs, batchID] = submitBatch(
-
2852 env,
-
2853 tesSUCCESS,
-
2854 batch::outer(alice, aliceSeq, batchFee, tfIndependent),
-
2855 // tecDST_TAG_NEEDED - alice has enabled asfRequireDest
-
2856 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
-
2857 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
-
2858 batch::sig(bob));
-
2859 env.close();
-
2860
-
2861 std::vector<TestLedgerData> testCases = {
-
2862 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2863 {1, "CheckCreate", "tecDST_TAG_NEEDED", txIDs[0], batchID},
-
2864 {2, "CheckCash", "tecNO_ENTRY", txIDs[1], batchID},
-
2865 };
-
2866 validateClosedLedger(env, testCases);
-
2867
-
2868 // Alice consumes sequences (# of txns)
-
2869 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
-
2870
-
2871 // Bob consumes sequences (# of txns)
-
2872 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
-
2873
-
2874 // Alice pays Fee; Bob XRP Unchanged
-
2875 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
2876 BEAST_EXPECT(env.balance(bob) == preBob);
-
2877
-
2878 // Alice pays USD & Bob receives USD
-
2879 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
-
2880 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
-
2881 }
-
2882 }
+
2682
+
2683 void
+
+ +
2685 {
+
2686 testcase("loan");
+
2687
+
2688 bool const lendingBatchEnabled = !std::any_of(
+
2689 Batch::disabledTxTypes.begin(),
+ +
2691 [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; });
+
2692
+
2693 using namespace test::jtx;
+
2694
+
2695 test::jtx::Env env{
+
2696 *this,
+
2697 features | featureSingleAssetVault | featureLendingProtocol |
+
2698 featureMPTokensV1};
+
2699
+
2700 Account const issuer{"issuer"};
+
2701 // For simplicity, lender will be the sole actor for the vault &
+
2702 // brokers.
+
2703 Account const lender{"lender"};
+
2704 // Borrower only wants to borrow
+
2705 Account const borrower{"borrower"};
+
2706
+
2707 // Fund the accounts and trust lines with the same amount so that tests
+
2708 // can use the same values regardless of the asset.
+
2709 env.fund(XRP(100'000), issuer, noripple(lender, borrower));
+
2710 env.close();
+
2711
+
2712 // Just use an XRP asset
+
2713 PrettyAsset const asset{xrpIssue(), 1'000'000};
+
2714
+
2715 Vault vault{env};
+
2716
+
2717 auto const deposit = asset(50'000);
+
2718 auto const debtMaximumValue = asset(25'000).value();
+
2719 auto const coverDepositValue = asset(1000).value();
+
2720
+
2721 auto [tx, vaultKeylet] =
+
2722 vault.create({.owner = lender, .asset = asset});
+
2723 env(tx);
+
2724 env.close();
+
2725 BEAST_EXPECT(env.le(vaultKeylet));
+
2726
+
2727 env(vault.deposit(
+
2728 {.depositor = lender, .id = vaultKeylet.key, .amount = deposit}));
+
2729 env.close();
+
2730
+
2731 auto const brokerKeylet =
+
2732 keylet::loanbroker(lender.id(), env.seq(lender));
+
2733
+
2734 {
+
2735 using namespace loanBroker;
+
2736 env(set(lender, vaultKeylet.key),
+
2737 managementFeeRate(TenthBips16(100)),
+
2738 debtMaximum(debtMaximumValue),
+
2739 coverRateMinimum(TenthBips32(percentageToTenthBips(10))),
+
2740 coverRateLiquidation(TenthBips32(percentageToTenthBips(25))));
+
2741
+
2742 env(coverDeposit(lender, brokerKeylet.key, coverDepositValue));
+
2743
+
2744 env.close();
+
2745 }
+
2746
+
2747 {
+
2748 using namespace loan;
+
2749 using namespace std::chrono_literals;
+
2750
+
2751 auto const lenderSeq = env.seq(lender);
+
2752 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
2753
+
2754 auto const loanKeylet = keylet::loan(brokerKeylet.key, 1);
+
2755 {
+
2756 auto const [txIDs, batchID] = submitBatch(
+
2757 env,
+
2758 lendingBatchEnabled ? temBAD_SIGNATURE
+ +
2760 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
+ +
2762 env.json(
+
2763 set(lender, brokerKeylet.key, asset(1000).value()),
+
2764 // Not allowed to include the counterparty signature
+
2765 sig(sfCounterpartySignature, borrower),
+
2766 sig(none),
+
2767 fee(none),
+
2768 seq(none)),
+
2769 lenderSeq + 1),
+ +
2771 pay(lender,
+
2772 loanKeylet.key,
+
2773 STAmount{asset, asset(500).value()}),
+
2774 lenderSeq + 2));
+
2775 }
+
2776 {
+
2777 auto const [txIDs, batchID] = submitBatch(
+
2778 env,
+ +
2780 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
+ +
2782 env.json(
+
2783 set(lender, brokerKeylet.key, asset(1000).value()),
+
2784 // Counterparty must be set
+
2785 sig(none),
+
2786 fee(none),
+
2787 seq(none)),
+
2788 lenderSeq + 1),
+ +
2790 pay(lender,
+
2791 loanKeylet.key,
+
2792 STAmount{asset, asset(500).value()}),
+
2793 lenderSeq + 2));
+
2794 }
+
2795 {
+
2796 auto const [txIDs, batchID] = submitBatch(
+
2797 env,
+
2798 lendingBatchEnabled ? temBAD_SIGNER
+ +
2800 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
+ +
2802 env.json(
+
2803 set(lender, brokerKeylet.key, asset(1000).value()),
+
2804 // Counterparty must sign the outer transaction
+
2805 counterparty(borrower.id()),
+
2806 sig(none),
+
2807 fee(none),
+
2808 seq(none)),
+
2809 lenderSeq + 1),
+ +
2811 pay(lender,
+
2812 loanKeylet.key,
+
2813 STAmount{asset, asset(500).value()}),
+
2814 lenderSeq + 2));
+
2815 }
+
2816 {
+
2817 // LoanSet normally charges at least 2x base fee, but since the
+
2818 // signature check is done by the batch, it only charges the
+
2819 // base fee.
+
2820 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
2821 auto const [txIDs, batchID] = submitBatch(
+
2822 env,
+
2823 lendingBatchEnabled ? TER(tesSUCCESS)
+ +
2825 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
+ +
2827 env.json(
+
2828 set(lender, brokerKeylet.key, asset(1000).value()),
+
2829 counterparty(borrower.id()),
+
2830 sig(none),
+
2831 fee(none),
+
2832 seq(none)),
+
2833 lenderSeq + 1),
+ +
2835 pay(
+
2836 // However, this inner transaction will fail,
+
2837 // because the lender is not allowed to draw the
+
2838 // transaction
+
2839 lender,
+
2840 loanKeylet.key,
+
2841 STAmount{asset, asset(500).value()}),
+
2842 lenderSeq + 2),
+
2843 batch::sig(borrower));
+
2844 }
+
2845 env.close();
+
2846 BEAST_EXPECT(env.le(brokerKeylet));
+
2847 BEAST_EXPECT(!env.le(loanKeylet));
+
2848 {
+
2849 // LoanSet normally charges at least 2x base fee, but since the
+
2850 // signature check is done by the batch, it only charges the
+
2851 // base fee.
+
2852 auto const lenderSeq = env.seq(lender);
+
2853 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
2854 auto const [txIDs, batchID] = submitBatch(
+
2855 env,
+
2856 lendingBatchEnabled ? TER(tesSUCCESS)
+ +
2858 batch::outer(lender, lenderSeq, batchFee, tfAllOrNothing),
+ +
2860 env.json(
+
2861 set(lender, brokerKeylet.key, asset(1000).value()),
+
2862 counterparty(borrower.id()),
+
2863 sig(none),
+
2864 fee(none),
+
2865 seq(none)),
+
2866 lenderSeq + 1),
+ +
2868 manage(lender, loanKeylet.key, tfLoanImpair),
+
2869 lenderSeq + 2),
+
2870 batch::sig(borrower));
+
2871 }
+
2872 env.close();
+
2873 BEAST_EXPECT(env.le(brokerKeylet));
+
2874 if (auto const sleLoan = env.le(loanKeylet); lendingBatchEnabled
+
2875 ? BEAST_EXPECT(sleLoan)
+
2876 : !BEAST_EXPECT(!sleLoan))
+
2877 {
+
2878 BEAST_EXPECT(sleLoan->isFlag(lsfLoanImpaired));
+
2879 }
+
2880 }
+
2881 }
-
2883
-
2884 void
-
- -
2886 {
-
2887 testcase("object create w/ ticket");
-
2888
-
2889 using namespace test::jtx;
-
2890 using namespace std::literals;
-
2891
-
2892 test::jtx::Env env{*this, envconfig()};
-
2893
-
2894 auto const alice = Account("alice");
-
2895 auto const bob = Account("bob");
-
2896 auto const gw = Account("gw");
-
2897 auto const USD = gw["USD"];
-
2898
-
2899 env.fund(XRP(10000), alice, bob, gw);
-
2900 env.close();
-
2901
-
2902 env.trust(USD(1000), alice, bob);
-
2903 env(pay(gw, alice, USD(100)));
-
2904 env(pay(gw, bob, USD(100)));
-
2905 env.close();
-
2906
-
2907 auto const aliceSeq = env.seq(alice);
-
2908 auto const bobSeq = env.seq(bob);
-
2909 auto const preAlice = env.balance(alice);
-
2910 auto const preBob = env.balance(bob);
-
2911 auto const preAliceUSD = env.balance(alice, USD.issue());
-
2912 auto const preBobUSD = env.balance(bob, USD.issue());
-
2913
-
2914 auto const batchFee = batch::calcBatchFee(env, 1, 3);
-
2915 uint256 const chkID{getCheckIndex(bob, bobSeq + 1)};
-
2916 auto const [txIDs, batchID] = submitBatch(
-
2917 env,
-
2918 tesSUCCESS,
-
2919 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
2920 batch::inner(ticket::create(bob, 10), bobSeq),
-
2921 batch::inner(check::create(bob, alice, USD(10)), 0, bobSeq + 1),
-
2922 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
-
2923 batch::sig(bob));
-
2924 env.close();
+
2882
+
2883 void
+
+ +
2885 {
+
2886 testcase("object create w/ sequence");
+
2887
+
2888 using namespace test::jtx;
+
2889 using namespace std::literals;
+
2890
+
2891 test::jtx::Env env{*this, features};
+
2892
+
2893 auto const alice = Account("alice");
+
2894 auto const bob = Account("bob");
+
2895 auto const gw = Account("gw");
+
2896 auto const USD = gw["USD"];
+
2897
+
2898 env.fund(XRP(10000), alice, bob, gw);
+
2899 env.close();
+
2900
+
2901 env.trust(USD(1000), alice, bob);
+
2902 env(pay(gw, alice, USD(100)));
+
2903 env(pay(gw, bob, USD(100)));
+
2904 env.close();
+
2905
+
2906 // success
+
2907 {
+
2908 auto const aliceSeq = env.seq(alice);
+
2909 auto const bobSeq = env.seq(bob);
+
2910 auto const preAlice = env.balance(alice);
+
2911 auto const preBob = env.balance(bob);
+
2912 auto const preAliceUSD = env.balance(alice, USD.issue());
+
2913 auto const preBobUSD = env.balance(bob, USD.issue());
+
2914
+
2915 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
2916 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
+
2917 auto const [txIDs, batchID] = submitBatch(
+
2918 env,
+
2919 tesSUCCESS,
+
2920 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
2921 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
+
2922 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
+
2923 batch::sig(bob));
+
2924 env.close();
2925
-
2926 std::vector<TestLedgerData> testCases = {
-
2927 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2928 {1, "TicketCreate", "tesSUCCESS", txIDs[0], batchID},
-
2929 {2, "CheckCreate", "tesSUCCESS", txIDs[1], batchID},
-
2930 {3, "CheckCash", "tesSUCCESS", txIDs[2], batchID},
-
2931 };
-
2932 validateClosedLedger(env, testCases);
-
2933
-
2934 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
-
2935 BEAST_EXPECT(env.seq(bob) == bobSeq + 10 + 1);
-
2936 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
-
2937 BEAST_EXPECT(env.balance(bob) == preBob);
-
2938 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
-
2939 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
-
2940 }
-
-
2941
-
2942 void
-
- -
2944 {
-
2945 testcase("object create w/ 3rd party");
-
2946
-
2947 using namespace test::jtx;
-
2948 using namespace std::literals;
-
2949
-
2950 test::jtx::Env env{*this, envconfig()};
-
2951
-
2952 auto const alice = Account("alice");
-
2953 auto const bob = Account("bob");
-
2954 auto const carol = Account("carol");
-
2955 auto const gw = Account("gw");
-
2956 auto const USD = gw["USD"];
-
2957
-
2958 env.fund(XRP(10000), alice, bob, carol, gw);
-
2959 env.close();
+
2926 std::vector<TestLedgerData> testCases = {
+
2927 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2928 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
+
2929 {2, "CheckCash", "tesSUCCESS", txIDs[1], batchID},
+
2930 };
+
2931 validateClosedLedger(env, testCases);
+
2932
+
2933 // Alice consumes sequences (# of txns)
+
2934 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
+
2935
+
2936 // Alice consumes sequences (# of txns)
+
2937 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
+
2938
+
2939 // Alice pays Fee; Bob XRP Unchanged
+
2940 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
2941 BEAST_EXPECT(env.balance(bob) == preBob);
+
2942
+
2943 // Alice pays USD & Bob receives USD
+
2944 BEAST_EXPECT(
+
2945 env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
+
2946 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
+
2947 }
+
2948
+
2949 // failure
+
2950 {
+
2951 env(fset(alice, asfRequireDest));
+
2952 env.close();
+
2953
+
2954 auto const aliceSeq = env.seq(alice);
+
2955 auto const bobSeq = env.seq(bob);
+
2956 auto const preAlice = env.balance(alice);
+
2957 auto const preBob = env.balance(bob);
+
2958 auto const preAliceUSD = env.balance(alice, USD.issue());
+
2959 auto const preBobUSD = env.balance(bob, USD.issue());
2960
-
2961 env.trust(USD(1000), alice, bob);
-
2962 env(pay(gw, alice, USD(100)));
-
2963 env(pay(gw, bob, USD(100)));
-
2964 env.close();
-
2965
-
2966 auto const aliceSeq = env.seq(alice);
-
2967 auto const bobSeq = env.seq(bob);
-
2968 auto const carolSeq = env.seq(carol);
-
2969 auto const preAlice = env.balance(alice);
-
2970 auto const preBob = env.balance(bob);
-
2971 auto const preCarol = env.balance(carol);
-
2972 auto const preAliceUSD = env.balance(alice, USD.issue());
-
2973 auto const preBobUSD = env.balance(bob, USD.issue());
-
2974
-
2975 auto const batchFee = batch::calcBatchFee(env, 2, 2);
-
2976 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
-
2977 auto const [txIDs, batchID] = submitBatch(
-
2978 env,
-
2979 tesSUCCESS,
-
2980 batch::outer(carol, carolSeq, batchFee, tfAllOrNothing),
-
2981 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
-
2982 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq),
-
2983 batch::sig(alice, bob));
-
2984 env.close();
+
2961 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
2962 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
+
2963 auto const [txIDs, batchID] = submitBatch(
+
2964 env,
+
2965 tesSUCCESS,
+
2966 batch::outer(alice, aliceSeq, batchFee, tfIndependent),
+
2967 // tecDST_TAG_NEEDED - alice has enabled asfRequireDest
+
2968 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
+
2969 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
+
2970 batch::sig(bob));
+
2971 env.close();
+
2972
+
2973 std::vector<TestLedgerData> testCases = {
+
2974 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
2975 {1, "CheckCreate", "tecDST_TAG_NEEDED", txIDs[0], batchID},
+
2976 {2, "CheckCash", "tecNO_ENTRY", txIDs[1], batchID},
+
2977 };
+
2978 validateClosedLedger(env, testCases);
+
2979
+
2980 // Alice consumes sequences (# of txns)
+
2981 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
+
2982
+
2983 // Bob consumes sequences (# of txns)
+
2984 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
2985
-
2986 std::vector<TestLedgerData> testCases = {
-
2987 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
2988 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
-
2989 {2, "CheckCash", "tesSUCCESS", txIDs[1], batchID},
-
2990 };
-
2991 validateClosedLedger(env, testCases);
-
2992
-
2993 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
-
2994 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
-
2995 BEAST_EXPECT(env.seq(carol) == carolSeq + 1);
-
2996 BEAST_EXPECT(env.balance(alice) == preAlice);
-
2997 BEAST_EXPECT(env.balance(bob) == preBob);
-
2998 BEAST_EXPECT(env.balance(carol) == preCarol - batchFee);
-
2999 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
-
3000 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
-
3001 }
+
2986 // Alice pays Fee; Bob XRP Unchanged
+
2987 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
2988 BEAST_EXPECT(env.balance(bob) == preBob);
+
2989
+
2990 // Alice pays USD & Bob receives USD
+
2991 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD);
+
2992 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD);
+
2993 }
+
2994 }
-
3002
-
3003 void
-
- -
3005 {
-
3006 {
-
3007 testcase("tickets outer");
-
3008
-
3009 using namespace test::jtx;
-
3010 using namespace std::literals;
-
3011
-
3012 test::jtx::Env env{*this, envconfig()};
+
2995
+
2996 void
+
+ +
2998 {
+
2999 testcase("object create w/ ticket");
+
3000
+
3001 using namespace test::jtx;
+
3002 using namespace std::literals;
+
3003
+
3004 test::jtx::Env env{*this, features};
+
3005
+
3006 auto const alice = Account("alice");
+
3007 auto const bob = Account("bob");
+
3008 auto const gw = Account("gw");
+
3009 auto const USD = gw["USD"];
+
3010
+
3011 env.fund(XRP(10000), alice, bob, gw);
+
3012 env.close();
3013
-
3014 auto const alice = Account("alice");
-
3015 auto const bob = Account("bob");
-
3016
-
3017 env.fund(XRP(10000), alice, bob);
-
3018 env.close();
-
3019
-
3020 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3021 env(ticket::create(alice, 10));
-
3022 env.close();
-
3023
-
3024 auto const aliceSeq = env.seq(alice);
-
3025 auto const preAlice = env.balance(alice);
-
3026 auto const preBob = env.balance(bob);
-
3027
-
3028 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3029 auto const [txIDs, batchID] = submitBatch(
-
3030 env,
-
3031 tesSUCCESS,
-
3032 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3033 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 0),
-
3034 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
-
3035 ticket::use(aliceTicketSeq));
-
3036 env.close();
+
3014 env.trust(USD(1000), alice, bob);
+
3015 env(pay(gw, alice, USD(100)));
+
3016 env(pay(gw, bob, USD(100)));
+
3017 env.close();
+
3018
+
3019 auto const aliceSeq = env.seq(alice);
+
3020 auto const bobSeq = env.seq(bob);
+
3021 auto const preAlice = env.balance(alice);
+
3022 auto const preBob = env.balance(bob);
+
3023 auto const preAliceUSD = env.balance(alice, USD.issue());
+
3024 auto const preBobUSD = env.balance(bob, USD.issue());
+
3025
+
3026 auto const batchFee = batch::calcBatchFee(env, 1, 3);
+
3027 uint256 const chkID{getCheckIndex(bob, bobSeq + 1)};
+
3028 auto const [txIDs, batchID] = submitBatch(
+
3029 env,
+
3030 tesSUCCESS,
+
3031 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3032 batch::inner(ticket::create(bob, 10), bobSeq),
+
3033 batch::inner(check::create(bob, alice, USD(10)), 0, bobSeq + 1),
+
3034 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq + 1),
+
3035 batch::sig(bob));
+
3036 env.close();
3037
-
3038 std::vector<TestLedgerData> testCases = {
-
3039 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3040 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3041 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3042 };
-
3043 validateClosedLedger(env, testCases);
-
3044
-
3045 auto const sle = env.le(keylet::account(alice));
-
3046 BEAST_EXPECT(sle);
-
3047 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 9);
-
3048 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 9);
-
3049
-
3050 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
-
3051 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
3052 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
3053 }
-
3054
-
3055 {
-
3056 testcase("tickets inner");
-
3057
-
3058 using namespace test::jtx;
-
3059 using namespace std::literals;
-
3060
-
3061 test::jtx::Env env{*this, envconfig()};
-
3062
-
3063 auto const alice = Account("alice");
-
3064 auto const bob = Account("bob");
-
3065
-
3066 env.fund(XRP(10000), alice, bob);
-
3067 env.close();
-
3068
-
3069 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3070 env(ticket::create(alice, 10));
-
3071 env.close();
+
3038 std::vector<TestLedgerData> testCases = {
+
3039 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3040 {1, "TicketCreate", "tesSUCCESS", txIDs[0], batchID},
+
3041 {2, "CheckCreate", "tesSUCCESS", txIDs[1], batchID},
+
3042 {3, "CheckCash", "tesSUCCESS", txIDs[2], batchID},
+
3043 };
+
3044 validateClosedLedger(env, testCases);
+
3045
+
3046 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
+
3047 BEAST_EXPECT(env.seq(bob) == bobSeq + 10 + 1);
+
3048 BEAST_EXPECT(env.balance(alice) == preAlice - batchFee);
+
3049 BEAST_EXPECT(env.balance(bob) == preBob);
+
3050 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
+
3051 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
+
3052 }
+
+
3053
+
3054 void
+
+ +
3056 {
+
3057 testcase("object create w/ 3rd party");
+
3058
+
3059 using namespace test::jtx;
+
3060 using namespace std::literals;
+
3061
+
3062 test::jtx::Env env{*this, features};
+
3063
+
3064 auto const alice = Account("alice");
+
3065 auto const bob = Account("bob");
+
3066 auto const carol = Account("carol");
+
3067 auto const gw = Account("gw");
+
3068 auto const USD = gw["USD"];
+
3069
+
3070 env.fund(XRP(10000), alice, bob, carol, gw);
+
3071 env.close();
3072
-
3073 auto const aliceSeq = env.seq(alice);
-
3074 auto const preAlice = env.balance(alice);
-
3075 auto const preBob = env.balance(bob);
-
3076
-
3077 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3078 auto const [txIDs, batchID] = submitBatch(
-
3079 env,
-
3080 tesSUCCESS,
-
3081 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3082 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq),
-
3083 batch::inner(pay(alice, bob, XRP(2)), 0, aliceTicketSeq + 1));
-
3084 env.close();
-
3085
-
3086 std::vector<TestLedgerData> testCases = {
-
3087 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3088 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3089 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3090 };
-
3091 validateClosedLedger(env, testCases);
-
3092
-
3093 auto const sle = env.le(keylet::account(alice));
-
3094 BEAST_EXPECT(sle);
-
3095 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 8);
-
3096 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 8);
+
3073 env.trust(USD(1000), alice, bob);
+
3074 env(pay(gw, alice, USD(100)));
+
3075 env(pay(gw, bob, USD(100)));
+
3076 env.close();
+
3077
+
3078 auto const aliceSeq = env.seq(alice);
+
3079 auto const bobSeq = env.seq(bob);
+
3080 auto const carolSeq = env.seq(carol);
+
3081 auto const preAlice = env.balance(alice);
+
3082 auto const preBob = env.balance(bob);
+
3083 auto const preCarol = env.balance(carol);
+
3084 auto const preAliceUSD = env.balance(alice, USD.issue());
+
3085 auto const preBobUSD = env.balance(bob, USD.issue());
+
3086
+
3087 auto const batchFee = batch::calcBatchFee(env, 2, 2);
+
3088 uint256 const chkID{getCheckIndex(bob, env.seq(bob))};
+
3089 auto const [txIDs, batchID] = submitBatch(
+
3090 env,
+
3091 tesSUCCESS,
+
3092 batch::outer(carol, carolSeq, batchFee, tfAllOrNothing),
+
3093 batch::inner(check::create(bob, alice, USD(10)), bobSeq),
+
3094 batch::inner(check::cash(alice, chkID, USD(10)), aliceSeq),
+
3095 batch::sig(alice, bob));
+
3096 env.close();
3097
-
3098 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
-
3099 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
3100 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
3101 }
-
3102
-
3103 {
-
3104 testcase("tickets outer inner");
-
3105
-
3106 using namespace test::jtx;
-
3107 using namespace std::literals;
-
3108
-
3109 test::jtx::Env env{*this, envconfig()};
-
3110
-
3111 auto const alice = Account("alice");
-
3112 auto const bob = Account("bob");
-
3113
-
3114 env.fund(XRP(10000), alice, bob);
-
3115 env.close();
-
3116
-
3117 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3118 env(ticket::create(alice, 10));
-
3119 env.close();
+
3098 std::vector<TestLedgerData> testCases = {
+
3099 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3100 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
+
3101 {2, "CheckCash", "tesSUCCESS", txIDs[1], batchID},
+
3102 };
+
3103 validateClosedLedger(env, testCases);
+
3104
+
3105 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
+
3106 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
+
3107 BEAST_EXPECT(env.seq(carol) == carolSeq + 1);
+
3108 BEAST_EXPECT(env.balance(alice) == preAlice);
+
3109 BEAST_EXPECT(env.balance(bob) == preBob);
+
3110 BEAST_EXPECT(env.balance(carol) == preCarol - batchFee);
+
3111 BEAST_EXPECT(env.balance(alice, USD.issue()) == preAliceUSD + USD(10));
+
3112 BEAST_EXPECT(env.balance(bob, USD.issue()) == preBobUSD - USD(10));
+
3113 }
+
+
3114
+
3115 void
+
+ +
3117 {
+
3118 {
+
3119 testcase("tickets outer");
3120
-
3121 auto const aliceSeq = env.seq(alice);
-
3122 auto const preAlice = env.balance(alice);
-
3123 auto const preBob = env.balance(bob);
-
3124
-
3125 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3126 auto const [txIDs, batchID] = submitBatch(
-
3127 env,
-
3128 tesSUCCESS,
-
3129 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3130 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3131 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
-
3132 ticket::use(aliceTicketSeq));
-
3133 env.close();
-
3134
-
3135 std::vector<TestLedgerData> testCases = {
-
3136 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3137 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3138 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3139 };
-
3140 validateClosedLedger(env, testCases);
-
3141
-
3142 auto const sle = env.le(keylet::account(alice));
-
3143 BEAST_EXPECT(sle);
-
3144 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 8);
-
3145 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 8);
-
3146
-
3147 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
-
3148 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
3149 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
3150 }
-
3151 }
-
-
3152
-
3153 void
-
- -
3155 {
-
3156 testcase("sequence open ledger");
-
3157
-
3158 using namespace test::jtx;
-
3159 using namespace std::literals;
-
3160
-
3161 auto const alice = Account("alice");
-
3162 auto const bob = Account("bob");
-
3163 auto const carol = Account("carol");
-
3164
-
3165 // Before Batch Txn w/ retry following ledger
-
3166 {
-
3167 // IMPORTANT: The batch txn is applied first, then the noop txn.
-
3168 // Because of this ordering, the noop txn is not applied and is
-
3169 // overwritten by the payment in the batch transaction. Because the
-
3170 // terPRE_SEQ is outside of the batch this noop transaction will ge
-
3171 // reapplied in the following ledger
-
3172 test::jtx::Env env{*this, envconfig()};
-
3173 env.fund(XRP(10000), alice, bob, carol);
-
3174 env.close();
-
3175
-
3176 auto const aliceSeq = env.seq(alice);
-
3177 auto const carolSeq = env.seq(carol);
-
3178
-
3179 // AccountSet Txn
-
3180 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 2));
-
3181 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
-
3182 env(noopTxn, ter(terPRE_SEQ));
-
3183
-
3184 // Batch Txn
-
3185 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3186 auto const [txIDs, batchID] = submitBatch(
-
3187 env,
-
3188 tesSUCCESS,
-
3189 batch::outer(carol, carolSeq, batchFee, tfAllOrNothing),
-
3190 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
3191 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
-
3192 batch::sig(alice));
-
3193 env.close();
-
3194
-
3195 {
-
3196 std::vector<TestLedgerData> testCases = {
-
3197 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3198 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3199 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3200 };
-
3201 validateClosedLedger(env, testCases);
-
3202 }
-
3203
-
3204 env.close();
-
3205 {
-
3206 // next ledger contains noop txn
-
3207 std::vector<TestLedgerData> testCases = {
-
3208 {0, "AccountSet", "tesSUCCESS", noopTxnID, std::nullopt},
-
3209 };
-
3210 validateClosedLedger(env, testCases);
-
3211 }
-
3212 }
-
3213
-
3214 // Before Batch Txn w/ same sequence
+
3121 using namespace test::jtx;
+
3122 using namespace std::literals;
+
3123
+
3124 test::jtx::Env env{*this, features};
+
3125
+
3126 auto const alice = Account("alice");
+
3127 auto const bob = Account("bob");
+
3128
+
3129 env.fund(XRP(10000), alice, bob);
+
3130 env.close();
+
3131
+
3132 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3133 env(ticket::create(alice, 10));
+
3134 env.close();
+
3135
+
3136 auto const aliceSeq = env.seq(alice);
+
3137 auto const preAlice = env.balance(alice);
+
3138 auto const preBob = env.balance(bob);
+
3139
+
3140 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3141 auto const [txIDs, batchID] = submitBatch(
+
3142 env,
+
3143 tesSUCCESS,
+
3144 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3145 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 0),
+
3146 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
+
3147 ticket::use(aliceTicketSeq));
+
3148 env.close();
+
3149
+
3150 std::vector<TestLedgerData> testCases = {
+
3151 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3152 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3153 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3154 };
+
3155 validateClosedLedger(env, testCases);
+
3156
+
3157 auto const sle = env.le(keylet::account(alice));
+
3158 BEAST_EXPECT(sle);
+
3159 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 9);
+
3160 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 9);
+
3161
+
3162 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
+
3163 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
3164 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
3165 }
+
3166
+
3167 {
+
3168 testcase("tickets inner");
+
3169
+
3170 using namespace test::jtx;
+
3171 using namespace std::literals;
+
3172
+
3173 test::jtx::Env env{*this, features};
+
3174
+
3175 auto const alice = Account("alice");
+
3176 auto const bob = Account("bob");
+
3177
+
3178 env.fund(XRP(10000), alice, bob);
+
3179 env.close();
+
3180
+
3181 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3182 env(ticket::create(alice, 10));
+
3183 env.close();
+
3184
+
3185 auto const aliceSeq = env.seq(alice);
+
3186 auto const preAlice = env.balance(alice);
+
3187 auto const preBob = env.balance(bob);
+
3188
+
3189 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3190 auto const [txIDs, batchID] = submitBatch(
+
3191 env,
+
3192 tesSUCCESS,
+
3193 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3194 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq),
+
3195 batch::inner(pay(alice, bob, XRP(2)), 0, aliceTicketSeq + 1));
+
3196 env.close();
+
3197
+
3198 std::vector<TestLedgerData> testCases = {
+
3199 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3200 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3201 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3202 };
+
3203 validateClosedLedger(env, testCases);
+
3204
+
3205 auto const sle = env.le(keylet::account(alice));
+
3206 BEAST_EXPECT(sle);
+
3207 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 8);
+
3208 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 8);
+
3209
+
3210 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
+
3211 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
3212 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
3213 }
+
3214
3215 {
-
3216 // IMPORTANT: The batch txn is applied first, then the noop txn.
-
3217 // Because of this ordering, the noop txn is not applied and is
-
3218 // overwritten by the payment in the batch transaction.
-
3219 test::jtx::Env env{*this, envconfig()};
-
3220 env.fund(XRP(10000), alice, bob);
-
3221 env.close();
+
3216 testcase("tickets outer inner");
+
3217
+
3218 using namespace test::jtx;
+
3219 using namespace std::literals;
+
3220
+
3221 test::jtx::Env env{*this, features};
3222
-
3223 auto const aliceSeq = env.seq(alice);
-
3224
-
3225 // AccountSet Txn
-
3226 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 1));
-
3227 env(noopTxn, ter(terPRE_SEQ));
+
3223 auto const alice = Account("alice");
+
3224 auto const bob = Account("bob");
+
3225
+
3226 env.fund(XRP(10000), alice, bob);
+
3227 env.close();
3228
-
3229 // Batch Txn
-
3230 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3231 auto const [txIDs, batchID] = submitBatch(
-
3232 env,
-
3233 tesSUCCESS,
-
3234 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3235 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 1),
-
3236 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 2));
-
3237 env.close();
-
3238
-
3239 {
-
3240 std::vector<TestLedgerData> testCases = {
-
3241 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3242 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3243 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3244 };
-
3245 validateClosedLedger(env, testCases);
-
3246 }
-
3247
-
3248 env.close();
-
3249 {
-
3250 // next ledger is empty
-
3251 std::vector<TestLedgerData> testCases = {};
-
3252 validateClosedLedger(env, testCases);
-
3253 }
-
3254 }
-
3255
-
3256 // After Batch Txn w/ same sequence
-
3257 {
-
3258 // IMPORTANT: The batch txn is applied first, then the noop txn.
-
3259 // Because of this ordering, the noop txn is not applied and is
-
3260 // overwritten by the payment in the batch transaction.
-
3261 test::jtx::Env env{*this, envconfig()};
-
3262 env.fund(XRP(10000), alice, bob);
-
3263 env.close();
+
3229 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3230 env(ticket::create(alice, 10));
+
3231 env.close();
+
3232
+
3233 auto const aliceSeq = env.seq(alice);
+
3234 auto const preAlice = env.balance(alice);
+
3235 auto const preBob = env.balance(bob);
+
3236
+
3237 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3238 auto const [txIDs, batchID] = submitBatch(
+
3239 env,
+
3240 tesSUCCESS,
+
3241 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3242 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
+
3243 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
+
3244 ticket::use(aliceTicketSeq));
+
3245 env.close();
+
3246
+
3247 std::vector<TestLedgerData> testCases = {
+
3248 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3249 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3250 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3251 };
+
3252 validateClosedLedger(env, testCases);
+
3253
+
3254 auto const sle = env.le(keylet::account(alice));
+
3255 BEAST_EXPECT(sle);
+
3256 BEAST_EXPECT(sle->getFieldU32(sfOwnerCount) == 8);
+
3257 BEAST_EXPECT(sle->getFieldU32(sfTicketCount) == 8);
+
3258
+
3259 BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
+
3260 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
3261 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
3262 }
+
3263 }
+
3264
-
3265 auto const aliceSeq = env.seq(alice);
-
3266 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3267 auto const [txIDs, batchID] = submitBatch(
-
3268 env,
-
3269 tesSUCCESS,
-
3270 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3271 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 1),
-
3272 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 2));
-
3273
-
3274 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 1));
-
3275 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
-
3276 env(noopTxn, ter(tesSUCCESS));
-
3277 env.close();
-
3278
-
3279 {
-
3280 std::vector<TestLedgerData> testCases = {
-
3281 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3282 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3283 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3284 };
-
3285 validateClosedLedger(env, testCases);
-
3286 }
+
3265 void
+
+ +
3267 {
+
3268 testcase("sequence open ledger");
+
3269
+
3270 using namespace test::jtx;
+
3271 using namespace std::literals;
+
3272
+
3273 auto const alice = Account("alice");
+
3274 auto const bob = Account("bob");
+
3275 auto const carol = Account("carol");
+
3276
+
3277 // Before Batch Txn w/ retry following ledger
+
3278 {
+
3279 // IMPORTANT: The batch txn is applied first, then the noop txn.
+
3280 // Because of this ordering, the noop txn is not applied and is
+
3281 // overwritten by the payment in the batch transaction. Because the
+
3282 // terPRE_SEQ is outside of the batch this noop transaction will ge
+
3283 // reapplied in the following ledger
+
3284 test::jtx::Env env{*this, features};
+
3285 env.fund(XRP(10000), alice, bob, carol);
+
3286 env.close();
3287
-
3288 env.close();
-
3289 {
-
3290 // next ledger is empty
-
3291 std::vector<TestLedgerData> testCases = {};
-
3292 validateClosedLedger(env, testCases);
-
3293 }
-
3294 }
+
3288 auto const aliceSeq = env.seq(alice);
+
3289 auto const carolSeq = env.seq(carol);
+
3290
+
3291 // AccountSet Txn
+
3292 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 2));
+
3293 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
+
3294 env(noopTxn, ter(terPRE_SEQ));
3295
-
3296 // Outer Batch terPRE_SEQ
-
3297 {
-
3298 test::jtx::Env env{*this, envconfig()};
-
3299 env.fund(XRP(10000), alice, bob, carol);
-
3300 env.close();
-
3301
-
3302 auto const aliceSeq = env.seq(alice);
-
3303 auto const carolSeq = env.seq(carol);
-
3304
-
3305 // Batch Txn
-
3306 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3307 auto const [txIDs, batchID] = submitBatch(
-
3308 env,
-
3309 terPRE_SEQ,
-
3310 batch::outer(carol, carolSeq + 1, batchFee, tfAllOrNothing),
-
3311 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
-
3312 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
-
3313 batch::sig(alice));
-
3314
-
3315 // AccountSet Txn
-
3316 auto const noopTxn = env.jt(noop(carol), seq(carolSeq));
-
3317 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
-
3318 env(noopTxn, ter(tesSUCCESS));
-
3319 env.close();
-
3320
-
3321 {
-
3322 std::vector<TestLedgerData> testCases = {
-
3323 {0, "AccountSet", "tesSUCCESS", noopTxnID, std::nullopt},
-
3324 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3325 {2, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3326 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3327 };
-
3328 validateClosedLedger(env, testCases);
-
3329 }
-
3330
-
3331 env.close();
-
3332 {
-
3333 // next ledger contains no transactions
-
3334 std::vector<TestLedgerData> testCases = {};
-
3335 validateClosedLedger(env, testCases);
-
3336 }
-
3337 }
-
3338 }
-
-
3339
-
3340 void
-
- -
3342 {
-
3343 testcase("tickets open ledger");
-
3344
-
3345 using namespace test::jtx;
-
3346 using namespace std::literals;
-
3347
-
3348 auto const alice = Account("alice");
-
3349 auto const bob = Account("bob");
+
3296 // Batch Txn
+
3297 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3298 auto const [txIDs, batchID] = submitBatch(
+
3299 env,
+
3300 tesSUCCESS,
+
3301 batch::outer(carol, carolSeq, batchFee, tfAllOrNothing),
+
3302 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
3303 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
+
3304 batch::sig(alice));
+
3305 env.close();
+
3306
+
3307 {
+
3308 std::vector<TestLedgerData> testCases = {
+
3309 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3310 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3311 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3312 };
+
3313 validateClosedLedger(env, testCases);
+
3314 }
+
3315
+
3316 env.close();
+
3317 {
+
3318 // next ledger contains noop txn
+
3319 std::vector<TestLedgerData> testCases = {
+
3320 {0, "AccountSet", "tesSUCCESS", noopTxnID, std::nullopt},
+
3321 };
+
3322 validateClosedLedger(env, testCases);
+
3323 }
+
3324 }
+
3325
+
3326 // Before Batch Txn w/ same sequence
+
3327 {
+
3328 // IMPORTANT: The batch txn is applied first, then the noop txn.
+
3329 // Because of this ordering, the noop txn is not applied and is
+
3330 // overwritten by the payment in the batch transaction.
+
3331 test::jtx::Env env{*this, features};
+
3332 env.fund(XRP(10000), alice, bob);
+
3333 env.close();
+
3334
+
3335 auto const aliceSeq = env.seq(alice);
+
3336
+
3337 // AccountSet Txn
+
3338 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 1));
+
3339 env(noopTxn, ter(terPRE_SEQ));
+
3340
+
3341 // Batch Txn
+
3342 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3343 auto const [txIDs, batchID] = submitBatch(
+
3344 env,
+
3345 tesSUCCESS,
+
3346 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3347 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 1),
+
3348 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 2));
+
3349 env.close();
3350
-
3351 // Before Batch Txn w/ same ticket
-
3352 {
-
3353 // IMPORTANT: The batch txn is applied first, then the noop txn.
-
3354 // Because of this ordering, the noop txn is not applied and is
-
3355 // overwritten by the payment in the batch transaction.
-
3356 test::jtx::Env env{*this, envconfig()};
-
3357 env.fund(XRP(10000), alice, bob);
-
3358 env.close();
+
3351 {
+
3352 std::vector<TestLedgerData> testCases = {
+
3353 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3354 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3355 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3356 };
+
3357 validateClosedLedger(env, testCases);
+
3358 }
3359
-
3360 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3361 env(ticket::create(alice, 10));
-
3362 env.close();
-
3363
-
3364 auto const aliceSeq = env.seq(alice);
-
3365
-
3366 // AccountSet Txn
-
3367 auto const noopTxn =
-
3368 env.jt(noop(alice), ticket::use(aliceTicketSeq + 1));
-
3369 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
-
3370 env(noopTxn, ter(tesSUCCESS));
-
3371
-
3372 // Batch Txn
-
3373 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3374 auto const [txIDs, batchID] = submitBatch(
-
3375 env,
-
3376 tesSUCCESS,
-
3377 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3378 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3379 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
-
3380 ticket::use(aliceTicketSeq));
-
3381 env.close();
-
3382
-
3383 {
-
3384 std::vector<TestLedgerData> testCases = {
-
3385 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3386 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3387 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3388 };
-
3389 validateClosedLedger(env, testCases);
-
3390 }
-
3391
-
3392 env.close();
-
3393 {
-
3394 // next ledger is empty
-
3395 std::vector<TestLedgerData> testCases = {};
-
3396 validateClosedLedger(env, testCases);
-
3397 }
-
3398 }
+
3360 env.close();
+
3361 {
+
3362 // next ledger is empty
+
3363 std::vector<TestLedgerData> testCases = {};
+
3364 validateClosedLedger(env, testCases);
+
3365 }
+
3366 }
+
3367
+
3368 // After Batch Txn w/ same sequence
+
3369 {
+
3370 // IMPORTANT: The batch txn is applied first, then the noop txn.
+
3371 // Because of this ordering, the noop txn is not applied and is
+
3372 // overwritten by the payment in the batch transaction.
+
3373 test::jtx::Env env{*this, features};
+
3374 env.fund(XRP(10000), alice, bob);
+
3375 env.close();
+
3376
+
3377 auto const aliceSeq = env.seq(alice);
+
3378 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3379 auto const [txIDs, batchID] = submitBatch(
+
3380 env,
+
3381 tesSUCCESS,
+
3382 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3383 batch::inner(pay(alice, bob, XRP(1)), aliceSeq + 1),
+
3384 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 2));
+
3385
+
3386 auto const noopTxn = env.jt(noop(alice), seq(aliceSeq + 1));
+
3387 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
+
3388 env(noopTxn, ter(tesSUCCESS));
+
3389 env.close();
+
3390
+
3391 {
+
3392 std::vector<TestLedgerData> testCases = {
+
3393 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3394 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3395 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3396 };
+
3397 validateClosedLedger(env, testCases);
+
3398 }
3399
-
3400 // After Batch Txn w/ same ticket
-
3401 {
-
3402 // IMPORTANT: The batch txn is applied first, then the noop txn.
-
3403 // Because of this ordering, the noop txn is not applied and is
-
3404 // overwritten by the payment in the batch transaction.
-
3405 test::jtx::Env env{*this, envconfig()};
-
3406 env.fund(XRP(10000), alice, bob);
-
3407 env.close();
-
3408
-
3409 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3410 env(ticket::create(alice, 10));
-
3411 env.close();
-
3412
-
3413 auto const aliceSeq = env.seq(alice);
-
3414
-
3415 // Batch Txn
-
3416 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3417 auto const [txIDs, batchID] = submitBatch(
-
3418 env,
-
3419 tesSUCCESS,
-
3420 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3421 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3422 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
-
3423 ticket::use(aliceTicketSeq));
-
3424
-
3425 // AccountSet Txn
-
3426 auto const noopTxn =
-
3427 env.jt(noop(alice), ticket::use(aliceTicketSeq + 1));
-
3428 env(noopTxn);
-
3429
-
3430 env.close();
-
3431 {
-
3432 std::vector<TestLedgerData> testCases = {
-
3433 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3434 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3435 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3436 };
-
3437 validateClosedLedger(env, testCases);
-
3438 }
-
3439
-
3440 env.close();
-
3441 {
-
3442 // next ledger is empty
-
3443 std::vector<TestLedgerData> testCases = {};
-
3444 validateClosedLedger(env, testCases);
-
3445 }
-
3446 }
-
3447 }
+
3400 env.close();
+
3401 {
+
3402 // next ledger is empty
+
3403 std::vector<TestLedgerData> testCases = {};
+
3404 validateClosedLedger(env, testCases);
+
3405 }
+
3406 }
+
3407
+
3408 // Outer Batch terPRE_SEQ
+
3409 {
+
3410 test::jtx::Env env{*this, features};
+
3411 env.fund(XRP(10000), alice, bob, carol);
+
3412 env.close();
+
3413
+
3414 auto const aliceSeq = env.seq(alice);
+
3415 auto const carolSeq = env.seq(carol);
+
3416
+
3417 // Batch Txn
+
3418 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3419 auto const [txIDs, batchID] = submitBatch(
+
3420 env,
+
3421 terPRE_SEQ,
+
3422 batch::outer(carol, carolSeq + 1, batchFee, tfAllOrNothing),
+
3423 batch::inner(pay(alice, bob, XRP(1)), aliceSeq),
+
3424 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
+
3425 batch::sig(alice));
+
3426
+
3427 // AccountSet Txn
+
3428 auto const noopTxn = env.jt(noop(carol), seq(carolSeq));
+
3429 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
+
3430 env(noopTxn, ter(tesSUCCESS));
+
3431 env.close();
+
3432
+
3433 {
+
3434 std::vector<TestLedgerData> testCases = {
+
3435 {0, "AccountSet", "tesSUCCESS", noopTxnID, std::nullopt},
+
3436 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3437 {2, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3438 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3439 };
+
3440 validateClosedLedger(env, testCases);
+
3441 }
+
3442
+
3443 env.close();
+
3444 {
+
3445 // next ledger contains no transactions
+
3446 std::vector<TestLedgerData> testCases = {};
+
3447 validateClosedLedger(env, testCases);
+
3448 }
+
3449 }
+
3450 }
-
3448
-
3449 void
-
- -
3451 {
-
3452 testcase("objects open ledger");
-
3453
-
3454 using namespace test::jtx;
-
3455 using namespace std::literals;
+
3451
+
3452 void
+
+ +
3454 {
+
3455 testcase("tickets open ledger");
3456
-
3457 auto const alice = Account("alice");
-
3458 auto const bob = Account("bob");
+
3457 using namespace test::jtx;
+
3458 using namespace std::literals;
3459
-
3460 // Consume Object Before Batch Txn
-
3461 {
-
3462 // IMPORTANT: The initial result of `CheckCash` is tecNO_ENTRY
-
3463 // because the create transaction has not been applied because the
-
3464 // batch will run in the close ledger process. The batch will be
-
3465 // allied and then retry this transaction in the current ledger.
-
3466
-
3467 test::jtx::Env env{*this, envconfig()};
-
3468 env.fund(XRP(10000), alice, bob);
-
3469 env.close();
-
3470
-
3471 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3472 env(ticket::create(alice, 10));
-
3473 env.close();
-
3474
-
3475 auto const aliceSeq = env.seq(alice);
-
3476
-
3477 // CheckCash Txn
-
3478 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
-
3479 auto const objTxn = env.jt(check::cash(bob, chkID, XRP(10)));
-
3480 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
-
3481 env(objTxn, ter(tecNO_ENTRY));
-
3482
-
3483 // Batch Txn
-
3484 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3485 auto const [txIDs, batchID] = submitBatch(
-
3486 env,
-
3487 tesSUCCESS,
-
3488 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3489 batch::inner(check::create(alice, bob, XRP(10)), aliceSeq),
+
3460 auto const alice = Account("alice");
+
3461 auto const bob = Account("bob");
+
3462
+
3463 // Before Batch Txn w/ same ticket
+
3464 {
+
3465 // IMPORTANT: The batch txn is applied first, then the noop txn.
+
3466 // Because of this ordering, the noop txn is not applied and is
+
3467 // overwritten by the payment in the batch transaction.
+
3468 test::jtx::Env env{*this, features};
+
3469 env.fund(XRP(10000), alice, bob);
+
3470 env.close();
+
3471
+
3472 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3473 env(ticket::create(alice, 10));
+
3474 env.close();
+
3475
+
3476 auto const aliceSeq = env.seq(alice);
+
3477
+
3478 // AccountSet Txn
+
3479 auto const noopTxn =
+
3480 env.jt(noop(alice), ticket::use(aliceTicketSeq + 1));
+
3481 auto const noopTxnID = to_string(noopTxn.stx->getTransactionID());
+
3482 env(noopTxn, ter(tesSUCCESS));
+
3483
+
3484 // Batch Txn
+
3485 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3486 auto const [txIDs, batchID] = submitBatch(
+
3487 env,
+
3488 tesSUCCESS,
+
3489 batch::outer(alice, 0, batchFee, tfAllOrNothing),
3490 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3491 ticket::use(aliceTicketSeq));
-
3492
+
3491 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
+
3492 ticket::use(aliceTicketSeq));
3493 env.close();
-
3494 {
-
3495 std::vector<TestLedgerData> testCases = {
-
3496 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3497 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
-
3498 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3499 {3, "CheckCash", "tesSUCCESS", objTxnID, std::nullopt},
+
3494
+
3495 {
+
3496 std::vector<TestLedgerData> testCases = {
+
3497 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3498 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3499 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
3500 };
3501 validateClosedLedger(env, testCases);
3502 }
@@ -3658,911 +3658,1029 @@ $(document).ready(function() { init_codefold(0); });
3509 }
3510 }
3511
-
3512 // Create Object Before Batch Txn
+
3512 // After Batch Txn w/ same ticket
3513 {
-
3514 test::jtx::Env env{*this, envconfig()};
-
3515 env.fund(XRP(10000), alice, bob);
-
3516 env.close();
-
3517
-
3518 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3519 env(ticket::create(alice, 10));
-
3520 env.close();
-
3521
-
3522 auto const aliceSeq = env.seq(alice);
-
3523 auto const bobSeq = env.seq(bob);
+
3514 // IMPORTANT: The batch txn is applied first, then the noop txn.
+
3515 // Because of this ordering, the noop txn is not applied and is
+
3516 // overwritten by the payment in the batch transaction.
+
3517 test::jtx::Env env{*this, features};
+
3518 env.fund(XRP(10000), alice, bob);
+
3519 env.close();
+
3520
+
3521 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3522 env(ticket::create(alice, 10));
+
3523 env.close();
3524
-
3525 // CheckCreate Txn
-
3526 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
-
3527 auto const objTxn = env.jt(check::create(alice, bob, XRP(10)));
-
3528 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
-
3529 env(objTxn, ter(tesSUCCESS));
-
3530
-
3531 // Batch Txn
-
3532 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3533 auto const [txIDs, batchID] = submitBatch(
-
3534 env,
-
3535 tesSUCCESS,
-
3536 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3537 batch::inner(check::cash(bob, chkID, XRP(10)), bobSeq),
-
3538 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3539 ticket::use(aliceTicketSeq),
-
3540 batch::sig(bob));
+
3525 auto const aliceSeq = env.seq(alice);
+
3526
+
3527 // Batch Txn
+
3528 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3529 auto const [txIDs, batchID] = submitBatch(
+
3530 env,
+
3531 tesSUCCESS,
+
3532 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3533 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
+
3534 batch::inner(pay(alice, bob, XRP(2)), aliceSeq),
+
3535 ticket::use(aliceTicketSeq));
+
3536
+
3537 // AccountSet Txn
+
3538 auto const noopTxn =
+
3539 env.jt(noop(alice), ticket::use(aliceTicketSeq + 1));
+
3540 env(noopTxn);
3541
3542 env.close();
3543 {
3544 std::vector<TestLedgerData> testCases = {
-
3545 {0, "CheckCreate", "tesSUCCESS", objTxnID, std::nullopt},
-
3546 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3547 {2, "CheckCash", "tesSUCCESS", txIDs[0], batchID},
-
3548 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3549 };
-
3550 validateClosedLedger(env, testCases);
-
3551 }
-
3552 }
-
3553
-
3554 // After Batch Txn
-
3555 {
-
3556 // IMPORTANT: The initial result of `CheckCash` is tecNO_ENTRY
-
3557 // because the create transaction has not been applied because the
-
3558 // batch will run in the close ledger process. The batch will be
-
3559 // applied and then retry this transaction in the current ledger.
+
3545 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3546 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3547 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3548 };
+
3549 validateClosedLedger(env, testCases);
+
3550 }
+
3551
+
3552 env.close();
+
3553 {
+
3554 // next ledger is empty
+
3555 std::vector<TestLedgerData> testCases = {};
+
3556 validateClosedLedger(env, testCases);
+
3557 }
+
3558 }
+
3559 }
+
3560
-
3561 test::jtx::Env env{*this, envconfig()};
-
3562 env.fund(XRP(10000), alice, bob);
-
3563 env.close();
-
3564
-
3565 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
-
3566 env(ticket::create(alice, 10));
-
3567 env.close();
+
3561 void
+
+ +
3563 {
+
3564 testcase("objects open ledger");
+
3565
+
3566 using namespace test::jtx;
+
3567 using namespace std::literals;
3568
-
3569 auto const aliceSeq = env.seq(alice);
-
3570
-
3571 // Batch Txn
-
3572 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3573 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
-
3574 auto const [txIDs, batchID] = submitBatch(
-
3575 env,
-
3576 tesSUCCESS,
-
3577 batch::outer(alice, 0, batchFee, tfAllOrNothing),
-
3578 batch::inner(check::create(alice, bob, XRP(10)), aliceSeq),
-
3579 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
-
3580 ticket::use(aliceTicketSeq));
-
3581
-
3582 // CheckCash Txn
-
3583 auto const objTxn = env.jt(check::cash(bob, chkID, XRP(10)));
-
3584 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
-
3585 env(objTxn, ter(tecNO_ENTRY));
+
3569 auto const alice = Account("alice");
+
3570 auto const bob = Account("bob");
+
3571
+
3572 // Consume Object Before Batch Txn
+
3573 {
+
3574 // IMPORTANT: The initial result of `CheckCash` is tecNO_ENTRY
+
3575 // because the create transaction has not been applied because the
+
3576 // batch will run in the close ledger process. The batch will be
+
3577 // allied and then retry this transaction in the current ledger.
+
3578
+
3579 test::jtx::Env env{*this, features};
+
3580 env.fund(XRP(10000), alice, bob);
+
3581 env.close();
+
3582
+
3583 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3584 env(ticket::create(alice, 10));
+
3585 env.close();
3586
-
3587 env.close();
-
3588 {
-
3589 std::vector<TestLedgerData> testCases = {
-
3590 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3591 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
-
3592 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3593 {3, "CheckCash", "tesSUCCESS", objTxnID, std::nullopt},
-
3594 };
-
3595 validateClosedLedger(env, testCases);
-
3596 }
-
3597 }
-
3598 }
-
-
3599
-
3600 void
-
- -
3602 {
-
3603 testcase("pseudo txn with tfInnerBatchTxn");
+
3587 auto const aliceSeq = env.seq(alice);
+
3588
+
3589 // CheckCash Txn
+
3590 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
+
3591 auto const objTxn = env.jt(check::cash(bob, chkID, XRP(10)));
+
3592 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
+
3593 env(objTxn, ter(tecNO_ENTRY));
+
3594
+
3595 // Batch Txn
+
3596 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3597 auto const [txIDs, batchID] = submitBatch(
+
3598 env,
+
3599 tesSUCCESS,
+
3600 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3601 batch::inner(check::create(alice, bob, XRP(10)), aliceSeq),
+
3602 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
+
3603 ticket::use(aliceTicketSeq));
3604
-
3605 using namespace test::jtx;
-
3606 using namespace std::literals;
-
3607
-
3608 test::jtx::Env env{*this, envconfig()};
-
3609
-
3610 auto const alice = Account("alice");
-
3611 auto const bob = Account("bob");
-
3612 env.fund(XRP(10000), alice, bob);
-
3613 env.close();
-
3614
-
3615 STTx const stx = STTx(ttAMENDMENT, [&](auto& obj) {
-
3616 obj.setAccountID(sfAccount, AccountID());
-
3617 obj.setFieldH256(sfAmendment, uint256(2));
-
3618 obj.setFieldU32(sfLedgerSequence, env.seq(alice));
-
3619 obj.setFieldU32(sfFlags, tfInnerBatchTxn);
-
3620 });
-
3621
-
3622 std::string reason;
-
3623 BEAST_EXPECT(isPseudoTx(stx));
-
3624 BEAST_EXPECT(!passesLocalChecks(stx, reason));
-
3625 BEAST_EXPECT(reason == "Cannot submit pseudo transactions.");
-
3626 env.app().openLedger().modify([&](OpenView& view, beast::Journal j) {
-
3627 auto const result = xrpl::apply(env.app(), view, stx, tapNONE, j);
-
3628 BEAST_EXPECT(!result.applied && result.ter == temINVALID_FLAG);
-
3629 return result.applied;
-
3630 });
-
3631 }
+
3605 env.close();
+
3606 {
+
3607 std::vector<TestLedgerData> testCases = {
+
3608 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3609 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
+
3610 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3611 {3, "CheckCash", "tesSUCCESS", objTxnID, std::nullopt},
+
3612 };
+
3613 validateClosedLedger(env, testCases);
+
3614 }
+
3615
+
3616 env.close();
+
3617 {
+
3618 // next ledger is empty
+
3619 std::vector<TestLedgerData> testCases = {};
+
3620 validateClosedLedger(env, testCases);
+
3621 }
+
3622 }
+
3623
+
3624 // Create Object Before Batch Txn
+
3625 {
+
3626 test::jtx::Env env{*this, features};
+
3627 env.fund(XRP(10000), alice, bob);
+
3628 env.close();
+
3629
+
3630 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3631 env(ticket::create(alice, 10));
+
3632 env.close();
+
3633
+
3634 auto const aliceSeq = env.seq(alice);
+
3635 auto const bobSeq = env.seq(bob);
+
3636
+
3637 // CheckCreate Txn
+
3638 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
+
3639 auto const objTxn = env.jt(check::create(alice, bob, XRP(10)));
+
3640 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
+
3641 env(objTxn, ter(tesSUCCESS));
+
3642
+
3643 // Batch Txn
+
3644 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3645 auto const [txIDs, batchID] = submitBatch(
+
3646 env,
+
3647 tesSUCCESS,
+
3648 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3649 batch::inner(check::cash(bob, chkID, XRP(10)), bobSeq),
+
3650 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
+
3651 ticket::use(aliceTicketSeq),
+
3652 batch::sig(bob));
+
3653
+
3654 env.close();
+
3655 {
+
3656 std::vector<TestLedgerData> testCases = {
+
3657 {0, "CheckCreate", "tesSUCCESS", objTxnID, std::nullopt},
+
3658 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3659 {2, "CheckCash", "tesSUCCESS", txIDs[0], batchID},
+
3660 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3661 };
+
3662 validateClosedLedger(env, testCases);
+
3663 }
+
3664 }
+
3665
+
3666 // After Batch Txn
+
3667 {
+
3668 // IMPORTANT: The initial result of `CheckCash` is tecNO_ENTRY
+
3669 // because the create transaction has not been applied because the
+
3670 // batch will run in the close ledger process. The batch will be
+
3671 // applied and then retry this transaction in the current ledger.
+
3672
+
3673 test::jtx::Env env{*this, features};
+
3674 env.fund(XRP(10000), alice, bob);
+
3675 env.close();
+
3676
+
3677 std::uint32_t aliceTicketSeq{env.seq(alice) + 1};
+
3678 env(ticket::create(alice, 10));
+
3679 env.close();
+
3680
+
3681 auto const aliceSeq = env.seq(alice);
+
3682
+
3683 // Batch Txn
+
3684 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
3685 uint256 const chkID{getCheckIndex(alice, aliceSeq)};
+
3686 auto const [txIDs, batchID] = submitBatch(
+
3687 env,
+
3688 tesSUCCESS,
+
3689 batch::outer(alice, 0, batchFee, tfAllOrNothing),
+
3690 batch::inner(check::create(alice, bob, XRP(10)), aliceSeq),
+
3691 batch::inner(pay(alice, bob, XRP(1)), 0, aliceTicketSeq + 1),
+
3692 ticket::use(aliceTicketSeq));
+
3693
+
3694 // CheckCash Txn
+
3695 auto const objTxn = env.jt(check::cash(bob, chkID, XRP(10)));
+
3696 auto const objTxnID = to_string(objTxn.stx->getTransactionID());
+
3697 env(objTxn, ter(tecNO_ENTRY));
+
3698
+
3699 env.close();
+
3700 {
+
3701 std::vector<TestLedgerData> testCases = {
+
3702 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3703 {1, "CheckCreate", "tesSUCCESS", txIDs[0], batchID},
+
3704 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3705 {3, "CheckCash", "tesSUCCESS", objTxnID, std::nullopt},
+
3706 };
+
3707 validateClosedLedger(env, testCases);
+
3708 }
+
3709 }
+
3710 }
-
3632
-
3633 void
-
- -
3635 {
-
3636 testcase("batch open ledger");
-
3637 // IMPORTANT: When a transaction is submitted outside of a batch and
-
3638 // another transaction is part of the batch, the batch might fail
-
3639 // because the sequence is out of order. This is because the canonical
-
3640 // order of transactions is determined by the account first. So in this
-
3641 // case, alice's batch comes after bobs self submitted transaction even
-
3642 // though the payment was submitted after the batch.
-
3643
-
3644 using namespace test::jtx;
-
3645 using namespace std::literals;
-
3646
-
3647 test::jtx::Env env{*this, envconfig()};
-
3648 XRPAmount const baseFee = env.current()->fees().base;
-
3649
-
3650 auto const alice = Account("alice");
-
3651 auto const bob = Account("bob");
-
3652
-
3653 env.fund(XRP(10000), alice, bob);
-
3654 env.close();
-
3655
-
3656 env(noop(bob), ter(tesSUCCESS));
-
3657 env.close();
-
3658
-
3659 auto const aliceSeq = env.seq(alice);
-
3660 auto const preAlice = env.balance(alice);
-
3661 auto const preBob = env.balance(bob);
-
3662 auto const bobSeq = env.seq(bob);
-
3663
-
3664 // Alice Pays Bob (Open Ledger)
-
3665 auto const payTxn1 = env.jt(pay(alice, bob, XRP(10)), seq(aliceSeq));
-
3666 auto const payTxn1ID = to_string(payTxn1.stx->getTransactionID());
-
3667 env(payTxn1, ter(tesSUCCESS));
-
3668
-
3669 // Alice & Bob Atomic Batch
-
3670 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3671 auto const [txIDs, batchID] = submitBatch(
-
3672 env,
-
3673 tesSUCCESS,
-
3674 batch::outer(alice, aliceSeq + 1, batchFee, tfAllOrNothing),
-
3675 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 2),
-
3676 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
3677 batch::sig(bob));
-
3678
-
3679 // Bob pays Alice (Open Ledger)
-
3680 auto const payTxn2 = env.jt(pay(bob, alice, XRP(5)), seq(bobSeq + 1));
-
3681 auto const payTxn2ID = to_string(payTxn2.stx->getTransactionID());
-
3682 env(payTxn2, ter(terPRE_SEQ));
-
3683 env.close();
-
3684
-
3685 std::vector<TestLedgerData> testCases = {
-
3686 {0, "Payment", "tesSUCCESS", payTxn1ID, std::nullopt},
-
3687 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3688 {2, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3689 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3690 };
-
3691 validateClosedLedger(env, testCases);
-
3692
-
3693 env.close();
-
3694 {
-
3695 // next ledger includes the payment txn
-
3696 std::vector<TestLedgerData> testCases = {
-
3697 {0, "Payment", "tesSUCCESS", payTxn2ID, std::nullopt},
-
3698 };
-
3699 validateClosedLedger(env, testCases);
-
3700 }
-
3701
-
3702 // Alice consumes sequences (# of txns)
-
3703 BEAST_EXPECT(env.seq(alice) == aliceSeq + 3);
-
3704
-
3705 // Alice consumes sequences (# of txns)
-
3706 BEAST_EXPECT(env.seq(bob) == bobSeq + 2);
-
3707
-
3708 // Alice pays XRP & Fee; Bob receives XRP & pays Fee
-
3709 BEAST_EXPECT(
-
3710 env.balance(alice) == preAlice - XRP(10) - batchFee - baseFee);
-
3711 BEAST_EXPECT(env.balance(bob) == preBob + XRP(10) - baseFee);
-
3712 }
-
-
3713
-
3714 void
-
- -
3716 {
-
3717 testcase("batch tx queue");
-
3718
-
3719 using namespace test::jtx;
-
3720 using namespace std::literals;
+
3711
+
3712 void
+
+ +
3714 {
+
3715 testcase("pseudo txn with tfInnerBatchTxn");
+
3716
+
3717 using namespace test::jtx;
+
3718 using namespace std::literals;
+
3719
+
3720 test::jtx::Env env{*this, features};
3721
-
3722 // only outer batch transactions are counter towards the queue size
-
3723 {
-
3724 test::jtx::Env env{
-
3725 *this,
-
3726 makeSmallQueueConfig(
-
3727 {{"minimum_txn_in_ledger_standalone", "2"}}),
-
3728 nullptr,
- -
3730
-
3731 auto alice = Account("alice");
-
3732 auto bob = Account("bob");
-
3733 auto carol = Account("carol");
-
3734
-
3735 // Fund across several ledgers so the TxQ metrics stay restricted.
-
3736 env.fund(XRP(10000), noripple(alice, bob));
-
3737 env.close(env.now() + 5s, 10000ms);
-
3738 env.fund(XRP(10000), noripple(carol));
-
3739 env.close(env.now() + 5s, 10000ms);
-
3740
-
3741 // Fill the ledger
-
3742 env(noop(alice));
-
3743 env(noop(alice));
-
3744 env(noop(alice));
-
3745 checkMetrics(*this, env, 0, std::nullopt, 3, 2);
-
3746
-
3747 env(noop(carol), ter(terQUEUED));
-
3748 checkMetrics(*this, env, 1, std::nullopt, 3, 2);
-
3749
-
3750 auto const aliceSeq = env.seq(alice);
-
3751 auto const bobSeq = env.seq(bob);
-
3752 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3753
-
3754 // Queue Batch
-
3755 {
-
3756 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3757 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
3758 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
3759 batch::sig(bob),
-
3760 ter(terQUEUED));
-
3761 }
-
3762
-
3763 checkMetrics(*this, env, 2, std::nullopt, 3, 2);
+
3722 auto const alice = Account("alice");
+
3723 auto const bob = Account("bob");
+
3724 env.fund(XRP(10000), alice, bob);
+
3725 env.close();
+
3726
+
3727 STTx const stx = STTx(ttAMENDMENT, [&](auto& obj) {
+
3728 obj.setAccountID(sfAccount, AccountID());
+
3729 obj.setFieldH256(sfAmendment, uint256(2));
+
3730 obj.setFieldU32(sfLedgerSequence, env.seq(alice));
+
3731 obj.setFieldU32(sfFlags, tfInnerBatchTxn);
+
3732 });
+
3733
+
3734 std::string reason;
+
3735 BEAST_EXPECT(isPseudoTx(stx));
+
3736 BEAST_EXPECT(!passesLocalChecks(stx, reason));
+
3737 BEAST_EXPECT(reason == "Cannot submit pseudo transactions.");
+
3738 env.app().openLedger().modify([&](OpenView& view, beast::Journal j) {
+
3739 auto const result = xrpl::apply(env.app(), view, stx, tapNONE, j);
+
3740 BEAST_EXPECT(!result.applied && result.ter == temINVALID_FLAG);
+
3741 return result.applied;
+
3742 });
+
3743 }
+
+
3744
+
3745 void
+
+ +
3747 {
+
3748 testcase("batch open ledger");
+
3749 // IMPORTANT: When a transaction is submitted outside of a batch and
+
3750 // another transaction is part of the batch, the batch might fail
+
3751 // because the sequence is out of order. This is because the canonical
+
3752 // order of transactions is determined by the account first. So in this
+
3753 // case, alice's batch comes after bobs self submitted transaction even
+
3754 // though the payment was submitted after the batch.
+
3755
+
3756 using namespace test::jtx;
+
3757 using namespace std::literals;
+
3758
+
3759 test::jtx::Env env{*this, features};
+
3760 XRPAmount const baseFee = env.current()->fees().base;
+
3761
+
3762 auto const alice = Account("alice");
+
3763 auto const bob = Account("bob");
3764
-
3765 // Replace Queued Batch
-
3766 {
-
3767 env(batch::outer(
-
3768 alice,
-
3769 aliceSeq,
-
3770 openLedgerFee(env, batchFee),
- -
3772 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
3773 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
3774 batch::sig(bob),
-
3775 ter(tesSUCCESS));
-
3776 env.close();
-
3777 }
-
3778
-
3779 checkMetrics(*this, env, 0, 12, 1, 6);
-
3780 }
-
3781
-
3782 // inner batch transactions are counter towards the ledger tx count
-
3783 {
-
3784 test::jtx::Env env{
-
3785 *this,
-
3786 makeSmallQueueConfig(
-
3787 {{"minimum_txn_in_ledger_standalone", "2"}}),
-
3788 nullptr,
- +
3765 env.fund(XRP(10000), alice, bob);
+
3766 env.close();
+
3767
+
3768 env(noop(bob), ter(tesSUCCESS));
+
3769 env.close();
+
3770
+
3771 auto const aliceSeq = env.seq(alice);
+
3772 auto const preAlice = env.balance(alice);
+
3773 auto const preBob = env.balance(bob);
+
3774 auto const bobSeq = env.seq(bob);
+
3775
+
3776 // Alice Pays Bob (Open Ledger)
+
3777 auto const payTxn1 = env.jt(pay(alice, bob, XRP(10)), seq(aliceSeq));
+
3778 auto const payTxn1ID = to_string(payTxn1.stx->getTransactionID());
+
3779 env(payTxn1, ter(tesSUCCESS));
+
3780
+
3781 // Alice & Bob Atomic Batch
+
3782 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3783 auto const [txIDs, batchID] = submitBatch(
+
3784 env,
+
3785 tesSUCCESS,
+
3786 batch::outer(alice, aliceSeq + 1, batchFee, tfAllOrNothing),
+
3787 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 2),
+
3788 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
3789 batch::sig(bob));
3790
-
3791 auto alice = Account("alice");
-
3792 auto bob = Account("bob");
-
3793 auto carol = Account("carol");
-
3794
-
3795 // Fund across several ledgers so the TxQ metrics stay restricted.
-
3796 env.fund(XRP(10000), noripple(alice, bob));
-
3797 env.close(env.now() + 5s, 10000ms);
-
3798 env.fund(XRP(10000), noripple(carol));
-
3799 env.close(env.now() + 5s, 10000ms);
-
3800
-
3801 // Fill the ledger leaving room for 1 queued transaction
-
3802 env(noop(alice));
-
3803 env(noop(alice));
-
3804 checkMetrics(*this, env, 0, std::nullopt, 2, 2);
-
3805
-
3806 auto const aliceSeq = env.seq(alice);
-
3807 auto const bobSeq = env.seq(bob);
-
3808 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3809
-
3810 // Batch Successful
-
3811 {
-
3812 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3813 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
-
3814 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
-
3815 batch::sig(bob),
-
3816 ter(tesSUCCESS));
-
3817 }
-
3818
-
3819 checkMetrics(*this, env, 0, std::nullopt, 3, 2);
-
3820
-
3821 env(noop(carol), ter(terQUEUED));
-
3822 checkMetrics(*this, env, 1, std::nullopt, 3, 2);
-
3823 }
+
3791 // Bob pays Alice (Open Ledger)
+
3792 auto const payTxn2 = env.jt(pay(bob, alice, XRP(5)), seq(bobSeq + 1));
+
3793 auto const payTxn2ID = to_string(payTxn2.stx->getTransactionID());
+
3794 env(payTxn2, ter(terPRE_SEQ));
+
3795 env.close();
+
3796
+
3797 std::vector<TestLedgerData> testCases = {
+
3798 {0, "Payment", "tesSUCCESS", payTxn1ID, std::nullopt},
+
3799 {1, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
3800 {2, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
3801 {3, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
3802 };
+
3803 validateClosedLedger(env, testCases);
+
3804
+
3805 env.close();
+
3806 {
+
3807 // next ledger includes the payment txn
+
3808 std::vector<TestLedgerData> testCases = {
+
3809 {0, "Payment", "tesSUCCESS", payTxn2ID, std::nullopt},
+
3810 };
+
3811 validateClosedLedger(env, testCases);
+
3812 }
+
3813
+
3814 // Alice consumes sequences (# of txns)
+
3815 BEAST_EXPECT(env.seq(alice) == aliceSeq + 3);
+
3816
+
3817 // Alice consumes sequences (# of txns)
+
3818 BEAST_EXPECT(env.seq(bob) == bobSeq + 2);
+
3819
+
3820 // Alice pays XRP & Fee; Bob receives XRP & pays Fee
+
3821 BEAST_EXPECT(
+
3822 env.balance(alice) == preAlice - XRP(10) - batchFee - baseFee);
+
3823 BEAST_EXPECT(env.balance(bob) == preBob + XRP(10) - baseFee);
3824 }
3825
3826 void
- +
3828 {
-
3829 testcase("batch network ops");
+
3829 testcase("batch tx queue");
3830
3831 using namespace test::jtx;
3832 using namespace std::literals;
3833
-
3834 Env env(
-
3835 *this,
-
3836 envconfig(),
-
3837 features,
-
3838 nullptr,
- -
3840
-
3841 auto alice = Account("alice");
-
3842 auto bob = Account("bob");
-
3843 env.fund(XRP(10000), alice, bob);
-
3844 env.close();
-
3845
-
3846 auto submitTx = [&](std::uint32_t flags) -> uint256 {
-
3847 auto jt = env.jt(pay(alice, bob, XRP(1)), txflags(flags));
-
3848 Serializer s;
-
3849 jt.stx->add(s);
-
3850 env.app().getOPs().submitTransaction(jt.stx);
-
3851 return jt.stx->getTransactionID();
-
3852 };
+
3834 // only outer batch transactions are counter towards the queue size
+
3835 {
+
3836 test::jtx::Env env{
+
3837 *this,
+
3838 makeSmallQueueConfig(
+
3839 {{"minimum_txn_in_ledger_standalone", "2"}}),
+
3840 features,
+
3841 nullptr,
+ +
3843
+
3844 auto alice = Account("alice");
+
3845 auto bob = Account("bob");
+
3846 auto carol = Account("carol");
+
3847
+
3848 // Fund across several ledgers so the TxQ metrics stay restricted.
+
3849 env.fund(XRP(10000), noripple(alice, bob));
+
3850 env.close(env.now() + 5s, 10000ms);
+
3851 env.fund(XRP(10000), noripple(carol));
+
3852 env.close(env.now() + 5s, 10000ms);
3853
-
3854 auto processTxn = [&](std::uint32_t flags) -> uint256 {
-
3855 auto jt = env.jt(pay(alice, bob, XRP(1)), txflags(flags));
-
3856 Serializer s;
-
3857 jt.stx->add(s);
-
3858 std::string reason;
-
3859 auto transaction =
-
3860 std::make_shared<Transaction>(jt.stx, reason, env.app());
- -
3862 transaction, false, true, NetworkOPs::FailHard::yes);
-
3863 return transaction->getID();
-
3864 };
-
3865
-
3866 // Validate: NetworkOPs::submitTransaction()
-
3867 {
-
3868 // Submit a tx with tfInnerBatchTxn
-
3869 uint256 const txBad = submitTx(tfInnerBatchTxn);
-
3870 BEAST_EXPECT(
-
3871 env.app().getHashRouter().getFlags(txBad) ==
- -
3873 }
-
3874
-
3875 // Validate: NetworkOPs::processTransaction()
-
3876 {
-
3877 uint256 const txid = processTxn(tfInnerBatchTxn);
-
3878 // HashRouter::getFlags() should return LedgerFlags::BAD
-
3879 BEAST_EXPECT(
-
3880 env.app().getHashRouter().getFlags(txid) ==
- -
3882 }
-
3883 }
-
-
3884
-
3885 void
-
- -
3887 {
-
3888 testcase("batch delegate");
-
3889
-
3890 using namespace test::jtx;
-
3891 using namespace std::literals;
-
3892
-
3893 // delegated non atomic inner
-
3894 {
-
3895 test::jtx::Env env{*this, envconfig()};
-
3896
-
3897 auto const alice = Account("alice");
-
3898 auto const bob = Account("bob");
-
3899 auto const gw = Account("gw");
-
3900 auto const USD = gw["USD"];
-
3901 env.fund(XRP(10000), alice, bob, gw);
-
3902 env.close();
-
3903
-
3904 env(delegate::set(alice, bob, {"Payment"}));
-
3905 env.close();
-
3906
-
3907 auto const preAlice = env.balance(alice);
-
3908 auto const preBob = env.balance(bob);
-
3909
-
3910 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
3911 auto const seq = env.seq(alice);
-
3912
-
3913 auto tx = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
-
3914 tx[jss::Delegate] = bob.human();
-
3915 auto const [txIDs, batchID] = submitBatch(
-
3916 env,
-
3917 tesSUCCESS,
-
3918 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
3919 tx,
-
3920 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
-
3921 env.close();
-
3922
-
3923 std::vector<TestLedgerData> testCases = {
-
3924 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3925 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3926 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3927 };
-
3928 validateClosedLedger(env, testCases);
-
3929
-
3930 // Alice consumes sequences (# of txns)
-
3931 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
3854 // Fill the ledger
+
3855 env(noop(alice));
+
3856 env(noop(alice));
+
3857 env(noop(alice));
+
3858 checkMetrics(*this, env, 0, std::nullopt, 3, 2);
+
3859
+
3860 env(noop(carol), ter(terQUEUED));
+
3861 checkMetrics(*this, env, 1, std::nullopt, 3, 2);
+
3862
+
3863 auto const aliceSeq = env.seq(alice);
+
3864 auto const bobSeq = env.seq(bob);
+
3865 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3866
+
3867 // Queue Batch
+
3868 {
+
3869 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3870 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
3871 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
3872 batch::sig(bob),
+
3873 ter(terQUEUED));
+
3874 }
+
3875
+
3876 checkMetrics(*this, env, 2, std::nullopt, 3, 2);
+
3877
+
3878 // Replace Queued Batch
+
3879 {
+
3880 env(batch::outer(
+
3881 alice,
+
3882 aliceSeq,
+
3883 openLedgerFee(env, batchFee),
+ +
3885 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
3886 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
3887 batch::sig(bob),
+
3888 ter(tesSUCCESS));
+
3889 env.close();
+
3890 }
+
3891
+
3892 checkMetrics(*this, env, 0, 12, 1, 6);
+
3893 }
+
3894
+
3895 // inner batch transactions are counter towards the ledger tx count
+
3896 {
+
3897 test::jtx::Env env{
+
3898 *this,
+
3899 makeSmallQueueConfig(
+
3900 {{"minimum_txn_in_ledger_standalone", "2"}}),
+
3901 features,
+
3902 nullptr,
+ +
3904
+
3905 auto alice = Account("alice");
+
3906 auto bob = Account("bob");
+
3907 auto carol = Account("carol");
+
3908
+
3909 // Fund across several ledgers so the TxQ metrics stay restricted.
+
3910 env.fund(XRP(10000), noripple(alice, bob));
+
3911 env.close(env.now() + 5s, 10000ms);
+
3912 env.fund(XRP(10000), noripple(carol));
+
3913 env.close(env.now() + 5s, 10000ms);
+
3914
+
3915 // Fill the ledger leaving room for 1 queued transaction
+
3916 env(noop(alice));
+
3917 env(noop(alice));
+
3918 checkMetrics(*this, env, 0, std::nullopt, 2, 2);
+
3919
+
3920 auto const aliceSeq = env.seq(alice);
+
3921 auto const bobSeq = env.seq(bob);
+
3922 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
3923
+
3924 // Batch Successful
+
3925 {
+
3926 env(batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
3927 batch::inner(pay(alice, bob, XRP(10)), aliceSeq + 1),
+
3928 batch::inner(pay(bob, alice, XRP(5)), bobSeq),
+
3929 batch::sig(bob),
+
3930 ter(tesSUCCESS));
+
3931 }
3932
-
3933 // Alice pays XRP & Fee; Bob receives XRP
-
3934 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
-
3935 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
-
3936 }
-
3937
-
3938 // delegated atomic inner
-
3939 {
-
3940 test::jtx::Env env{*this, envconfig()};
-
3941
-
3942 auto const alice = Account("alice");
-
3943 auto const bob = Account("bob");
-
3944 auto const carol = Account("carol");
-
3945 auto const gw = Account("gw");
-
3946 auto const USD = gw["USD"];
-
3947 env.fund(XRP(10000), alice, bob, carol, gw);
-
3948 env.close();
-
3949
-
3950 env(delegate::set(bob, carol, {"Payment"}));
-
3951 env.close();
-
3952
-
3953 auto const preAlice = env.balance(alice);
-
3954 auto const preBob = env.balance(bob);
-
3955 auto const preCarol = env.balance(carol);
-
3956
-
3957 auto const batchFee = batch::calcBatchFee(env, 1, 2);
-
3958 auto const aliceSeq = env.seq(alice);
-
3959 auto const bobSeq = env.seq(bob);
-
3960
-
3961 auto tx = batch::inner(pay(bob, alice, XRP(1)), bobSeq);
-
3962 tx[jss::Delegate] = carol.human();
-
3963 auto const [txIDs, batchID] = submitBatch(
-
3964 env,
-
3965 tesSUCCESS,
-
3966 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
-
3967 tx,
-
3968 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
-
3969 batch::sig(bob));
-
3970 env.close();
-
3971
-
3972 std::vector<TestLedgerData> testCases = {
-
3973 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
3974 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
-
3975 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
3976 };
-
3977 validateClosedLedger(env, testCases);
-
3978
-
3979 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
-
3980 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
-
3981 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
-
3982 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
-
3983 // NOTE: Carol would normally pay the fee for delegated txns, but
-
3984 // because the batch is atomic, the fee is paid by the batch
-
3985 BEAST_EXPECT(env.balance(carol) == preCarol);
-
3986 }
-
3987
-
3988 // delegated non atomic inner (AccountSet)
-
3989 // this also makes sure tfInnerBatchTxn won't block delegated AccountSet
-
3990 // with granular permission
-
3991 {
-
3992 test::jtx::Env env{*this, envconfig()};
-
3993
-
3994 auto const alice = Account("alice");
-
3995 auto const bob = Account("bob");
-
3996 auto const gw = Account("gw");
-
3997 auto const USD = gw["USD"];
-
3998 env.fund(XRP(10000), alice, bob, gw);
-
3999 env.close();
-
4000
-
4001 env(delegate::set(alice, bob, {"AccountDomainSet"}));
-
4002 env.close();
+
3933 checkMetrics(*this, env, 0, std::nullopt, 3, 2);
+
3934
+
3935 env(noop(carol), ter(terQUEUED));
+
3936 checkMetrics(*this, env, 1, std::nullopt, 3, 2);
+
3937 }
+
3938 }
+
+
3939
+
3940 void
+
+ +
3942 {
+
3943 testcase("batch network ops");
+
3944
+
3945 using namespace test::jtx;
+
3946 using namespace std::literals;
+
3947
+
3948 Env env(
+
3949 *this,
+
3950 envconfig(),
+
3951 features,
+
3952 nullptr,
+ +
3954
+
3955 auto alice = Account("alice");
+
3956 auto bob = Account("bob");
+
3957 env.fund(XRP(10000), alice, bob);
+
3958 env.close();
+
3959
+
3960 auto submitTx = [&](std::uint32_t flags) -> uint256 {
+
3961 auto jt = env.jt(pay(alice, bob, XRP(1)), txflags(flags));
+
3962 Serializer s;
+
3963 jt.stx->add(s);
+
3964 env.app().getOPs().submitTransaction(jt.stx);
+
3965 return jt.stx->getTransactionID();
+
3966 };
+
3967
+
3968 auto processTxn = [&](std::uint32_t flags) -> uint256 {
+
3969 auto jt = env.jt(pay(alice, bob, XRP(1)), txflags(flags));
+
3970 Serializer s;
+
3971 jt.stx->add(s);
+
3972 std::string reason;
+
3973 auto transaction =
+
3974 std::make_shared<Transaction>(jt.stx, reason, env.app());
+ +
3976 transaction, false, true, NetworkOPs::FailHard::yes);
+
3977 return transaction->getID();
+
3978 };
+
3979
+
3980 // Validate: NetworkOPs::submitTransaction()
+
3981 {
+
3982 // Submit a tx with tfInnerBatchTxn
+
3983 uint256 const txBad = submitTx(tfInnerBatchTxn);
+
3984 BEAST_EXPECT(
+
3985 env.app().getHashRouter().getFlags(txBad) ==
+ +
3987 }
+
3988
+
3989 // Validate: NetworkOPs::processTransaction()
+
3990 {
+
3991 uint256 const txid = processTxn(tfInnerBatchTxn);
+
3992 // HashRouter::getFlags() should return LedgerFlags::BAD
+
3993 BEAST_EXPECT(
+
3994 env.app().getHashRouter().getFlags(txid) ==
+ +
3996 }
+
3997 }
+
+
3998
+
3999 void
+
+ +
4001 {
+
4002 testcase("batch delegate");
4003
-
4004 auto const preAlice = env.balance(alice);
-
4005 auto const preBob = env.balance(bob);
+
4004 using namespace test::jtx;
+
4005 using namespace std::literals;
4006
-
4007 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
4008 auto const seq = env.seq(alice);
-
4009
-
4010 auto tx = batch::inner(noop(alice), seq + 1);
-
4011 std::string const domain = "example.com";
-
4012 tx[sfDomain.jsonName] = strHex(domain);
-
4013 tx[jss::Delegate] = bob.human();
-
4014 auto const [txIDs, batchID] = submitBatch(
-
4015 env,
-
4016 tesSUCCESS,
-
4017 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
4018 tx,
-
4019 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
-
4020 env.close();
-
4021
-
4022 std::vector<TestLedgerData> testCases = {
-
4023 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
4024 {1, "AccountSet", "tesSUCCESS", txIDs[0], batchID},
-
4025 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
-
4026 };
-
4027 validateClosedLedger(env, testCases);
-
4028
-
4029 // Alice consumes sequences (# of txns)
-
4030 BEAST_EXPECT(env.seq(alice) == seq + 3);
-
4031
-
4032 // Alice pays XRP & Fee; Bob receives XRP
-
4033 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(2) - batchFee);
-
4034 BEAST_EXPECT(env.balance(bob) == preBob + XRP(2));
-
4035 }
+
4007 // delegated non atomic inner
+
4008 {
+
4009 test::jtx::Env env{*this, features};
+
4010
+
4011 auto const alice = Account("alice");
+
4012 auto const bob = Account("bob");
+
4013 auto const gw = Account("gw");
+
4014 auto const USD = gw["USD"];
+
4015 env.fund(XRP(10000), alice, bob, gw);
+
4016 env.close();
+
4017
+
4018 env(delegate::set(alice, bob, {"Payment"}));
+
4019 env.close();
+
4020
+
4021 auto const preAlice = env.balance(alice);
+
4022 auto const preBob = env.balance(bob);
+
4023
+
4024 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
4025 auto const seq = env.seq(alice);
+
4026
+
4027 auto tx = batch::inner(pay(alice, bob, XRP(1)), seq + 1);
+
4028 tx[jss::Delegate] = bob.human();
+
4029 auto const [txIDs, batchID] = submitBatch(
+
4030 env,
+
4031 tesSUCCESS,
+
4032 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4033 tx,
+
4034 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
+
4035 env.close();
4036
-
4037 // delegated non atomic inner (MPTokenIssuanceSet)
-
4038 // this also makes sure tfInnerBatchTxn won't block delegated
-
4039 // MPTokenIssuanceSet with granular permission
-
4040 {
-
4041 test::jtx::Env env{*this, envconfig()};
-
4042 Account alice{"alice"};
-
4043 Account bob{"bob"};
-
4044 env.fund(XRP(100000), alice, bob);
-
4045 env.close();
+
4037 std::vector<TestLedgerData> testCases = {
+
4038 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4039 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
4040 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
4041 };
+
4042 validateClosedLedger(env, testCases);
+
4043
+
4044 // Alice consumes sequences (# of txns)
+
4045 BEAST_EXPECT(env.seq(alice) == seq + 3);
4046
-
4047 auto const mptID = makeMptID(env.seq(alice), alice);
-
4048 MPTTester mpt(env, alice, {.fund = false});
-
4049 env.close();
-
4050 mpt.create({.flags = tfMPTCanLock});
-
4051 env.close();
-
4052
-
4053 // alice gives granular permission to bob of MPTokenIssuanceLock
-
4054 env(delegate::set(
-
4055 alice, bob, {"MPTokenIssuanceLock", "MPTokenIssuanceUnlock"}));
-
4056 env.close();
-
4057
-
4058 auto const seq = env.seq(alice);
-
4059 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
4060
-
4061 Json::Value jv1;
-
4062 jv1[sfTransactionType] = jss::MPTokenIssuanceSet;
-
4063 jv1[sfAccount] = alice.human();
-
4064 jv1[sfDelegate] = bob.human();
-
4065 jv1[sfSequence] = seq + 1;
-
4066 jv1[sfMPTokenIssuanceID] = to_string(mptID);
-
4067 jv1[sfFlags] = tfMPTLock;
-
4068
-
4069 Json::Value jv2;
-
4070 jv2[sfTransactionType] = jss::MPTokenIssuanceSet;
-
4071 jv2[sfAccount] = alice.human();
-
4072 jv2[sfDelegate] = bob.human();
-
4073 jv2[sfSequence] = seq + 2;
-
4074 jv2[sfMPTokenIssuanceID] = to_string(mptID);
-
4075 jv2[sfFlags] = tfMPTUnlock;
-
4076
+
4047 // Alice pays XRP & Fee; Bob receives XRP
+
4048 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(3) - batchFee);
+
4049 BEAST_EXPECT(env.balance(bob) == preBob + XRP(3));
+
4050 }
+
4051
+
4052 // delegated atomic inner
+
4053 {
+
4054 test::jtx::Env env{*this, features};
+
4055
+
4056 auto const alice = Account("alice");
+
4057 auto const bob = Account("bob");
+
4058 auto const carol = Account("carol");
+
4059 auto const gw = Account("gw");
+
4060 auto const USD = gw["USD"];
+
4061 env.fund(XRP(10000), alice, bob, carol, gw);
+
4062 env.close();
+
4063
+
4064 env(delegate::set(bob, carol, {"Payment"}));
+
4065 env.close();
+
4066
+
4067 auto const preAlice = env.balance(alice);
+
4068 auto const preBob = env.balance(bob);
+
4069 auto const preCarol = env.balance(carol);
+
4070
+
4071 auto const batchFee = batch::calcBatchFee(env, 1, 2);
+
4072 auto const aliceSeq = env.seq(alice);
+
4073 auto const bobSeq = env.seq(bob);
+
4074
+
4075 auto tx = batch::inner(pay(bob, alice, XRP(1)), bobSeq);
+
4076 tx[jss::Delegate] = carol.human();
4077 auto const [txIDs, batchID] = submitBatch(
4078 env,
4079 tesSUCCESS,
-
4080 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
4081 batch::inner(jv1, seq + 1),
-
4082 batch::inner(jv2, seq + 2));
-
4083 env.close();
-
4084
-
4085 std::vector<TestLedgerData> testCases = {
-
4086 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
4087 {1, "MPTokenIssuanceSet", "tesSUCCESS", txIDs[0], batchID},
-
4088 {2, "MPTokenIssuanceSet", "tesSUCCESS", txIDs[1], batchID},
-
4089 };
-
4090 validateClosedLedger(env, testCases);
-
4091 }
+
4080 batch::outer(alice, aliceSeq, batchFee, tfAllOrNothing),
+
4081 tx,
+
4082 batch::inner(pay(alice, bob, XRP(2)), aliceSeq + 1),
+
4083 batch::sig(bob));
+
4084 env.close();
+
4085
+
4086 std::vector<TestLedgerData> testCases = {
+
4087 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4088 {1, "Payment", "tesSUCCESS", txIDs[0], batchID},
+
4089 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
4090 };
+
4091 validateClosedLedger(env, testCases);
4092
-
4093 // delegated non atomic inner (TrustSet)
-
4094 // this also makes sure tfInnerBatchTxn won't block delegated TrustSet
-
4095 // with granular permission
-
4096 {
-
4097 test::jtx::Env env{*this, envconfig()};
-
4098 Account gw{"gw"};
-
4099 Account alice{"alice"};
-
4100 Account bob{"bob"};
-
4101 env.fund(XRP(10000), gw, alice, bob);
-
4102 env(fset(gw, asfRequireAuth));
-
4103 env.close();
-
4104 env(trust(alice, gw["USD"](50)));
-
4105 env.close();
-
4106
-
4107 env(delegate::set(
-
4108 gw, bob, {"TrustlineAuthorize", "TrustlineFreeze"}));
-
4109 env.close();
-
4110
-
4111 auto const seq = env.seq(gw);
-
4112 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
4113
-
4114 auto jv1 = trust(gw, gw["USD"](0), alice, tfSetfAuth);
-
4115 jv1[sfDelegate] = bob.human();
-
4116 auto jv2 = trust(gw, gw["USD"](0), alice, tfSetFreeze);
-
4117 jv2[sfDelegate] = bob.human();
-
4118
-
4119 auto const [txIDs, batchID] = submitBatch(
-
4120 env,
-
4121 tesSUCCESS,
-
4122 batch::outer(gw, seq, batchFee, tfAllOrNothing),
-
4123 batch::inner(jv1, seq + 1),
-
4124 batch::inner(jv2, seq + 2));
-
4125 env.close();
-
4126
-
4127 std::vector<TestLedgerData> testCases = {
-
4128 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
4129 {1, "TrustSet", "tesSUCCESS", txIDs[0], batchID},
-
4130 {2, "TrustSet", "tesSUCCESS", txIDs[1], batchID},
-
4131 };
-
4132 validateClosedLedger(env, testCases);
-
4133 }
-
4134
-
4135 // inner transaction not authorized by the delegating account.
-
4136 {
-
4137 test::jtx::Env env{*this, envconfig()};
-
4138 Account gw{"gw"};
-
4139 Account alice{"alice"};
-
4140 Account bob{"bob"};
-
4141 env.fund(XRP(10000), gw, alice, bob);
-
4142 env(fset(gw, asfRequireAuth));
-
4143 env.close();
-
4144 env(trust(alice, gw["USD"](50)));
-
4145 env.close();
-
4146
-
4147 env(delegate::set(
-
4148 gw, bob, {"TrustlineAuthorize", "TrustlineFreeze"}));
-
4149 env.close();
+
4093 BEAST_EXPECT(env.seq(alice) == aliceSeq + 2);
+
4094 BEAST_EXPECT(env.seq(bob) == bobSeq + 1);
+
4095 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(1) - batchFee);
+
4096 BEAST_EXPECT(env.balance(bob) == preBob + XRP(1));
+
4097 // NOTE: Carol would normally pay the fee for delegated txns, but
+
4098 // because the batch is atomic, the fee is paid by the batch
+
4099 BEAST_EXPECT(env.balance(carol) == preCarol);
+
4100 }
+
4101
+
4102 // delegated non atomic inner (AccountSet)
+
4103 // this also makes sure tfInnerBatchTxn won't block delegated AccountSet
+
4104 // with granular permission
+
4105 {
+
4106 test::jtx::Env env{*this, features};
+
4107
+
4108 auto const alice = Account("alice");
+
4109 auto const bob = Account("bob");
+
4110 auto const gw = Account("gw");
+
4111 auto const USD = gw["USD"];
+
4112 env.fund(XRP(10000), alice, bob, gw);
+
4113 env.close();
+
4114
+
4115 env(delegate::set(alice, bob, {"AccountDomainSet"}));
+
4116 env.close();
+
4117
+
4118 auto const preAlice = env.balance(alice);
+
4119 auto const preBob = env.balance(bob);
+
4120
+
4121 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
4122 auto const seq = env.seq(alice);
+
4123
+
4124 auto tx = batch::inner(noop(alice), seq + 1);
+
4125 std::string const domain = "example.com";
+
4126 tx[sfDomain.jsonName] = strHex(domain);
+
4127 tx[jss::Delegate] = bob.human();
+
4128 auto const [txIDs, batchID] = submitBatch(
+
4129 env,
+
4130 tesSUCCESS,
+
4131 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4132 tx,
+
4133 batch::inner(pay(alice, bob, XRP(2)), seq + 2));
+
4134 env.close();
+
4135
+
4136 std::vector<TestLedgerData> testCases = {
+
4137 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4138 {1, "AccountSet", "tesSUCCESS", txIDs[0], batchID},
+
4139 {2, "Payment", "tesSUCCESS", txIDs[1], batchID},
+
4140 };
+
4141 validateClosedLedger(env, testCases);
+
4142
+
4143 // Alice consumes sequences (# of txns)
+
4144 BEAST_EXPECT(env.seq(alice) == seq + 3);
+
4145
+
4146 // Alice pays XRP & Fee; Bob receives XRP
+
4147 BEAST_EXPECT(env.balance(alice) == preAlice - XRP(2) - batchFee);
+
4148 BEAST_EXPECT(env.balance(bob) == preBob + XRP(2));
+
4149 }
4150
-
4151 auto const seq = env.seq(gw);
-
4152 auto const batchFee = batch::calcBatchFee(env, 0, 2);
-
4153
-
4154 auto jv1 = trust(gw, gw["USD"](0), alice, tfSetFreeze);
-
4155 jv1[sfDelegate] = bob.human();
-
4156 auto jv2 = trust(gw, gw["USD"](0), alice, tfClearFreeze);
-
4157 jv2[sfDelegate] = bob.human();
-
4158
-
4159 auto const [txIDs, batchID] = submitBatch(
-
4160 env,
-
4161 tesSUCCESS,
-
4162 batch::outer(gw, seq, batchFee, tfIndependent),
-
4163 batch::inner(jv1, seq + 1),
-
4164 // terNO_DELEGATE_PERMISSION: not authorized to clear freeze
-
4165 batch::inner(jv2, seq + 2));
-
4166 env.close();
-
4167
-
4168 std::vector<TestLedgerData> testCases = {
-
4169 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
-
4170 {1, "TrustSet", "tesSUCCESS", txIDs[0], batchID},
-
4171 };
-
4172 validateClosedLedger(env, testCases);
-
4173 }
-
4174 }
-
-
4175
-
4176 void
-
- -
4178 {
-
4179 // Verifying that the RPC response from submit includes
-
4180 // the account_sequence_available, account_sequence_next,
-
4181 // open_ledger_cost and validated_ledger_index fields.
-
4182 testcase("Validate RPC response");
-
4183
-
4184 using namespace jtx;
-
4185 Env env(*this);
-
4186 Account const alice("alice");
-
4187 Account const bob("bob");
-
4188 env.fund(XRP(10000), alice, bob);
-
4189 env.close();
+
4151 // delegated non atomic inner (MPTokenIssuanceSet)
+
4152 // this also makes sure tfInnerBatchTxn won't block delegated
+
4153 // MPTokenIssuanceSet with granular permission
+
4154 {
+
4155 test::jtx::Env env{*this, features};
+
4156 Account alice{"alice"};
+
4157 Account bob{"bob"};
+
4158 env.fund(XRP(100000), alice, bob);
+
4159 env.close();
+
4160
+
4161 auto const mptID = makeMptID(env.seq(alice), alice);
+
4162 MPTTester mpt(env, alice, {.fund = false});
+
4163 env.close();
+
4164 mpt.create({.flags = tfMPTCanLock});
+
4165 env.close();
+
4166
+
4167 // alice gives granular permission to bob of MPTokenIssuanceLock
+
4168 env(delegate::set(
+
4169 alice, bob, {"MPTokenIssuanceLock", "MPTokenIssuanceUnlock"}));
+
4170 env.close();
+
4171
+
4172 auto const seq = env.seq(alice);
+
4173 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
4174
+
4175 Json::Value jv1;
+
4176 jv1[sfTransactionType] = jss::MPTokenIssuanceSet;
+
4177 jv1[sfAccount] = alice.human();
+
4178 jv1[sfDelegate] = bob.human();
+
4179 jv1[sfSequence] = seq + 1;
+
4180 jv1[sfMPTokenIssuanceID] = to_string(mptID);
+
4181 jv1[sfFlags] = tfMPTLock;
+
4182
+
4183 Json::Value jv2;
+
4184 jv2[sfTransactionType] = jss::MPTokenIssuanceSet;
+
4185 jv2[sfAccount] = alice.human();
+
4186 jv2[sfDelegate] = bob.human();
+
4187 jv2[sfSequence] = seq + 2;
+
4188 jv2[sfMPTokenIssuanceID] = to_string(mptID);
+
4189 jv2[sfFlags] = tfMPTUnlock;
4190
-
4191 // tes
-
4192 {
-
4193 auto const baseFee = env.current()->fees().base;
-
4194 auto const aliceSeq = env.seq(alice);
-
4195 auto jtx = env.jt(pay(alice, bob, XRP(1)));
-
4196
-
4197 Serializer s;
-
4198 jtx.stx->add(s);
-
4199 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
-
4200 env.close();
-
4201
-
4202 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
-
4203 BEAST_EXPECT(
-
4204 jr[jss::account_sequence_available].asUInt() == aliceSeq + 1);
-
4205 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
-
4206 BEAST_EXPECT(
-
4207 jr[jss::account_sequence_next].asUInt() == aliceSeq + 1);
-
4208 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
-
4209 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
-
4210 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
-
4211 }
-
4212
-
4213 // tec failure
-
4214 {
-
4215 auto const baseFee = env.current()->fees().base;
-
4216 auto const aliceSeq = env.seq(alice);
-
4217 env(fset(bob, asfRequireDest));
-
4218 auto jtx = env.jt(pay(alice, bob, XRP(1)), seq(aliceSeq));
-
4219
-
4220 Serializer s;
-
4221 jtx.stx->add(s);
-
4222 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
-
4223 env.close();
+
4191 auto const [txIDs, batchID] = submitBatch(
+
4192 env,
+
4193 tesSUCCESS,
+
4194 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4195 batch::inner(jv1, seq + 1),
+
4196 batch::inner(jv2, seq + 2));
+
4197 env.close();
+
4198
+
4199 std::vector<TestLedgerData> testCases = {
+
4200 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4201 {1, "MPTokenIssuanceSet", "tesSUCCESS", txIDs[0], batchID},
+
4202 {2, "MPTokenIssuanceSet", "tesSUCCESS", txIDs[1], batchID},
+
4203 };
+
4204 validateClosedLedger(env, testCases);
+
4205 }
+
4206
+
4207 // delegated non atomic inner (TrustSet)
+
4208 // this also makes sure tfInnerBatchTxn won't block delegated TrustSet
+
4209 // with granular permission
+
4210 {
+
4211 test::jtx::Env env{*this, features};
+
4212 Account gw{"gw"};
+
4213 Account alice{"alice"};
+
4214 Account bob{"bob"};
+
4215 env.fund(XRP(10000), gw, alice, bob);
+
4216 env(fset(gw, asfRequireAuth));
+
4217 env.close();
+
4218 env(trust(alice, gw["USD"](50)));
+
4219 env.close();
+
4220
+
4221 env(delegate::set(
+
4222 gw, bob, {"TrustlineAuthorize", "TrustlineFreeze"}));
+
4223 env.close();
4224
-
4225 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
-
4226 BEAST_EXPECT(
-
4227 jr[jss::account_sequence_available].asUInt() == aliceSeq + 1);
-
4228 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
-
4229 BEAST_EXPECT(
-
4230 jr[jss::account_sequence_next].asUInt() == aliceSeq + 1);
-
4231 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
-
4232 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
-
4233 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
-
4234 }
-
4235
-
4236 // tem failure
-
4237 {
-
4238 auto const baseFee = env.current()->fees().base;
-
4239 auto const aliceSeq = env.seq(alice);
-
4240 auto jtx = env.jt(pay(alice, bob, XRP(1)), seq(aliceSeq + 1));
-
4241
-
4242 Serializer s;
-
4243 jtx.stx->add(s);
-
4244 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
-
4245 env.close();
-
4246
-
4247 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
-
4248 BEAST_EXPECT(
-
4249 jr[jss::account_sequence_available].asUInt() == aliceSeq);
-
4250 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
-
4251 BEAST_EXPECT(jr[jss::account_sequence_next].asUInt() == aliceSeq);
-
4252 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
-
4253 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
-
4254 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
-
4255 }
-
4256 }
+
4225 auto const seq = env.seq(gw);
+
4226 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
4227
+
4228 auto jv1 = trust(gw, gw["USD"](0), alice, tfSetfAuth);
+
4229 jv1[sfDelegate] = bob.human();
+
4230 auto jv2 = trust(gw, gw["USD"](0), alice, tfSetFreeze);
+
4231 jv2[sfDelegate] = bob.human();
+
4232
+
4233 auto const [txIDs, batchID] = submitBatch(
+
4234 env,
+
4235 tesSUCCESS,
+
4236 batch::outer(gw, seq, batchFee, tfAllOrNothing),
+
4237 batch::inner(jv1, seq + 1),
+
4238 batch::inner(jv2, seq + 2));
+
4239 env.close();
+
4240
+
4241 std::vector<TestLedgerData> testCases = {
+
4242 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4243 {1, "TrustSet", "tesSUCCESS", txIDs[0], batchID},
+
4244 {2, "TrustSet", "tesSUCCESS", txIDs[1], batchID},
+
4245 };
+
4246 validateClosedLedger(env, testCases);
+
4247 }
+
4248
+
4249 // inner transaction not authorized by the delegating account.
+
4250 {
+
4251 test::jtx::Env env{*this, features};
+
4252 Account gw{"gw"};
+
4253 Account alice{"alice"};
+
4254 Account bob{"bob"};
+
4255 env.fund(XRP(10000), gw, alice, bob);
+
4256 env(fset(gw, asfRequireAuth));
+
4257 env.close();
+
4258 env(trust(alice, gw["USD"](50)));
+
4259 env.close();
+
4260
+
4261 env(delegate::set(
+
4262 gw, bob, {"TrustlineAuthorize", "TrustlineFreeze"}));
+
4263 env.close();
+
4264
+
4265 auto const seq = env.seq(gw);
+
4266 auto const batchFee = batch::calcBatchFee(env, 0, 2);
+
4267
+
4268 auto jv1 = trust(gw, gw["USD"](0), alice, tfSetFreeze);
+
4269 jv1[sfDelegate] = bob.human();
+
4270 auto jv2 = trust(gw, gw["USD"](0), alice, tfClearFreeze);
+
4271 jv2[sfDelegate] = bob.human();
+
4272
+
4273 auto const [txIDs, batchID] = submitBatch(
+
4274 env,
+
4275 tesSUCCESS,
+
4276 batch::outer(gw, seq, batchFee, tfIndependent),
+
4277 batch::inner(jv1, seq + 1),
+
4278 // terNO_DELEGATE_PERMISSION: not authorized to clear freeze
+
4279 batch::inner(jv2, seq + 2));
+
4280 env.close();
+
4281
+
4282 std::vector<TestLedgerData> testCases = {
+
4283 {0, "Batch", "tesSUCCESS", batchID, std::nullopt},
+
4284 {1, "TrustSet", "tesSUCCESS", txIDs[0], batchID},
+
4285 };
+
4286 validateClosedLedger(env, testCases);
+
4287 }
+
4288 }
-
4257
-
4258 void
-
- -
4260 {
-
4261 using namespace jtx;
-
4262 Env env(*this);
-
4263 Account const alice("alice");
-
4264 Account const bob("bob");
-
4265 Account const carol("carol");
-
4266 env.fund(XRP(10000), alice, bob, carol);
-
4267 env.close();
-
4268
-
4269 auto getBaseFee = [&](JTx const& jtx) -> XRPAmount {
-
4270 Serializer s;
-
4271 jtx.stx->add(s);
-
4272 return Batch::calculateBaseFee(*env.current(), *jtx.stx);
-
4273 };
-
4274
-
4275 // bad: Inner Batch transaction found
-
4276 {
-
4277 auto const seq = env.seq(alice);
-
4278 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
-
4279 auto jtx = env.jt(
-
4280 batch::outer(alice, seq, batchFee, tfAllOrNothing),
- -
4282 batch::outer(alice, seq, batchFee, tfAllOrNothing), seq),
-
4283 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
-
4284 XRPAmount const txBaseFee = getBaseFee(jtx);
-
4285 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
-
4286 }
-
4287
-
4288 // bad: Raw Transactions array exceeds max entries.
-
4289 {
-
4290 auto const seq = env.seq(alice);
-
4291 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
-
4292
-
4293 auto jtx = env.jt(
-
4294 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
4295 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
4296 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
-
4297 batch::inner(pay(alice, bob, XRP(1)), seq + 3),
-
4298 batch::inner(pay(alice, bob, XRP(1)), seq + 4),
-
4299 batch::inner(pay(alice, bob, XRP(1)), seq + 5),
-
4300 batch::inner(pay(alice, bob, XRP(1)), seq + 6),
-
4301 batch::inner(pay(alice, bob, XRP(1)), seq + 7),
-
4302 batch::inner(pay(alice, bob, XRP(1)), seq + 8),
-
4303 batch::inner(pay(alice, bob, XRP(1)), seq + 9));
+
4289
+
4290 void
+
+ +
4292 {
+
4293 // Verifying that the RPC response from submit includes
+
4294 // the account_sequence_available, account_sequence_next,
+
4295 // open_ledger_cost and validated_ledger_index fields.
+
4296 testcase("Validate RPC response");
+
4297
+
4298 using namespace jtx;
+
4299 Env env(*this, features);
+
4300 Account const alice("alice");
+
4301 Account const bob("bob");
+
4302 env.fund(XRP(10000), alice, bob);
+
4303 env.close();
4304
-
4305 XRPAmount const txBaseFee = getBaseFee(jtx);
-
4306 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
-
4307 }
-
4308
-
4309 // bad: Signers array exceeds max entries.
-
4310 {
-
4311 auto const seq = env.seq(alice);
-
4312 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
-
4313
-
4314 auto jtx = env.jt(
-
4315 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
4316 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
-
4317 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
-
4318 batch::sig(
-
4319 bob,
-
4320 carol,
-
4321 alice,
-
4322 bob,
-
4323 carol,
-
4324 alice,
-
4325 bob,
-
4326 carol,
-
4327 alice,
-
4328 alice));
-
4329 XRPAmount const txBaseFee = getBaseFee(jtx);
-
4330 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
-
4331 }
-
4332
-
4333 // good:
-
4334 {
-
4335 auto const seq = env.seq(alice);
-
4336 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
-
4337 auto jtx = env.jt(
-
4338 batch::outer(alice, seq, batchFee, tfAllOrNothing),
-
4339 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
-
4340 batch::inner(pay(bob, alice, XRP(2)), seq + 2));
-
4341 XRPAmount const txBaseFee = getBaseFee(jtx);
-
4342 BEAST_EXPECT(txBaseFee == batchFee);
-
4343 }
-
4344 }
+
4305 // tes
+
4306 {
+
4307 auto const baseFee = env.current()->fees().base;
+
4308 auto const aliceSeq = env.seq(alice);
+
4309 auto jtx = env.jt(pay(alice, bob, XRP(1)));
+
4310
+
4311 Serializer s;
+
4312 jtx.stx->add(s);
+
4313 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
+
4314 env.close();
+
4315
+
4316 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
+
4317 BEAST_EXPECT(
+
4318 jr[jss::account_sequence_available].asUInt() == aliceSeq + 1);
+
4319 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
+
4320 BEAST_EXPECT(
+
4321 jr[jss::account_sequence_next].asUInt() == aliceSeq + 1);
+
4322 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
+
4323 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
+
4324 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
+
4325 }
+
4326
+
4327 // tec failure
+
4328 {
+
4329 auto const baseFee = env.current()->fees().base;
+
4330 auto const aliceSeq = env.seq(alice);
+
4331 env(fset(bob, asfRequireDest));
+
4332 auto jtx = env.jt(pay(alice, bob, XRP(1)), seq(aliceSeq));
+
4333
+
4334 Serializer s;
+
4335 jtx.stx->add(s);
+
4336 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
+
4337 env.close();
+
4338
+
4339 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
+
4340 BEAST_EXPECT(
+
4341 jr[jss::account_sequence_available].asUInt() == aliceSeq + 1);
+
4342 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
+
4343 BEAST_EXPECT(
+
4344 jr[jss::account_sequence_next].asUInt() == aliceSeq + 1);
+
4345 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
+
4346 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
+
4347 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
+
4348 }
+
4349
+
4350 // tem failure
+
4351 {
+
4352 auto const baseFee = env.current()->fees().base;
+
4353 auto const aliceSeq = env.seq(alice);
+
4354 auto jtx = env.jt(pay(alice, bob, XRP(1)), seq(aliceSeq + 1));
+
4355
+
4356 Serializer s;
+
4357 jtx.stx->add(s);
+
4358 auto const jr = env.rpc("submit", strHex(s.slice()))[jss::result];
+
4359 env.close();
+
4360
+
4361 BEAST_EXPECT(jr.isMember(jss::account_sequence_available));
+
4362 BEAST_EXPECT(
+
4363 jr[jss::account_sequence_available].asUInt() == aliceSeq);
+
4364 BEAST_EXPECT(jr.isMember(jss::account_sequence_next));
+
4365 BEAST_EXPECT(jr[jss::account_sequence_next].asUInt() == aliceSeq);
+
4366 BEAST_EXPECT(jr.isMember(jss::open_ledger_cost));
+
4367 BEAST_EXPECT(jr[jss::open_ledger_cost] == to_string(baseFee));
+
4368 BEAST_EXPECT(jr.isMember(jss::validated_ledger_index));
+
4369 }
+
4370 }
-
4345
-
4346 void
-
- -
4348 {
-
4349 testEnable(features);
-
4350 testPreflight(features);
-
4351 testPreclaim(features);
-
4352 testBadRawTxn(features);
-
4353 testBadSequence(features);
-
4354 testBadOuterFee(features);
-
4355 testCalculateBaseFee(features);
-
4356 testAllOrNothing(features);
-
4357 testOnlyOne(features);
-
4358 testUntilFailure(features);
-
4359 testIndependent(features);
-
4360 testInnerSubmitRPC(features);
-
4361 testAccountActivation(features);
-
4362 testAccountSet(features);
-
4363 testAccountDelete(features);
-
4364 testLoan(features);
-
4365 testObjectCreateSequence(features);
-
4366 testObjectCreateTicket(features);
-
4367 testObjectCreate3rdParty(features);
-
4368 testTickets(features);
-
4369 testSequenceOpenLedger(features);
-
4370 testTicketsOpenLedger(features);
-
4371 testObjectsOpenLedger(features);
-
4372 testPseudoTxn(features);
-
4373 testOpenLedger(features);
-
4374 testBatchTxQueue(features);
-
4375 testBatchNetworkOps(features);
-
4376 testBatchDelegate(features);
-
4377 testValidateRPCResponse(features);
-
4378 testBatchCalculateBaseFee(features);
-
4379 }
+
4371
+
4372 void
+
+ +
4374 {
+
4375 using namespace jtx;
+
4376 Env env(*this, features);
+
4377 Account const alice("alice");
+
4378 Account const bob("bob");
+
4379 Account const carol("carol");
+
4380 env.fund(XRP(10000), alice, bob, carol);
+
4381 env.close();
+
4382
+
4383 auto getBaseFee = [&](JTx const& jtx) -> XRPAmount {
+
4384 Serializer s;
+
4385 jtx.stx->add(s);
+
4386 return Batch::calculateBaseFee(*env.current(), *jtx.stx);
+
4387 };
+
4388
+
4389 // bad: Inner Batch transaction found
+
4390 {
+
4391 auto const seq = env.seq(alice);
+
4392 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
+
4393 auto jtx = env.jt(
+
4394 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+ +
4396 batch::outer(alice, seq, batchFee, tfAllOrNothing), seq),
+
4397 batch::inner(pay(alice, bob, XRP(1)), seq + 2));
+
4398 XRPAmount const txBaseFee = getBaseFee(jtx);
+
4399 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
+
4400 }
+
4401
+
4402 // bad: Raw Transactions array exceeds max entries.
+
4403 {
+
4404 auto const seq = env.seq(alice);
+
4405 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
+
4406
+
4407 auto jtx = env.jt(
+
4408 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4409 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
4410 batch::inner(pay(alice, bob, XRP(1)), seq + 2),
+
4411 batch::inner(pay(alice, bob, XRP(1)), seq + 3),
+
4412 batch::inner(pay(alice, bob, XRP(1)), seq + 4),
+
4413 batch::inner(pay(alice, bob, XRP(1)), seq + 5),
+
4414 batch::inner(pay(alice, bob, XRP(1)), seq + 6),
+
4415 batch::inner(pay(alice, bob, XRP(1)), seq + 7),
+
4416 batch::inner(pay(alice, bob, XRP(1)), seq + 8),
+
4417 batch::inner(pay(alice, bob, XRP(1)), seq + 9));
+
4418
+
4419 XRPAmount const txBaseFee = getBaseFee(jtx);
+
4420 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
+
4421 }
+
4422
+
4423 // bad: Signers array exceeds max entries.
+
4424 {
+
4425 auto const seq = env.seq(alice);
+
4426 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
+
4427
+
4428 auto jtx = env.jt(
+
4429 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4430 batch::inner(pay(alice, bob, XRP(10)), seq + 1),
+
4431 batch::inner(pay(alice, bob, XRP(5)), seq + 2),
+
4432 batch::sig(
+
4433 bob,
+
4434 carol,
+
4435 alice,
+
4436 bob,
+
4437 carol,
+
4438 alice,
+
4439 bob,
+
4440 carol,
+
4441 alice,
+
4442 alice));
+
4443 XRPAmount const txBaseFee = getBaseFee(jtx);
+
4444 BEAST_EXPECT(txBaseFee == XRPAmount(INITIAL_XRP));
+
4445 }
+
4446
+
4447 // good:
+
4448 {
+
4449 auto const seq = env.seq(alice);
+
4450 XRPAmount const batchFee = batch::calcBatchFee(env, 0, 2);
+
4451 auto jtx = env.jt(
+
4452 batch::outer(alice, seq, batchFee, tfAllOrNothing),
+
4453 batch::inner(pay(alice, bob, XRP(1)), seq + 1),
+
4454 batch::inner(pay(bob, alice, XRP(2)), seq + 2));
+
4455 XRPAmount const txBaseFee = getBaseFee(jtx);
+
4456 BEAST_EXPECT(txBaseFee == batchFee);
+
4457 }
+
4458 }
-
4380
-
4381public:
-
4382 void
-
-
4383 run() override
-
4384 {
-
4385 using namespace test::jtx;
-
4386 auto const sa = testable_amendments();
-
4387 testWithFeats(sa);
-
4388 }
+
4459
+
4460 void
+
+ +
4462 {
+
4463 testEnable(features);
+
4464 testPreflight(features);
+
4465 testPreclaim(features);
+
4466 testBadRawTxn(features);
+
4467 testBadSequence(features);
+
4468 testBadOuterFee(features);
+
4469 testCalculateBaseFee(features);
+
4470 testAllOrNothing(features);
+
4471 testOnlyOne(features);
+
4472 testUntilFailure(features);
+
4473 testIndependent(features);
+
4474 testInnerSubmitRPC(features);
+
4475 testAccountActivation(features);
+
4476 testAccountSet(features);
+
4477 testAccountDelete(features);
+
4478 testLoan(features);
+
4479 testObjectCreateSequence(features);
+
4480 testObjectCreateTicket(features);
+
4481 testObjectCreate3rdParty(features);
+
4482 testTickets(features);
+
4483 testSequenceOpenLedger(features);
+
4484 testTicketsOpenLedger(features);
+
4485 testObjectsOpenLedger(features);
+
4486 testPseudoTxn(features);
+
4487 testOpenLedger(features);
+
4488 testBatchTxQueue(features);
+
4489 testBatchNetworkOps(features);
+
4490 testBatchDelegate(features);
+
4491 testValidateRPCResponse(features);
+
4492 testBatchCalculateBaseFee(features);
+
4493 }
-
4389};
+
4494
+
4495public:
+
4496 void
+
+
4497 run() override
+
4498 {
+
4499 using namespace test::jtx;
+
4500 auto const sa = testable_amendments();
+
4501 testWithFeats(sa - fixBatchInnerSigs);
+
4502 testWithFeats(sa);
+
4503 }
-
4390
-
4391BEAST_DEFINE_TESTSUITE(Batch, app, xrpl);
-
4392
-
4393} // namespace test
-
4394} // namespace xrpl
+
4504};
+
+
4505
+
4506BEAST_DEFINE_TESTSUITE(Batch, app, xrpl);
+
4507
+
4508} // namespace test
+
4509} // namespace xrpl
T any_of(T... args)
+
Represents a JSON value.
Definition json_value.h:131
A generic endpoint for log messages.
Definition Journal.h:41
A testsuite class.
Definition suite.h:52
@@ -4584,6 +4702,7 @@ $(document).ready(function() { init_codefold(0); });
Holds the serialized result of parsing an input JSON object.
std::optional< STObject > object
The STObject if the parse was successful.
+
Json::Value getJson(JsonOptions options) const override
Definition STTx.cpp:308
Slice slice() const noexcept
Definition Serializer.h:47
An immutable linear range of bytes.
Definition Slice.h:27
@@ -4592,46 +4711,47 @@ $(document).ready(function() { init_codefold(0); }); -
void testOpenLedger(FeatureBitset features)
-
void testTicketsOpenLedger(FeatureBitset features)
-
void run() override
Runs the suite.
-
void testBadRawTxn(FeatureBitset features)
-
void testObjectsOpenLedger(FeatureBitset features)
-
void testSequenceOpenLedger(FeatureBitset features)
+
void testOpenLedger(FeatureBitset features)
+
void testTicketsOpenLedger(FeatureBitset features)
+
void run() override
Runs the suite.
+
void testBadRawTxn(FeatureBitset features)
+
void testObjectsOpenLedger(FeatureBitset features)
+
void testSequenceOpenLedger(FeatureBitset features)
void testEnable(FeatureBitset features)
-
void testPreflight(FeatureBitset features)
-
void testObjectCreate3rdParty(FeatureBitset features)
+
void testPreflight(FeatureBitset features)
+
void testObjectCreate3rdParty(FeatureBitset features)
auto openLedgerFee(jtx::Env &env, XRPAmount const &batchFee)
-
void testIndependent(FeatureBitset features)
-
void testBatchDelegate(FeatureBitset features)
-
void testBadSequence(FeatureBitset features)
-
void testTickets(FeatureBitset features)
-
void testAccountSet(FeatureBitset features)
+
void testIndependent(FeatureBitset features)
+
void doTestInnerSubmitRPC(FeatureBitset features, bool withBatch)
+
void testBatchDelegate(FeatureBitset features)
+
void testBadSequence(FeatureBitset features)
+
void testTickets(FeatureBitset features)
+
void testAccountSet(FeatureBitset features)
std::pair< std::vector< std::string >, std::string > submitBatch(jtx::Env &env, TER const &result, Args &&... args)
-
void testPreclaim(FeatureBitset features)
-
void testBatchTxQueue(FeatureBitset features)
-
void testAllOrNothing(FeatureBitset features)
-
void testValidateRPCResponse(FeatureBitset features)
-
void testWithFeats(FeatureBitset features)
-
void testBatchCalculateBaseFee(FeatureBitset features)
-
void testLoan(FeatureBitset features)
-
void testBatchNetworkOps(FeatureBitset features)
-
void testObjectCreateTicket(FeatureBitset features)
-
void testInnerSubmitRPC(FeatureBitset features)
+
void testPreclaim(FeatureBitset features)
+
void testBatchTxQueue(FeatureBitset features)
+
void testAllOrNothing(FeatureBitset features)
+
void testValidateRPCResponse(FeatureBitset features)
+
void testWithFeats(FeatureBitset features)
+
void testBatchCalculateBaseFee(FeatureBitset features)
+
void testLoan(FeatureBitset features)
+
void testBatchNetworkOps(FeatureBitset features)
+
void testObjectCreateTicket(FeatureBitset features)
+
void testInnerSubmitRPC(FeatureBitset features)
void validateClosedLedger(jtx::Env &env, std::vector< TestLedgerData > const &ledgerResults)
-
void testCalculateBaseFee(FeatureBitset features)
-
void testAccountActivation(FeatureBitset features)
-
void testUntilFailure(FeatureBitset features)
+
void testCalculateBaseFee(FeatureBitset features)
+
void testAccountActivation(FeatureBitset features)
+
void testUntilFailure(FeatureBitset features)
static uint256 getCheckIndex(AccountID const &account, std::uint32_t uSequence)
void validateInnerTxn(jtx::Env &env, std::string const &batchID, TestLedgerData const &ledgerResult)
Json::Value getTxByIndex(Json::Value const &jrr, int const index)
Json::Value getLastLedger(jtx::Env &env)
-
void testObjectCreateSequence(FeatureBitset features)
-
void testOnlyOne(FeatureBitset features)
+
void testObjectCreateSequence(FeatureBitset features)
+
void testOnlyOne(FeatureBitset features)
static std::unique_ptr< Config > makeSmallQueueConfig(std::map< std::string, std::string > extraTxQ={}, std::map< std::string, std::string > extraVoting={})
-
void testAccountDelete(FeatureBitset features)
-
void testPseudoTxn(FeatureBitset features)
-
void testBadOuterFee(FeatureBitset features)
+
void testAccountDelete(FeatureBitset features)
+
void testPseudoTxn(FeatureBitset features)
+
void testBadOuterFee(FeatureBitset features)
Immutable cryptographic account descriptor.
Definition Account.h:20
A transaction testing environment.
Definition Env.h:102
Application & app()
Definition Env.h:244
@@ -4694,7 +4814,7 @@ $(document).ready(function() { init_codefold(0); });
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
Definition Issue.h:96
constexpr std::uint32_t tfImmediateOrCancel
Definition TxFlags.h:80
constexpr std::uint32_t asfDisableMaster
Definition TxFlags.h:61
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
constexpr std::uint32_t tfInnerBatchTxn
Definition TxFlags.h:42
std::string to_string(base_uint< Bits, Tag > const &a)
Definition base_uint.h:611
std::string strHex(FwdIt begin, FwdIt end)
Definition strHex.h:11
@@ -4753,6 +4873,7 @@ $(document).ready(function() { init_codefold(0); });
T size(T... args)
+
T str(T... args)
uint256 key
Definition Keylet.h:21
diff --git a/BuildLedger_8cpp_source.html b/BuildLedger_8cpp_source.html index 72c7d4bcc2..590bf8061c 100644 --- a/BuildLedger_8cpp_source.html +++ b/BuildLedger_8cpp_source.html @@ -337,7 +337,7 @@ $(document).ready(function() { init_codefold(0); });
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
static constexpr std::uint32_t XRP_LEDGER_EARLIEST_FEES
The XRP Ledger mainnet's earliest ledger with a FeeSettings object.
std::size_t applyTransactions(Application &app, std::shared_ptr< Ledger const > const &built, CanonicalTXSet &txns, std::set< TxID > &failed, OpenView &view, beast::Journal j)
Apply a set of consensus transactions to a ledger.
-
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:214
+
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:221
@ Success
Applied to this ledger.
@ Retry
Should be retried in this ledger.
@ Fail
Should not be retried in this ledger.
diff --git a/DeleteAccount_8cpp_source.html b/DeleteAccount_8cpp_source.html index 7cb76791d5..5fc255fcd9 100644 --- a/DeleteAccount_8cpp_source.html +++ b/DeleteAccount_8cpp_source.html @@ -538,12 +538,12 @@ $(document).ready(function() { init_codefold(0); });
static TER removeFromLedger(Application &app, ApplyView &view, AccountID const &account, beast::Journal j)
AccountID const account_
Definition Transactor.h:128
-
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
XRPAmount mSourceBalance
Definition Transactor.h:130
ApplyContext & ctx_
Definition Transactor.h:124
-
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
+
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
base_uint next() const
Definition base_uint.h:436
diff --git a/Escrow_8cpp_source.html b/Escrow_8cpp_source.html index 59c2dc2945..83bd1f64a7 100644 --- a/Escrow_8cpp_source.html +++ b/Escrow_8cpp_source.html @@ -1512,7 +1512,7 @@ $(document).ready(function() { init_codefold(0); });
AccountID const account_
Definition Transactor.h:128
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
XRPAmount mSourceBalance
Definition Transactor.h:130
XRPAmount mPriorBalance
Definition Transactor.h:129
ApplyContext & ctx_
Definition Transactor.h:124
diff --git a/FeeVote__test_8cpp_source.html b/FeeVote__test_8cpp_source.html index 1ea03d00a5..43e5215fc3 100644 --- a/FeeVote__test_8cpp_source.html +++ b/FeeVote__test_8cpp_source.html @@ -955,7 +955,7 @@ $(document).ready(function() { init_codefold(0); });
std::unique_ptr< FeeVote > make_FeeVote(FeeSetup const &setup, beast::Journal journal)
Create an instance of the FeeVote logic.
PublicKey derivePublicKey(KeyType type, SecretKey const &sk)
Derive the public key from a secret key.
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
create_genesis_t const create_genesis
Definition Ledger.cpp:32
FeeSetup setup_FeeVote(Section const &section)
Definition Config.cpp:1110
base_uint< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:29
diff --git a/LedgerHistory__test_8cpp_source.html b/LedgerHistory__test_8cpp_source.html index 37b9aaad2c..3a5874d15a 100644 --- a/LedgerHistory__test_8cpp_source.html +++ b/LedgerHistory__test_8cpp_source.html @@ -302,7 +302,7 @@ $(document).ready(function() { init_codefold(0); });
XRP_t const XRP
Converts to XRP Issue or STAmount.
Definition amount.cpp:92
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition envconfig.h:35
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
-
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:214
+
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:221
create_genesis_t const create_genesis
Definition Ledger.cpp:32
@ hotTRANSACTION_NODE
Definition NodeObject.h:17
@ hotACCOUNT_NODE
Definition NodeObject.h:16
diff --git a/LedgerStateFix_8cpp_source.html b/LedgerStateFix_8cpp_source.html index f3e090a05f..bc916219a9 100644 --- a/LedgerStateFix_8cpp_source.html +++ b/LedgerStateFix_8cpp_source.html @@ -170,7 +170,7 @@ $(document).ready(function() { init_codefold(0); });
bool isFieldPresent(SField const &field) const
Definition STObject.cpp:465
-
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
ApplyView & view()
Definition Transactor.h:144
ApplyContext & ctx_
Definition Transactor.h:124
diff --git a/LoanBrokerSet_8cpp_source.html b/LoanBrokerSet_8cpp_source.html index 94dabb98f3..81383a1d37 100644 --- a/LoanBrokerSet_8cpp_source.html +++ b/LoanBrokerSet_8cpp_source.html @@ -323,7 +323,7 @@ $(document).ready(function() { init_codefold(0); });
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
XRPAmount mPriorBalance
Definition Transactor.h:129
-
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
+
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
ApplyContext & ctx_
Definition Transactor.h:124
static bool validNumericRange(std::optional< T > value, T max, T min=T{})
Definition Transactor.h:420
T is_same_v
diff --git a/LoanPay_8cpp_source.html b/LoanPay_8cpp_source.html index c8e716e806..4fcb57b638 100644 --- a/LoanPay_8cpp_source.html +++ b/LoanPay_8cpp_source.html @@ -725,7 +725,7 @@ $(document).ready(function() { init_codefold(0); });
AccountID const account_
Definition Transactor.h:128
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
ApplyContext & ctx_
Definition Transactor.h:124
diff --git a/LoanSet_8cpp_source.html b/LoanSet_8cpp_source.html index c6d67ff151..292d1d6803 100644 --- a/LoanSet_8cpp_source.html +++ b/LoanSet_8cpp_source.html @@ -766,13 +766,13 @@ $(document).ready(function() { init_codefold(0); });
AccountID const account_
Definition Transactor.h:128
-
static NotTEC checkSign(PreclaimContext const &ctx)
+
static NotTEC checkSign(PreclaimContext const &ctx)
static bool validNumericMinimum(std::optional< T > value, T min=T{})
Minimum will usually be zero.
Definition Transactor.h:439
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
XRPAmount mPriorBalance
Definition Transactor.h:129
-
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
+
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
ApplyContext & ctx_
Definition Transactor.h:124
static bool validNumericRange(std::optional< T > value, T max, T min=T{})
Definition Transactor.h:420
diff --git a/NegativeUNL__test_8cpp_source.html b/NegativeUNL__test_8cpp_source.html index 847177de21..f80bc7e54c 100644 --- a/NegativeUNL__test_8cpp_source.html +++ b/NegativeUNL__test_8cpp_source.html @@ -2112,7 +2112,7 @@ $(document).ready(function() { init_codefold(0); });
std::pair< PublicKey, SecretKey > randomKeyPair(KeyType type)
Create a key pair using secure random numbers.
PublicKey derivePublicKey(KeyType type, SecretKey const &sk)
Derive the public key from a secret key.
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
@ tefFAILURE
Definition TER.h:147
create_genesis_t const create_genesis
Definition Ledger.cpp:32
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:95
diff --git a/NetworkOPs_8cpp_source.html b/NetworkOPs_8cpp_source.html index 3ea5b470df..122bf916db 100644 --- a/NetworkOPs_8cpp_source.html +++ b/NetworkOPs_8cpp_source.html @@ -1793,7 +1793,7 @@ $(document).ready(function() { init_codefold(0); });
1681 // only be set if the Batch feature is enabled. If Batch is
1682 // not enabled, the flag is always invalid, so don't relay
1683 // it regardless.
-
1684 !sttx.isFlag(tfInnerBatchTxn))
+
1684 !(sttx.isFlag(tfInnerBatchTxn)))
1685 {
1686 protocol::TMTransaction tx;
1687 Serializer s;
diff --git a/OpenLedger_8cpp_source.html b/OpenLedger_8cpp_source.html index ca4bd765ae..fc5f238bc0 100644 --- a/OpenLedger_8cpp_source.html +++ b/OpenLedger_8cpp_source.html @@ -371,7 +371,7 @@ $(document).ready(function() { init_codefold(0); });
@ terQUEUED
Definition TER.h:206
bool set(T &target, std::string const &name, Section const &section)
Set a value from a configuration Section If the named value is not found or doesn't parse as a T,...
constexpr struct xrpl::open_ledger_t open_ledger
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
constexpr std::uint32_t tfInnerBatchTxn
Definition TxFlags.h:42
bool isTefFailure(TER x) noexcept
Definition TER.h:647
std::string debugTxstr(std::shared_ptr< STTx const > const &tx)
diff --git a/PeerImp_8cpp_source.html b/PeerImp_8cpp_source.html index 242489deaa..faa392bec9 100644 --- a/PeerImp_8cpp_source.html +++ b/PeerImp_8cpp_source.html @@ -4201,7 +4201,7 @@ $(document).ready(function() { init_codefold(0); });
std::enable_if_t< std::is_integral< Integral >::value &&detail::is_engine< Engine >::value, Integral > rand_int(Engine &engine, Integral min, Integral max)
Return a uniformly distributed random integer.
uint256 proposalUniqueId(uint256 const &proposeHash, uint256 const &previousLedger, std::uint32_t proposeSeq, NetClock::time_point closeTime, Slice const &publicKey, Slice const &signature)
Calculate a unique identifier for a signed proposal.
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
Definition Slice.h:225
static constexpr char FEATURE_LEDGER_REPLAY[]
Definition Handshake.h:128
static constexpr char FEATURE_VPRR[]
Definition Handshake.h:124
diff --git a/PseudoTx__test_8cpp_source.html b/PseudoTx__test_8cpp_source.html index 9b7906565b..4bdb69133d 100644 --- a/PseudoTx__test_8cpp_source.html +++ b/PseudoTx__test_8cpp_source.html @@ -224,7 +224,7 @@ $(document).ready(function() { init_codefold(0); });
FeatureBitset testable_amendments()
Definition Env.h:55
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
base_uint< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:29
base_uint< 256 > uint256
Definition base_uint.h:539
bool passesLocalChecks(STObject const &st, std::string &)
Definition STTx.cpp:771
diff --git a/Regression__test_8cpp_source.html b/Regression__test_8cpp_source.html index 2d2b98239e..2b56c95701 100644 --- a/Regression__test_8cpp_source.html +++ b/Regression__test_8cpp_source.html @@ -490,7 +490,7 @@ $(document).ready(function() { init_codefold(0); });
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:138
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
create_genesis_t const create_genesis
Definition Ledger.cpp:32
std::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)
@ tapNONE
Definition ApplyView.h:12
diff --git a/SetRegularKey_8cpp_source.html b/SetRegularKey_8cpp_source.html index afee80f755..33a74ef1eb 100644 --- a/SetRegularKey_8cpp_source.html +++ b/SetRegularKey_8cpp_source.html @@ -178,9 +178,9 @@ $(document).ready(function() { init_codefold(0); });
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
AccountID const account_
Definition Transactor.h:128
-
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
+
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
ApplyView & view()
Definition Transactor.h:144
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
ApplyContext & ctx_
Definition Transactor.h:124
Keylet signers(AccountID const &account) noexcept
A SignerList.
Definition Indexes.cpp:312
diff --git a/SetSignerList_8cpp_source.html b/SetSignerList_8cpp_source.html index 2b2ac0d37f..da72ab7c3e 100644 --- a/SetSignerList_8cpp_source.html +++ b/SetSignerList_8cpp_source.html @@ -576,7 +576,7 @@ $(document).ready(function() { init_codefold(0); });
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
XRPAmount mPriorBalance
Definition Transactor.h:129
-
virtual void preCompute()
+
virtual void preCompute()
ApplyContext & ctx_
Definition Transactor.h:124
diff --git a/Submit_8cpp_source.html b/Submit_8cpp_source.html index eaed264278..a3fe0cda9d 100644 --- a/Submit_8cpp_source.html +++ b/Submit_8cpp_source.html @@ -296,7 +296,7 @@ $(document).ready(function() { init_codefold(0); });
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &config)
Checks transaction signature and local checks.
Definition apply.cpp:25
@ temUNCERTAIN
Definition TER.h:104
Json::Value doSubmit(RPC::JsonContext &)
Definition Submit.cpp:26
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
Definition Slice.h:225
bool isUnlimited(Role const &role)
ADMIN and IDENTIFIED roles shall have unlimited resources.
Definition Role.cpp:106
@ rpcNOT_SUPPORTED
Definition ErrorCodes.h:113
diff --git a/TransactionSign_8cpp_source.html b/TransactionSign_8cpp_source.html index 91af5a5a9f..78256cf63e 100644 --- a/TransactionSign_8cpp_source.html +++ b/TransactionSign_8cpp_source.html @@ -1764,7 +1764,7 @@ $(document).ready(function() { init_codefold(0); });
Buffer sign(PublicKey const &pk, SecretKey const &sk, Slice const &message)
Generate a signature for a message.
XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
Compute only the expected base fee for a transaction.
@ lsfDisableMaster
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
Definition Slice.h:225
bool isUnlimited(Role const &role)
ADMIN and IDENTIFIED roles shall have unlimited resources.
Definition Role.cpp:106
error_code_i
Definition ErrorCodes.h:21
diff --git a/Transactor_8cpp_source.html b/Transactor_8cpp_source.html index beffd3f828..9d7cdb95ba 100644 --- a/Transactor_8cpp_source.html +++ b/Transactor_8cpp_source.html @@ -289,1201 +289,1207 @@ $(document).ready(function() { init_codefold(0); });
204 // regardless of success or failure
205 return *ret;
206
-
207 // Skip signature check on batch inner transactions
-
208 if (ctx.tx.isFlag(tfInnerBatchTxn) && !ctx.rules.enabled(featureBatch))
-
209 return tesSUCCESS;
-
210 // Do not add any checks after this point that are relevant for
-
211 // batch inner transactions. They will be skipped.
-
212
-
213 auto const sigValid = checkValidity(
-
214 ctx.app.getHashRouter(), ctx.tx, ctx.rules, ctx.app.config());
-
215 if (sigValid.first == Validity::SigBad)
-
216 { // LCOV_EXCL_START
-
217 JLOG(ctx.j.debug()) << "preflight2: bad signature. " << sigValid.second;
-
218 return temINVALID;
-
219 // LCOV_EXCL_STOP
-
220 }
-
221
-
222 // Do not add any checks after this point that are relevant for
-
223 // batch inner transactions. They will be skipped.
-
224
-
225 return tesSUCCESS;
-
226}
-
+
207 // It should be impossible for the InnerBatchTxn flag to be set without
+
208 // featureBatch being enabled
+
209 XRPL_ASSERT_PARTS(
+
210 !ctx.tx.isFlag(tfInnerBatchTxn) || ctx.rules.enabled(featureBatch),
+
211 "xrpl::Transactor::preflight2",
+
212 "InnerBatch flag only set if feature enabled");
+
213 // Skip signature check on batch inner transactions
+
214 if (ctx.tx.isFlag(tfInnerBatchTxn) && ctx.rules.enabled(featureBatch))
+
215 return tesSUCCESS;
+
216 // Do not add any checks after this point that are relevant for
+
217 // batch inner transactions. They will be skipped.
+
218
+
219 auto const sigValid = checkValidity(
+
220 ctx.app.getHashRouter(), ctx.tx, ctx.rules, ctx.app.config());
+
221 if (sigValid.first == Validity::SigBad)
+
222 { // LCOV_EXCL_START
+
223 JLOG(ctx.j.debug()) << "preflight2: bad signature. " << sigValid.second;
+
224 return temINVALID;
+
225 // LCOV_EXCL_STOP
+
226 }
227
-
228//------------------------------------------------------------------------------
-
229
-
- -
231 : ctx_(ctx)
-
232 , sink_(ctx.journal, to_short_string(ctx.tx.getTransactionID()) + " ")
-
233 , j_(sink_)
-
234 , account_(ctx.tx.getAccountID(sfAccount))
-
235{
-
236}
+
228 // Do not add any checks after this point that are relevant for
+
229 // batch inner transactions. They will be skipped.
+
230
+
231 return tesSUCCESS;
+
232}
-
237
-
238bool
-
- -
240 std::optional<Slice> const& slice,
-
241 std::size_t maxLength)
-
242{
-
243 if (!slice)
-
244 return true;
-
245 return !slice->empty() && slice->length() <= maxLength;
-
246}
+
233
+
234//------------------------------------------------------------------------------
+
235
+
+ +
237 : ctx_(ctx)
+
238 , sink_(ctx.journal, to_short_string(ctx.tx.getTransactionID()) + " ")
+
239 , j_(sink_)
+
240 , account_(ctx.tx.getAccountID(sfAccount))
+
241{
+
242}
-
247
- -
- -
250{
-
251 return tfUniversalMask;
+
243
+
244bool
+
+ +
246 std::optional<Slice> const& slice,
+
247 std::size_t maxLength)
+
248{
+
249 if (!slice)
+
250 return true;
+
251 return !slice->empty() && slice->length() <= maxLength;
252}
253
-
254NotTEC
+
259
260NotTEC
- +
262{
-
263 auto const delegate = tx[~sfDelegate];
-
264 if (!delegate)
-
265 return tesSUCCESS;
-
266
-
267 auto const delegateKey = keylet::delegate(tx[sfAccount], *delegate);
-
268 auto const sle = view.read(delegateKey);
-
269
-
270 if (!sle)
- +
263 return tesSUCCESS;
+
264}
+
+
265
+
266NotTEC
+
+ +
268{
+
269 auto const delegate = tx[~sfDelegate];
+
270 if (!delegate)
+
271 return tesSUCCESS;
272
-
273 return checkTxPermission(sle, tx);
-
274}
-
+
273 auto const delegateKey = keylet::delegate(tx[sfAccount], *delegate);
+
274 auto const sle = view.read(delegateKey);
275
- -
- -
278{
-
279 // Returns the fee in fee units.
-
280
-
281 // The computation has two parts:
-
282 // * The base fee, which is the same for most transactions.
-
283 // * The additional cost of each multisignature on the transaction.
-
284 XRPAmount const baseFee = view.fees().base;
-
285
-
286 // Each signer adds one more baseFee to the minimum required fee
-
287 // for the transaction.
-
288 std::size_t const signerCount =
-
289 tx.isFieldPresent(sfSigners) ? tx.getFieldArray(sfSigners).size() : 0;
-
290
-
291 return baseFee + (signerCount * baseFee);
-
292}
+
276 if (!sle)
+ +
278
+
279 return checkTxPermission(sle, tx);
+
280}
-
293
-
294// Returns the fee in fee units, not scaled for load.
- -
- -
297{
-
298 // Assumption: One reserve increment is typically much greater than one base
-
299 // fee.
-
300 // This check is in an assert so that it will come to the attention of
-
301 // developers if that assumption is not correct. If the owner reserve is not
-
302 // significantly larger than the base fee (or even worse, smaller), we will
-
303 // need to rethink charging an owner reserve as a transaction fee.
-
304 // TODO: This function is static, and I don't want to add more parameters.
-
305 // When it is finally refactored to be in a context that has access to the
-
306 // Application, include "app().overlay().networkID() > 2 ||" in the
-
307 // condition.
-
308 XRPL_ASSERT(
-
309 view.fees().increment > view.fees().base * 100,
-
310 "xrpl::Transactor::calculateOwnerReserveFee : Owner reserve is "
-
311 "reasonable");
-
312 return view.fees().increment;
-
313}
+
281
+ +
+ +
284{
+
285 // Returns the fee in fee units.
+
286
+
287 // The computation has two parts:
+
288 // * The base fee, which is the same for most transactions.
+
289 // * The additional cost of each multisignature on the transaction.
+
290 XRPAmount const baseFee = view.fees().base;
+
291
+
292 // Each signer adds one more baseFee to the minimum required fee
+
293 // for the transaction.
+
294 std::size_t const signerCount =
+
295 tx.isFieldPresent(sfSigners) ? tx.getFieldArray(sfSigners).size() : 0;
+
296
+
297 return baseFee + (signerCount * baseFee);
+
298}
-
314
- -
- -
317 Application& app,
-
318 XRPAmount baseFee,
-
319 Fees const& fees,
-
320 ApplyFlags flags)
-
321{
-
322 return scaleFeeLoad(baseFee, app.getFeeTrack(), fees, flags & tapUNLIMITED);
-
323}
+
299
+
300// Returns the fee in fee units, not scaled for load.
+ +
+ +
303{
+
304 // Assumption: One reserve increment is typically much greater than one base
+
305 // fee.
+
306 // This check is in an assert so that it will come to the attention of
+
307 // developers if that assumption is not correct. If the owner reserve is not
+
308 // significantly larger than the base fee (or even worse, smaller), we will
+
309 // need to rethink charging an owner reserve as a transaction fee.
+
310 // TODO: This function is static, and I don't want to add more parameters.
+
311 // When it is finally refactored to be in a context that has access to the
+
312 // Application, include "app().overlay().networkID() > 2 ||" in the
+
313 // condition.
+
314 XRPL_ASSERT(
+
315 view.fees().increment > view.fees().base * 100,
+
316 "xrpl::Transactor::calculateOwnerReserveFee : Owner reserve is "
+
317 "reasonable");
+
318 return view.fees().increment;
+
319}
-
324
-
325TER
-
- +
320
+ +
+ +
323 Application& app,
+
324 XRPAmount baseFee,
+
325 Fees const& fees,
+
326 ApplyFlags flags)
327{
-
328 if (!ctx.tx[sfFee].native())
-
329 return temBAD_FEE;
+
328 return scaleFeeLoad(baseFee, app.getFeeTrack(), fees, flags & tapUNLIMITED);
+
329}
+
330
-
331 auto const feePaid = ctx.tx[sfFee].xrp();
-
332
-
333 if (ctx.flags & tapBATCH)
-
334 {
-
335 if (feePaid == beast::zero)
-
336 return tesSUCCESS;
-
337
-
338 JLOG(ctx.j.trace()) << "Batch: Fee must be zero.";
-
339 return temBAD_FEE; // LCOV_EXCL_LINE
-
340 }
-
341
-
342 if (!isLegalAmount(feePaid) || feePaid < beast::zero)
-
343 return temBAD_FEE;
-
344
-
345 // Only check fee is sufficient when the ledger is open.
-
346 if (ctx.view.open())
-
347 {
-
348 auto const feeDue =
-
349 minimumFee(ctx.app, baseFee, ctx.view.fees(), ctx.flags);
+
331TER
+
+ +
333{
+
334 if (!ctx.tx[sfFee].native())
+
335 return temBAD_FEE;
+
336
+
337 auto const feePaid = ctx.tx[sfFee].xrp();
+
338
+
339 if (ctx.flags & tapBATCH)
+
340 {
+
341 if (feePaid == beast::zero)
+
342 return tesSUCCESS;
+
343
+
344 JLOG(ctx.j.trace()) << "Batch: Fee must be zero.";
+
345 return temBAD_FEE; // LCOV_EXCL_LINE
+
346 }
+
347
+
348 if (!isLegalAmount(feePaid) || feePaid < beast::zero)
+
349 return temBAD_FEE;
350
-
351 if (feePaid < feeDue)
-
352 {
-
353 JLOG(ctx.j.trace())
-
354 << "Insufficient fee paid: " << to_string(feePaid) << "/"
-
355 << to_string(feeDue);
-
356 return telINSUF_FEE_P;
-
357 }
-
358 }
-
359
-
360 if (feePaid == beast::zero)
-
361 return tesSUCCESS;
-
362
-
363 auto const id = ctx.tx.isFieldPresent(sfDelegate)
-
364 ? ctx.tx.getAccountID(sfDelegate)
-
365 : ctx.tx.getAccountID(sfAccount);
-
366 auto const sle = ctx.view.read(keylet::account(id));
-
367 if (!sle)
-
368 return terNO_ACCOUNT;
-
369
-
370 auto const balance = (*sle)[sfBalance].xrp();
-
371
-
372 if (balance < feePaid)
-
373 {
-
374 JLOG(ctx.j.trace())
-
375 << "Insufficient balance:" << " balance=" << to_string(balance)
-
376 << " paid=" << to_string(feePaid);
+
351 // Only check fee is sufficient when the ledger is open.
+
352 if (ctx.view.open())
+
353 {
+
354 auto const feeDue =
+
355 minimumFee(ctx.app, baseFee, ctx.view.fees(), ctx.flags);
+
356
+
357 if (feePaid < feeDue)
+
358 {
+
359 JLOG(ctx.j.trace())
+
360 << "Insufficient fee paid: " << to_string(feePaid) << "/"
+
361 << to_string(feeDue);
+
362 return telINSUF_FEE_P;
+
363 }
+
364 }
+
365
+
366 if (feePaid == beast::zero)
+
367 return tesSUCCESS;
+
368
+
369 auto const id = ctx.tx.isFieldPresent(sfDelegate)
+
370 ? ctx.tx.getAccountID(sfDelegate)
+
371 : ctx.tx.getAccountID(sfAccount);
+
372 auto const sle = ctx.view.read(keylet::account(id));
+
373 if (!sle)
+
374 return terNO_ACCOUNT;
+
375
+
376 auto const balance = (*sle)[sfBalance].xrp();
377
-
378 if ((balance > beast::zero) && !ctx.view.open())
-
379 {
-
380 // Closed ledger, non-zero balance, less than fee
-
381 return tecINSUFF_FEE;
-
382 }
+
378 if (balance < feePaid)
+
379 {
+
380 JLOG(ctx.j.trace())
+
381 << "Insufficient balance:" << " balance=" << to_string(balance)
+
382 << " paid=" << to_string(feePaid);
383
-
384 return terINSUF_FEE_B;
-
385 }
-
386
-
387 return tesSUCCESS;
-
388}
-
+
384 if ((balance > beast::zero) && !ctx.view.open())
+
385 {
+
386 // Closed ledger, non-zero balance, less than fee
+
387 return tecINSUFF_FEE;
+
388 }
389
-
390TER
-
- -
392{
-
393 auto const feePaid = ctx_.tx[sfFee].xrp();
-
394
-
395 if (ctx_.tx.isFieldPresent(sfDelegate))
-
396 {
-
397 // Delegated transactions are paid by the delegated account.
-
398 auto const delegate = ctx_.tx.getAccountID(sfDelegate);
-
399 auto const delegatedSle = view().peek(keylet::account(delegate));
-
400 if (!delegatedSle)
-
401 return tefINTERNAL; // LCOV_EXCL_LINE
-
402
-
403 delegatedSle->setFieldAmount(
-
404 sfBalance, delegatedSle->getFieldAmount(sfBalance) - feePaid);
-
405 view().update(delegatedSle);
-
406 }
-
407 else
-
408 {
-
409 auto const sle = view().peek(keylet::account(account_));
-
410 if (!sle)
-
411 return tefINTERNAL; // LCOV_EXCL_LINE
-
412
-
413 // Deduct the fee, so it's not available during the transaction.
-
414 // Will only write the account back if the transaction succeeds.
-
415
-
416 mSourceBalance -= feePaid;
-
417 sle->setFieldAmount(sfBalance, mSourceBalance);
+
390 return terINSUF_FEE_B;
+
391 }
+
392
+
393 return tesSUCCESS;
+
394}
+
+
395
+
396TER
+
+ +
398{
+
399 auto const feePaid = ctx_.tx[sfFee].xrp();
+
400
+
401 if (ctx_.tx.isFieldPresent(sfDelegate))
+
402 {
+
403 // Delegated transactions are paid by the delegated account.
+
404 auto const delegate = ctx_.tx.getAccountID(sfDelegate);
+
405 auto const delegatedSle = view().peek(keylet::account(delegate));
+
406 if (!delegatedSle)
+
407 return tefINTERNAL; // LCOV_EXCL_LINE
+
408
+
409 delegatedSle->setFieldAmount(
+
410 sfBalance, delegatedSle->getFieldAmount(sfBalance) - feePaid);
+
411 view().update(delegatedSle);
+
412 }
+
413 else
+
414 {
+
415 auto const sle = view().peek(keylet::account(account_));
+
416 if (!sle)
+
417 return tefINTERNAL; // LCOV_EXCL_LINE
418
-
419 // VFALCO Should we call view().rawDestroyXRP() here as well?
-
420 }
+
419 // Deduct the fee, so it's not available during the transaction.
+
420 // Will only write the account back if the transaction succeeds.
421
-
422 return tesSUCCESS;
-
423}
-
+
422 mSourceBalance -= feePaid;
+
423 sle->setFieldAmount(sfBalance, mSourceBalance);
424
-
425NotTEC
-
- -
427 ReadView const& view,
-
428 STTx const& tx,
- -
430{
-
431 auto const id = tx.getAccountID(sfAccount);
-
432
-
433 auto const sle = view.read(keylet::account(id));
-
434
-
435 if (!sle)
-
436 {
-
437 JLOG(j.trace())
-
438 << "applyTransaction: delay: source account does not exist "
-
439 << toBase58(id);
-
440 return terNO_ACCOUNT;
-
441 }
-
442
-
443 SeqProxy const t_seqProx = tx.getSeqProxy();
-
444 SeqProxy const a_seq = SeqProxy::sequence((*sle)[sfSequence]);
-
445
-
446 if (t_seqProx.isSeq())
-
447 {
-
448 if (tx.isFieldPresent(sfTicketSequence))
-
449 {
-
450 JLOG(j.trace()) << "applyTransaction: has both a TicketSequence "
-
451 "and a non-zero Sequence number";
-
452 return temSEQ_AND_TICKET;
-
453 }
-
454 if (t_seqProx != a_seq)
+
425 // VFALCO Should we call view().rawDestroyXRP() here as well?
+
426 }
+
427
+
428 return tesSUCCESS;
+
429}
+
+
430
+
431NotTEC
+
+ +
433 ReadView const& view,
+
434 STTx const& tx,
+ +
436{
+
437 auto const id = tx.getAccountID(sfAccount);
+
438
+
439 auto const sle = view.read(keylet::account(id));
+
440
+
441 if (!sle)
+
442 {
+
443 JLOG(j.trace())
+
444 << "applyTransaction: delay: source account does not exist "
+
445 << toBase58(id);
+
446 return terNO_ACCOUNT;
+
447 }
+
448
+
449 SeqProxy const t_seqProx = tx.getSeqProxy();
+
450 SeqProxy const a_seq = SeqProxy::sequence((*sle)[sfSequence]);
+
451
+
452 if (t_seqProx.isSeq())
+
453 {
+
454 if (tx.isFieldPresent(sfTicketSequence))
455 {
-
456 if (a_seq < t_seqProx)
-
457 {
-
458 JLOG(j.trace())
-
459 << "applyTransaction: has future sequence number "
-
460 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
-
461 return terPRE_SEQ;
-
462 }
-
463 // It's an already-used sequence number.
-
464 JLOG(j.trace()) << "applyTransaction: has past sequence number "
-
465 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
-
466 return tefPAST_SEQ;
-
467 }
-
468 }
-
469 else if (t_seqProx.isTicket())
-
470 {
-
471 // Bypass the type comparison. Apples and oranges.
-
472 if (a_seq.value() <= t_seqProx.value())
-
473 {
-
474 // If the Ticket number is greater than or equal to the
-
475 // account sequence there's the possibility that the
-
476 // transaction to create the Ticket has not hit the ledger
-
477 // yet. Allow a retry.
-
478 JLOG(j.trace()) << "applyTransaction: has future ticket id "
-
479 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
-
480 return terPRE_TICKET;
-
481 }
-
482
-
483 // Transaction can never succeed if the Ticket is not in the ledger.
-
484 if (!view.exists(keylet::ticket(id, t_seqProx)))
-
485 {
-
486 JLOG(j.trace())
-
487 << "applyTransaction: ticket already used or never created "
-
488 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
-
489 return tefNO_TICKET;
-
490 }
-
491 }
-
492
-
493 return tesSUCCESS;
-
494}
-
-
495
-
496NotTEC
-
- -
498{
-
499 auto const id = ctx.tx.getAccountID(sfAccount);
-
500
-
501 auto const sle = ctx.view.read(keylet::account(id));
-
502
-
503 if (!sle)
-
504 {
-
505 JLOG(ctx.j.trace())
-
506 << "applyTransaction: delay: source account does not exist "
-
507 << toBase58(id);
-
508 return terNO_ACCOUNT;
-
509 }
-
510
-
511 if (ctx.tx.isFieldPresent(sfAccountTxnID) &&
-
512 (sle->getFieldH256(sfAccountTxnID) !=
-
513 ctx.tx.getFieldH256(sfAccountTxnID)))
-
514 return tefWRONG_PRIOR;
-
515
-
516 if (ctx.tx.isFieldPresent(sfLastLedgerSequence) &&
-
517 (ctx.view.seq() > ctx.tx.getFieldU32(sfLastLedgerSequence)))
-
518 return tefMAX_LEDGER;
-
519
-
520 if (ctx.view.txExists(ctx.tx.getTransactionID()))
-
521 return tefALREADY;
-
522
-
523 return tesSUCCESS;
-
524}
+
456 JLOG(j.trace()) << "applyTransaction: has both a TicketSequence "
+
457 "and a non-zero Sequence number";
+
458 return temSEQ_AND_TICKET;
+
459 }
+
460 if (t_seqProx != a_seq)
+
461 {
+
462 if (a_seq < t_seqProx)
+
463 {
+
464 JLOG(j.trace())
+
465 << "applyTransaction: has future sequence number "
+
466 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
+
467 return terPRE_SEQ;
+
468 }
+
469 // It's an already-used sequence number.
+
470 JLOG(j.trace()) << "applyTransaction: has past sequence number "
+
471 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
+
472 return tefPAST_SEQ;
+
473 }
+
474 }
+
475 else if (t_seqProx.isTicket())
+
476 {
+
477 // Bypass the type comparison. Apples and oranges.
+
478 if (a_seq.value() <= t_seqProx.value())
+
479 {
+
480 // If the Ticket number is greater than or equal to the
+
481 // account sequence there's the possibility that the
+
482 // transaction to create the Ticket has not hit the ledger
+
483 // yet. Allow a retry.
+
484 JLOG(j.trace()) << "applyTransaction: has future ticket id "
+
485 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
+
486 return terPRE_TICKET;
+
487 }
+
488
+
489 // Transaction can never succeed if the Ticket is not in the ledger.
+
490 if (!view.exists(keylet::ticket(id, t_seqProx)))
+
491 {
+
492 JLOG(j.trace())
+
493 << "applyTransaction: ticket already used or never created "
+
494 << "a_seq=" << a_seq << " t_seq=" << t_seqProx;
+
495 return tefNO_TICKET;
+
496 }
+
497 }
+
498
+
499 return tesSUCCESS;
+
500}
+
501
+
502NotTEC
+
+ +
504{
+
505 auto const id = ctx.tx.getAccountID(sfAccount);
+
506
+
507 auto const sle = ctx.view.read(keylet::account(id));
+
508
+
509 if (!sle)
+
510 {
+
511 JLOG(ctx.j.trace())
+
512 << "applyTransaction: delay: source account does not exist "
+
513 << toBase58(id);
+
514 return terNO_ACCOUNT;
+
515 }
+
516
+
517 if (ctx.tx.isFieldPresent(sfAccountTxnID) &&
+
518 (sle->getFieldH256(sfAccountTxnID) !=
+
519 ctx.tx.getFieldH256(sfAccountTxnID)))
+
520 return tefWRONG_PRIOR;
+
521
+
522 if (ctx.tx.isFieldPresent(sfLastLedgerSequence) &&
+
523 (ctx.view.seq() > ctx.tx.getFieldU32(sfLastLedgerSequence)))
+
524 return tefMAX_LEDGER;
525
-
526TER
-
- -
528{
-
529 XRPL_ASSERT(
-
530 sleAccount, "xrpl::Transactor::consumeSeqProxy : non-null account");
-
531 SeqProxy const seqProx = ctx_.tx.getSeqProxy();
-
532 if (seqProx.isSeq())
-
533 {
-
534 // Note that if this transaction is a TicketCreate, then
-
535 // the transaction will modify the account root sfSequence
-
536 // yet again.
-
537 sleAccount->setFieldU32(sfSequence, seqProx.value() + 1);
-
538 return tesSUCCESS;
-
539 }
-
540 return ticketDelete(
-
541 view(), account_, getTicketIndex(account_, seqProx), j_);
-
542}
+
526 if (ctx.view.txExists(ctx.tx.getTransactionID()))
+
527 return tefALREADY;
+
528
+
529 return tesSUCCESS;
+
530}
-
543
-
544// Remove a single Ticket from the ledger.
-
545TER
-
- -
547 ApplyView& view,
-
548 AccountID const& account,
-
549 uint256 const& ticketIndex,
- -
551{
-
552 // Delete the Ticket, adjust the account root ticket count, and
-
553 // reduce the owner count.
-
554 SLE::pointer const sleTicket = view.peek(keylet::ticket(ticketIndex));
-
555 if (!sleTicket)
-
556 {
-
557 // LCOV_EXCL_START
-
558 JLOG(j.fatal()) << "Ticket disappeared from ledger.";
-
559 return tefBAD_LEDGER;
-
560 // LCOV_EXCL_STOP
-
561 }
-
562
-
563 std::uint64_t const page{(*sleTicket)[sfOwnerNode]};
-
564 if (!view.dirRemove(keylet::ownerDir(account), page, ticketIndex, true))
-
565 {
-
566 // LCOV_EXCL_START
-
567 JLOG(j.fatal()) << "Unable to delete Ticket from owner.";
-
568 return tefBAD_LEDGER;
-
569 // LCOV_EXCL_STOP
-
570 }
-
571
-
572 // Update the account root's TicketCount. If the ticket count drops to
-
573 // zero remove the (optional) field.
-
574 auto sleAccount = view.peek(keylet::account(account));
-
575 if (!sleAccount)
-
576 {
-
577 // LCOV_EXCL_START
-
578 JLOG(j.fatal()) << "Could not find Ticket owner account root.";
-
579 return tefBAD_LEDGER;
-
580 // LCOV_EXCL_STOP
-
581 }
-
582
-
583 if (auto ticketCount = (*sleAccount)[~sfTicketCount])
-
584 {
-
585 if (*ticketCount == 1)
-
586 sleAccount->makeFieldAbsent(sfTicketCount);
-
587 else
-
588 ticketCount = *ticketCount - 1;
-
589 }
-
590 else
-
591 {
-
592 // LCOV_EXCL_START
-
593 JLOG(j.fatal()) << "TicketCount field missing from account root.";
-
594 return tefBAD_LEDGER;
-
595 // LCOV_EXCL_STOP
-
596 }
-
597
-
598 // Update the Ticket owner's reserve.
-
599 adjustOwnerCount(view, sleAccount, -1, j);
-
600
-
601 // Remove Ticket from ledger.
-
602 view.erase(sleTicket);
-
603 return tesSUCCESS;
-
604}
+
531
+
532TER
+
+ +
534{
+
535 XRPL_ASSERT(
+
536 sleAccount, "xrpl::Transactor::consumeSeqProxy : non-null account");
+
537 SeqProxy const seqProx = ctx_.tx.getSeqProxy();
+
538 if (seqProx.isSeq())
+
539 {
+
540 // Note that if this transaction is a TicketCreate, then
+
541 // the transaction will modify the account root sfSequence
+
542 // yet again.
+
543 sleAccount->setFieldU32(sfSequence, seqProx.value() + 1);
+
544 return tesSUCCESS;
+
545 }
+
546 return ticketDelete(
+
547 view(), account_, getTicketIndex(account_, seqProx), j_);
+
548}
-
605
-
606// check stuff before you bother to lock the ledger
-
607void
-
- -
609{
-
610 XRPL_ASSERT(
-
611 account_ != beast::zero,
-
612 "xrpl::Transactor::preCompute : nonzero account");
-
613}
+
549
+
550// Remove a single Ticket from the ledger.
+
551TER
+
+ +
553 ApplyView& view,
+
554 AccountID const& account,
+
555 uint256 const& ticketIndex,
+ +
557{
+
558 // Delete the Ticket, adjust the account root ticket count, and
+
559 // reduce the owner count.
+
560 SLE::pointer const sleTicket = view.peek(keylet::ticket(ticketIndex));
+
561 if (!sleTicket)
+
562 {
+
563 // LCOV_EXCL_START
+
564 JLOG(j.fatal()) << "Ticket disappeared from ledger.";
+
565 return tefBAD_LEDGER;
+
566 // LCOV_EXCL_STOP
+
567 }
+
568
+
569 std::uint64_t const page{(*sleTicket)[sfOwnerNode]};
+
570 if (!view.dirRemove(keylet::ownerDir(account), page, ticketIndex, true))
+
571 {
+
572 // LCOV_EXCL_START
+
573 JLOG(j.fatal()) << "Unable to delete Ticket from owner.";
+
574 return tefBAD_LEDGER;
+
575 // LCOV_EXCL_STOP
+
576 }
+
577
+
578 // Update the account root's TicketCount. If the ticket count drops to
+
579 // zero remove the (optional) field.
+
580 auto sleAccount = view.peek(keylet::account(account));
+
581 if (!sleAccount)
+
582 {
+
583 // LCOV_EXCL_START
+
584 JLOG(j.fatal()) << "Could not find Ticket owner account root.";
+
585 return tefBAD_LEDGER;
+
586 // LCOV_EXCL_STOP
+
587 }
+
588
+
589 if (auto ticketCount = (*sleAccount)[~sfTicketCount])
+
590 {
+
591 if (*ticketCount == 1)
+
592 sleAccount->makeFieldAbsent(sfTicketCount);
+
593 else
+
594 ticketCount = *ticketCount - 1;
+
595 }
+
596 else
+
597 {
+
598 // LCOV_EXCL_START
+
599 JLOG(j.fatal()) << "TicketCount field missing from account root.";
+
600 return tefBAD_LEDGER;
+
601 // LCOV_EXCL_STOP
+
602 }
+
603
+
604 // Update the Ticket owner's reserve.
+
605 adjustOwnerCount(view, sleAccount, -1, j);
+
606
+
607 // Remove Ticket from ledger.
+
608 view.erase(sleTicket);
+
609 return tesSUCCESS;
+
610}
-
614
-
615TER
-
- -
617{
-
618 preCompute();
-
619
-
620 // If the transactor requires a valid account and the transaction doesn't
-
621 // list one, preflight will have already a flagged a failure.
-
622 auto const sle = view().peek(keylet::account(account_));
-
623
-
624 // sle must exist except for transactions
-
625 // that allow zero account.
-
626 XRPL_ASSERT(
-
627 sle != nullptr || account_ == beast::zero,
-
628 "xrpl::Transactor::apply : non-null SLE or zero account");
+
611
+
612// check stuff before you bother to lock the ledger
+
613void
+
+ +
615{
+
616 XRPL_ASSERT(
+
617 account_ != beast::zero,
+
618 "xrpl::Transactor::preCompute : nonzero account");
+
619}
+
+
620
+
621TER
+
+ +
623{
+
624 preCompute();
+
625
+
626 // If the transactor requires a valid account and the transaction doesn't
+
627 // list one, preflight will have already a flagged a failure.
+
628 auto const sle = view().peek(keylet::account(account_));
629
-
630 if (sle)
-
631 {
-
632 mPriorBalance = STAmount{(*sle)[sfBalance]}.xrp();
- -
634
-
635 TER result = consumeSeqProxy(sle);
-
636 if (result != tesSUCCESS)
-
637 return result;
-
638
-
639 result = payFee();
-
640 if (result != tesSUCCESS)
-
641 return result;
-
642
-
643 if (sle->isFieldPresent(sfAccountTxnID))
-
644 sle->setFieldH256(sfAccountTxnID, ctx_.tx.getTransactionID());
-
645
-
646 view().update(sle);
-
647 }
+
630 // sle must exist except for transactions
+
631 // that allow zero account.
+
632 XRPL_ASSERT(
+
633 sle != nullptr || account_ == beast::zero,
+
634 "xrpl::Transactor::apply : non-null SLE or zero account");
+
635
+
636 if (sle)
+
637 {
+
638 mPriorBalance = STAmount{(*sle)[sfBalance]}.xrp();
+ +
640
+
641 TER result = consumeSeqProxy(sle);
+
642 if (result != tesSUCCESS)
+
643 return result;
+
644
+
645 result = payFee();
+
646 if (result != tesSUCCESS)
+
647 return result;
648
-
649 return doApply();
-
650}
-
+
649 if (sle->isFieldPresent(sfAccountTxnID))
+
650 sle->setFieldH256(sfAccountTxnID, ctx_.tx.getTransactionID());
651
-
652NotTEC
-
- -
654 ReadView const& view,
-
655 ApplyFlags flags,
-
656 std::optional<uint256 const> const& parentBatchId,
-
657 AccountID const& idAccount,
-
658 STObject const& sigObject,
-
659 beast::Journal const j)
-
660{
-
661 {
-
662 auto const sle = view.read(keylet::account(idAccount));
-
663
-
664 if (view.rules().enabled(featureLendingProtocol) &&
-
665 isPseudoAccount(sle))
-
666 // Pseudo-accounts can't sign transactions. This check is gated on
-
667 // the Lending Protocol amendment because that's the project it was
-
668 // added under, and it doesn't justify another amendment
-
669 return tefBAD_AUTH;
-
670 }
-
671
-
672 auto const pkSigner = sigObject.getFieldVL(sfSigningPubKey);
-
673 // Ignore signature check on batch inner transactions
-
674 if (parentBatchId && view.rules().enabled(featureBatch))
-
675 {
-
676 // Defensive Check: These values are also checked in Batch::preflight
-
677 if (sigObject.isFieldPresent(sfTxnSignature) || !pkSigner.empty() ||
-
678 sigObject.isFieldPresent(sfSigners))
-
679 {
-
680 return temINVALID_FLAG; // LCOV_EXCL_LINE
-
681 }
-
682 return tesSUCCESS;
-
683 }
-
684
-
685 if ((flags & tapDRY_RUN) && pkSigner.empty() &&
-
686 !sigObject.isFieldPresent(sfSigners))
-
687 {
-
688 // simulate: skip signature validation when neither SigningPubKey nor
-
689 // Signers are provided
-
690 return tesSUCCESS;
-
691 }
-
692
-
693 // If the pk is empty and not simulate or simulate and signers,
-
694 // then we must be multi-signing.
-
695 if (sigObject.isFieldPresent(sfSigners))
-
696 {
-
697 return checkMultiSign(view, flags, idAccount, sigObject, j);
-
698 }
-
699
-
700 // Check Single Sign
-
701 XRPL_ASSERT(
-
702 !pkSigner.empty(), "xrpl::Transactor::checkSign : non-empty signer");
-
703
-
704 if (!publicKeyType(makeSlice(pkSigner)))
-
705 {
-
706 JLOG(j.trace()) << "checkSign: signing public key type is unknown";
-
707 return tefBAD_AUTH; // FIXME: should be better error!
-
708 }
+
652 view().update(sle);
+
653 }
+
654
+
655 return doApply();
+
656}
+
+
657
+
658NotTEC
+
+ +
660 ReadView const& view,
+
661 ApplyFlags flags,
+
662 std::optional<uint256 const> const& parentBatchId,
+
663 AccountID const& idAccount,
+
664 STObject const& sigObject,
+
665 beast::Journal const j)
+
666{
+
667 {
+
668 auto const sle = view.read(keylet::account(idAccount));
+
669
+
670 if (view.rules().enabled(featureLendingProtocol) &&
+
671 isPseudoAccount(sle))
+
672 // Pseudo-accounts can't sign transactions. This check is gated on
+
673 // the Lending Protocol amendment because that's the project it was
+
674 // added under, and it doesn't justify another amendment
+
675 return tefBAD_AUTH;
+
676 }
+
677
+
678 auto const pkSigner = sigObject.getFieldVL(sfSigningPubKey);
+
679 // Ignore signature check on batch inner transactions
+
680 if (parentBatchId && view.rules().enabled(featureBatch))
+
681 {
+
682 // Defensive Check: These values are also checked in Batch::preflight
+
683 if (sigObject.isFieldPresent(sfTxnSignature) || !pkSigner.empty() ||
+
684 sigObject.isFieldPresent(sfSigners))
+
685 {
+
686 return temINVALID_FLAG; // LCOV_EXCL_LINE
+
687 }
+
688 return tesSUCCESS;
+
689 }
+
690
+
691 if ((flags & tapDRY_RUN) && pkSigner.empty() &&
+
692 !sigObject.isFieldPresent(sfSigners))
+
693 {
+
694 // simulate: skip signature validation when neither SigningPubKey nor
+
695 // Signers are provided
+
696 return tesSUCCESS;
+
697 }
+
698
+
699 // If the pk is empty and not simulate or simulate and signers,
+
700 // then we must be multi-signing.
+
701 if (sigObject.isFieldPresent(sfSigners))
+
702 {
+
703 return checkMultiSign(view, flags, idAccount, sigObject, j);
+
704 }
+
705
+
706 // Check Single Sign
+
707 XRPL_ASSERT(
+
708 !pkSigner.empty(), "xrpl::Transactor::checkSign : non-empty signer");
709
-
710 // Look up the account.
-
711 auto const idSigner = pkSigner.empty()
-
712 ? idAccount
-
713 : calcAccountID(PublicKey(makeSlice(pkSigner)));
-
714 auto const sleAccount = view.read(keylet::account(idAccount));
-
715 if (!sleAccount)
-
716 return terNO_ACCOUNT;
-
717
-
718 return checkSingleSign(view, idSigner, idAccount, sleAccount, j);
-
719}
+
710 if (!publicKeyType(makeSlice(pkSigner)))
+
711 {
+
712 JLOG(j.trace()) << "checkSign: signing public key type is unknown";
+
713 return tefBAD_AUTH; // FIXME: should be better error!
+
714 }
+
715
+
716 // Look up the account.
+
717 auto const idSigner = pkSigner.empty()
+
718 ? idAccount
+
719 : calcAccountID(PublicKey(makeSlice(pkSigner)));
+
720 auto const sleAccount = view.read(keylet::account(idAccount));
+
721 if (!sleAccount)
+
722 return terNO_ACCOUNT;
+
723
+
724 return checkSingleSign(view, idSigner, idAccount, sleAccount, j);
+
725}
-
720
-
721NotTEC
-
- -
723{
-
724 auto const idAccount = ctx.tx.isFieldPresent(sfDelegate)
-
725 ? ctx.tx.getAccountID(sfDelegate)
-
726 : ctx.tx.getAccountID(sfAccount);
-
727 return checkSign(
-
728 ctx.view, ctx.flags, ctx.parentBatchId, idAccount, ctx.tx, ctx.j);
-
729}
+
726
+
727NotTEC
+
+ +
729{
+
730 auto const idAccount = ctx.tx.isFieldPresent(sfDelegate)
+
731 ? ctx.tx.getAccountID(sfDelegate)
+
732 : ctx.tx.getAccountID(sfAccount);
+
733 return checkSign(
+
734 ctx.view, ctx.flags, ctx.parentBatchId, idAccount, ctx.tx, ctx.j);
+
735}
-
730
-
731NotTEC
-
- -
733{
-
734 NotTEC ret = tesSUCCESS;
-
735 STArray const& signers{ctx.tx.getFieldArray(sfBatchSigners)};
-
736 for (auto const& signer : signers)
-
737 {
-
738 auto const idAccount = signer.getAccountID(sfAccount);
-
739
-
740 Blob const& pkSigner = signer.getFieldVL(sfSigningPubKey);
-
741 if (pkSigner.empty())
-
742 {
-
743 if (ret = checkMultiSign(
-
744 ctx.view, ctx.flags, idAccount, signer, ctx.j);
-
745 !isTesSuccess(ret))
-
746 return ret;
-
747 }
-
748 else
-
749 {
-
750 // LCOV_EXCL_START
-
751 if (!publicKeyType(makeSlice(pkSigner)))
-
752 return tefBAD_AUTH;
-
753 // LCOV_EXCL_STOP
-
754
-
755 auto const idSigner = calcAccountID(PublicKey(makeSlice(pkSigner)));
-
756 auto const sleAccount = ctx.view.read(keylet::account(idAccount));
-
757
-
758 // A batch can include transactions from an un-created account ONLY
-
759 // when the account master key is the signer
-
760 if (!sleAccount)
-
761 {
-
762 if (idAccount != idSigner)
-
763 return tefBAD_AUTH;
-
764
-
765 return tesSUCCESS;
-
766 }
-
767
-
768 if (ret = checkSingleSign(
-
769 ctx.view, idSigner, idAccount, sleAccount, ctx.j);
-
770 !isTesSuccess(ret))
-
771 return ret;
-
772 }
-
773 }
-
774 return ret;
-
775}
+
736
+
737NotTEC
+
+ +
739{
+
740 NotTEC ret = tesSUCCESS;
+
741 STArray const& signers{ctx.tx.getFieldArray(sfBatchSigners)};
+
742 for (auto const& signer : signers)
+
743 {
+
744 auto const idAccount = signer.getAccountID(sfAccount);
+
745
+
746 Blob const& pkSigner = signer.getFieldVL(sfSigningPubKey);
+
747 if (pkSigner.empty())
+
748 {
+
749 if (ret = checkMultiSign(
+
750 ctx.view, ctx.flags, idAccount, signer, ctx.j);
+
751 !isTesSuccess(ret))
+
752 return ret;
+
753 }
+
754 else
+
755 {
+
756 // LCOV_EXCL_START
+
757 if (!publicKeyType(makeSlice(pkSigner)))
+
758 return tefBAD_AUTH;
+
759 // LCOV_EXCL_STOP
+
760
+
761 auto const idSigner = calcAccountID(PublicKey(makeSlice(pkSigner)));
+
762 auto const sleAccount = ctx.view.read(keylet::account(idAccount));
+
763
+
764 // A batch can include transactions from an un-created account ONLY
+
765 // when the account master key is the signer
+
766 if (!sleAccount)
+
767 {
+
768 if (idAccount != idSigner)
+
769 return tefBAD_AUTH;
+
770
+
771 return tesSUCCESS;
+
772 }
+
773
+
774 if (ret = checkSingleSign(
+
775 ctx.view, idSigner, idAccount, sleAccount, ctx.j);
+
776 !isTesSuccess(ret))
+
777 return ret;
+
778 }
+
779 }
+
780 return ret;
+
781}
-
776
-
777NotTEC
-
- -
779 ReadView const& view,
-
780 AccountID const& idSigner,
-
781 AccountID const& idAccount,
- -
783 beast::Journal const j)
-
784{
-
785 bool const isMasterDisabled = sleAccount->isFlag(lsfDisableMaster);
-
786
-
787 // Signed with regular key.
-
788 if ((*sleAccount)[~sfRegularKey] == idSigner)
-
789 {
-
790 return tesSUCCESS;
-
791 }
+
782
+
783NotTEC
+
+ +
785 ReadView const& view,
+
786 AccountID const& idSigner,
+
787 AccountID const& idAccount,
+ +
789 beast::Journal const j)
+
790{
+
791 bool const isMasterDisabled = sleAccount->isFlag(lsfDisableMaster);
792
-
793 // Signed with enabled master key.
-
794 if (!isMasterDisabled && idAccount == idSigner)
+
793 // Signed with regular key.
+
794 if ((*sleAccount)[~sfRegularKey] == idSigner)
795 {
796 return tesSUCCESS;
797 }
798
-
799 // Signed with disabled master key.
-
800 if (isMasterDisabled && idAccount == idSigner)
+
799 // Signed with enabled master key.
+
800 if (!isMasterDisabled && idAccount == idSigner)
801 {
-
802 return tefMASTER_DISABLED;
+
802 return tesSUCCESS;
803 }
804
-
805 // Signed with any other key.
-
806 return tefBAD_AUTH;
-
807}
+
805 // Signed with disabled master key.
+
806 if (isMasterDisabled && idAccount == idSigner)
+
807 {
+
808 return tefMASTER_DISABLED;
+
809 }
+
810
+
811 // Signed with any other key.
+
812 return tefBAD_AUTH;
+
813}
-
808
-
809NotTEC
-
- -
811 ReadView const& view,
-
812 ApplyFlags flags,
-
813 AccountID const& id,
-
814 STObject const& sigObject,
-
815 beast::Journal const j)
-
816{
-
817 // Get id's SignerList and Quorum.
-
818 std::shared_ptr<STLedgerEntry const> sleAccountSigners =
- -
820 // If the signer list doesn't exist the account is not multi-signing.
-
821 if (!sleAccountSigners)
-
822 {
-
823 JLOG(j.trace())
-
824 << "applyTransaction: Invalid: Not a multi-signing account.";
- -
826 }
-
827
-
828 // We have plans to support multiple SignerLists in the future. The
-
829 // presence and defaulted value of the SignerListID field will enable that.
-
830 XRPL_ASSERT(
-
831 sleAccountSigners->isFieldPresent(sfSignerListID),
-
832 "xrpl::Transactor::checkMultiSign : has signer list ID");
-
833 XRPL_ASSERT(
-
834 sleAccountSigners->getFieldU32(sfSignerListID) == 0,
-
835 "xrpl::Transactor::checkMultiSign : signer list ID is 0");
-
836
-
837 auto accountSigners =
-
838 SignerEntries::deserialize(*sleAccountSigners, j, "ledger");
-
839 if (!accountSigners)
-
840 return accountSigners.error();
-
841
-
842 // Get the array of transaction signers.
-
843 STArray const& txSigners(sigObject.getFieldArray(sfSigners));
-
844
-
845 // Walk the accountSigners performing a variety of checks and see if
-
846 // the quorum is met.
+
814
+
815NotTEC
+
+ +
817 ReadView const& view,
+
818 ApplyFlags flags,
+
819 AccountID const& id,
+
820 STObject const& sigObject,
+
821 beast::Journal const j)
+
822{
+
823 // Get id's SignerList and Quorum.
+
824 std::shared_ptr<STLedgerEntry const> sleAccountSigners =
+ +
826 // If the signer list doesn't exist the account is not multi-signing.
+
827 if (!sleAccountSigners)
+
828 {
+
829 JLOG(j.trace())
+
830 << "applyTransaction: Invalid: Not a multi-signing account.";
+ +
832 }
+
833
+
834 // We have plans to support multiple SignerLists in the future. The
+
835 // presence and defaulted value of the SignerListID field will enable that.
+
836 XRPL_ASSERT(
+
837 sleAccountSigners->isFieldPresent(sfSignerListID),
+
838 "xrpl::Transactor::checkMultiSign : has signer list ID");
+
839 XRPL_ASSERT(
+
840 sleAccountSigners->getFieldU32(sfSignerListID) == 0,
+
841 "xrpl::Transactor::checkMultiSign : signer list ID is 0");
+
842
+
843 auto accountSigners =
+
844 SignerEntries::deserialize(*sleAccountSigners, j, "ledger");
+
845 if (!accountSigners)
+
846 return accountSigners.error();
847
-
848 // Both the multiSigners and accountSigners are sorted by account. So
-
849 // matching multi-signers to account signers should be a simple
-
850 // linear walk. *All* signers must be valid or the transaction fails.
-
851 std::uint32_t weightSum = 0;
-
852 auto iter = accountSigners->begin();
-
853 for (auto const& txSigner : txSigners)
-
854 {
-
855 AccountID const txSignerAcctID = txSigner.getAccountID(sfAccount);
-
856
-
857 // Attempt to match the SignerEntry with a Signer;
-
858 while (iter->account < txSignerAcctID)
-
859 {
-
860 if (++iter == accountSigners->end())
-
861 {
-
862 JLOG(j.trace())
-
863 << "applyTransaction: Invalid SigningAccount.Account.";
-
864 return tefBAD_SIGNATURE;
-
865 }
-
866 }
-
867 if (iter->account != txSignerAcctID)
-
868 {
-
869 // The SigningAccount is not in the SignerEntries.
-
870 JLOG(j.trace())
-
871 << "applyTransaction: Invalid SigningAccount.Account.";
-
872 return tefBAD_SIGNATURE;
-
873 }
-
874
-
875 // We found the SigningAccount in the list of valid signers. Now we
-
876 // need to compute the accountID that is associated with the signer's
-
877 // public key.
-
878 auto const spk = txSigner.getFieldVL(sfSigningPubKey);
-
879
-
880 // spk being non-empty in non-simulate is checked in
-
881 // STTx::checkMultiSign
-
882 if (!spk.empty() && !publicKeyType(makeSlice(spk)))
-
883 {
-
884 JLOG(j.trace())
-
885 << "checkMultiSign: signing public key type is unknown";
-
886 return tefBAD_SIGNATURE;
-
887 }
-
888
-
889 XRPL_ASSERT(
-
890 (flags & tapDRY_RUN) || !spk.empty(),
-
891 "xrpl::Transactor::checkMultiSign : non-empty signer or "
-
892 "simulation");
-
893 AccountID const signingAcctIDFromPubKey = spk.empty()
-
894 ? txSignerAcctID
- -
896
-
897 // Verify that the signingAcctID and the signingAcctIDFromPubKey
-
898 // belong together. Here are the rules:
-
899 //
-
900 // 1. "Phantom account": an account that is not in the ledger
-
901 // A. If signingAcctID == signingAcctIDFromPubKey and the
-
902 // signingAcctID is not in the ledger then we have a phantom
-
903 // account.
-
904 // B. Phantom accounts are always allowed as multi-signers.
+
848 // Get the array of transaction signers.
+
849 STArray const& txSigners(sigObject.getFieldArray(sfSigners));
+
850
+
851 // Walk the accountSigners performing a variety of checks and see if
+
852 // the quorum is met.
+
853
+
854 // Both the multiSigners and accountSigners are sorted by account. So
+
855 // matching multi-signers to account signers should be a simple
+
856 // linear walk. *All* signers must be valid or the transaction fails.
+
857 std::uint32_t weightSum = 0;
+
858 auto iter = accountSigners->begin();
+
859 for (auto const& txSigner : txSigners)
+
860 {
+
861 AccountID const txSignerAcctID = txSigner.getAccountID(sfAccount);
+
862
+
863 // Attempt to match the SignerEntry with a Signer;
+
864 while (iter->account < txSignerAcctID)
+
865 {
+
866 if (++iter == accountSigners->end())
+
867 {
+
868 JLOG(j.trace())
+
869 << "applyTransaction: Invalid SigningAccount.Account.";
+
870 return tefBAD_SIGNATURE;
+
871 }
+
872 }
+
873 if (iter->account != txSignerAcctID)
+
874 {
+
875 // The SigningAccount is not in the SignerEntries.
+
876 JLOG(j.trace())
+
877 << "applyTransaction: Invalid SigningAccount.Account.";
+
878 return tefBAD_SIGNATURE;
+
879 }
+
880
+
881 // We found the SigningAccount in the list of valid signers. Now we
+
882 // need to compute the accountID that is associated with the signer's
+
883 // public key.
+
884 auto const spk = txSigner.getFieldVL(sfSigningPubKey);
+
885
+
886 // spk being non-empty in non-simulate is checked in
+
887 // STTx::checkMultiSign
+
888 if (!spk.empty() && !publicKeyType(makeSlice(spk)))
+
889 {
+
890 JLOG(j.trace())
+
891 << "checkMultiSign: signing public key type is unknown";
+
892 return tefBAD_SIGNATURE;
+
893 }
+
894
+
895 XRPL_ASSERT(
+
896 (flags & tapDRY_RUN) || !spk.empty(),
+
897 "xrpl::Transactor::checkMultiSign : non-empty signer or "
+
898 "simulation");
+
899 AccountID const signingAcctIDFromPubKey = spk.empty()
+
900 ? txSignerAcctID
+ +
902
+
903 // Verify that the signingAcctID and the signingAcctIDFromPubKey
+
904 // belong together. Here are the rules:
905 //
-
906 // 2. "Master Key"
-
907 // A. signingAcctID == signingAcctIDFromPubKey, and signingAcctID
-
908 // is in the ledger.
-
909 // B. If the signingAcctID in the ledger does not have the
-
910 // asfDisableMaster flag set, then the signature is allowed.
+
906 // 1. "Phantom account": an account that is not in the ledger
+
907 // A. If signingAcctID == signingAcctIDFromPubKey and the
+
908 // signingAcctID is not in the ledger then we have a phantom
+
909 // account.
+
910 // B. Phantom accounts are always allowed as multi-signers.
911 //
-
912 // 3. "Regular Key"
-
913 // A. signingAcctID != signingAcctIDFromPubKey, and signingAcctID
+
912 // 2. "Master Key"
+
913 // A. signingAcctID == signingAcctIDFromPubKey, and signingAcctID
914 // is in the ledger.
-
915 // B. If signingAcctIDFromPubKey == signingAcctID.RegularKey (from
-
916 // ledger) then the signature is allowed.
+
915 // B. If the signingAcctID in the ledger does not have the
+
916 // asfDisableMaster flag set, then the signature is allowed.
917 //
-
918 // No other signatures are allowed. (January 2015)
-
919
-
920 // In any of these cases we need to know whether the account is in
-
921 // the ledger. Determine that now.
-
922 auto const sleTxSignerRoot = view.read(keylet::account(txSignerAcctID));
-
923
-
924 if (signingAcctIDFromPubKey == txSignerAcctID)
-
925 {
-
926 // Either Phantom or Master. Phantoms automatically pass.
-
927 if (sleTxSignerRoot)
-
928 {
-
929 // Master Key. Account may not have asfDisableMaster set.
-
930 std::uint32_t const signerAccountFlags =
-
931 sleTxSignerRoot->getFieldU32(sfFlags);
-
932
-
933 if (signerAccountFlags & lsfDisableMaster)
-
934 {
-
935 JLOG(j.trace())
-
936 << "applyTransaction: Signer:Account lsfDisableMaster.";
-
937 return tefMASTER_DISABLED;
-
938 }
-
939 }
-
940 }
-
941 else
-
942 {
-
943 // May be a Regular Key. Let's find out.
-
944 // Public key must hash to the account's regular key.
-
945 if (!sleTxSignerRoot)
-
946 {
-
947 JLOG(j.trace()) << "applyTransaction: Non-phantom signer "
-
948 "lacks account root.";
-
949 return tefBAD_SIGNATURE;
-
950 }
-
951
-
952 if (!sleTxSignerRoot->isFieldPresent(sfRegularKey))
-
953 {
-
954 JLOG(j.trace())
-
955 << "applyTransaction: Account lacks RegularKey.";
-
956 return tefBAD_SIGNATURE;
-
957 }
-
958 if (signingAcctIDFromPubKey !=
-
959 sleTxSignerRoot->getAccountID(sfRegularKey))
-
960 {
-
961 JLOG(j.trace())
-
962 << "applyTransaction: Account doesn't match RegularKey.";
-
963 return tefBAD_SIGNATURE;
-
964 }
-
965 }
-
966 // The signer is legitimate. Add their weight toward the quorum.
-
967 weightSum += iter->weight;
-
968 }
-
969
-
970 // Cannot perform transaction if quorum is not met.
-
971 if (weightSum < sleAccountSigners->getFieldU32(sfSignerQuorum))
-
972 {
-
973 JLOG(j.trace()) << "applyTransaction: Signers failed to meet quorum.";
-
974 return tefBAD_QUORUM;
-
975 }
-
976
-
977 // Met the quorum. Continue.
-
978 return tesSUCCESS;
-
979}
-
-
980
-
981//------------------------------------------------------------------------------
+
918 // 3. "Regular Key"
+
919 // A. signingAcctID != signingAcctIDFromPubKey, and signingAcctID
+
920 // is in the ledger.
+
921 // B. If signingAcctIDFromPubKey == signingAcctID.RegularKey (from
+
922 // ledger) then the signature is allowed.
+
923 //
+
924 // No other signatures are allowed. (January 2015)
+
925
+
926 // In any of these cases we need to know whether the account is in
+
927 // the ledger. Determine that now.
+
928 auto const sleTxSignerRoot = view.read(keylet::account(txSignerAcctID));
+
929
+
930 if (signingAcctIDFromPubKey == txSignerAcctID)
+
931 {
+
932 // Either Phantom or Master. Phantoms automatically pass.
+
933 if (sleTxSignerRoot)
+
934 {
+
935 // Master Key. Account may not have asfDisableMaster set.
+
936 std::uint32_t const signerAccountFlags =
+
937 sleTxSignerRoot->getFieldU32(sfFlags);
+
938
+
939 if (signerAccountFlags & lsfDisableMaster)
+
940 {
+
941 JLOG(j.trace())
+
942 << "applyTransaction: Signer:Account lsfDisableMaster.";
+
943 return tefMASTER_DISABLED;
+
944 }
+
945 }
+
946 }
+
947 else
+
948 {
+
949 // May be a Regular Key. Let's find out.
+
950 // Public key must hash to the account's regular key.
+
951 if (!sleTxSignerRoot)
+
952 {
+
953 JLOG(j.trace()) << "applyTransaction: Non-phantom signer "
+
954 "lacks account root.";
+
955 return tefBAD_SIGNATURE;
+
956 }
+
957
+
958 if (!sleTxSignerRoot->isFieldPresent(sfRegularKey))
+
959 {
+
960 JLOG(j.trace())
+
961 << "applyTransaction: Account lacks RegularKey.";
+
962 return tefBAD_SIGNATURE;
+
963 }
+
964 if (signingAcctIDFromPubKey !=
+
965 sleTxSignerRoot->getAccountID(sfRegularKey))
+
966 {
+
967 JLOG(j.trace())
+
968 << "applyTransaction: Account doesn't match RegularKey.";
+
969 return tefBAD_SIGNATURE;
+
970 }
+
971 }
+
972 // The signer is legitimate. Add their weight toward the quorum.
+
973 weightSum += iter->weight;
+
974 }
+
975
+
976 // Cannot perform transaction if quorum is not met.
+
977 if (weightSum < sleAccountSigners->getFieldU32(sfSignerQuorum))
+
978 {
+
979 JLOG(j.trace()) << "applyTransaction: Signers failed to meet quorum.";
+
980 return tefBAD_QUORUM;
+
981 }
982
-
983static void
-
- -
985 ApplyView& view,
-
986 std::vector<uint256> const& offers,
-
987 beast::Journal viewJ)
-
988{
-
989 int removed = 0;
-
990
-
991 for (auto const& index : offers)
-
992 {
-
993 if (auto const sleOffer = view.peek(keylet::offer(index)))
-
994 {
-
995 // offer is unfunded
-
996 offerDelete(view, sleOffer, viewJ);
-
997 if (++removed == unfundedOfferRemoveLimit)
-
998 return;
-
999 }
-
1000 }
-
1001}
+
983 // Met the quorum. Continue.
+
984 return tesSUCCESS;
+
985}
-
1002
-
1003static void
-
- -
1005 ApplyView& view,
-
1006 std::vector<uint256> const& offers,
-
1007 beast::Journal viewJ)
-
1008{
-
1009 std::size_t removed = 0;
-
1010
-
1011 for (auto const& index : offers)
-
1012 {
-
1013 if (auto const offer = view.peek(keylet::nftoffer(index)))
-
1014 {
-
1015 nft::deleteTokenOffer(view, offer);
-
1016 if (++removed == expiredOfferRemoveLimit)
-
1017 return;
-
1018 }
-
1019 }
-
1020}
+
986
+
987//------------------------------------------------------------------------------
+
988
+
989static void
+
+ +
991 ApplyView& view,
+
992 std::vector<uint256> const& offers,
+
993 beast::Journal viewJ)
+
994{
+
995 int removed = 0;
+
996
+
997 for (auto const& index : offers)
+
998 {
+
999 if (auto const sleOffer = view.peek(keylet::offer(index)))
+
1000 {
+
1001 // offer is unfunded
+
1002 offerDelete(view, sleOffer, viewJ);
+
1003 if (++removed == unfundedOfferRemoveLimit)
+
1004 return;
+
1005 }
+
1006 }
+
1007}
-
1021
-
1022static void
-
- -
1024 ApplyView& view,
-
1025 std::vector<uint256> const& creds,
-
1026 beast::Journal viewJ)
-
1027{
-
1028 for (auto const& index : creds)
-
1029 {
-
1030 if (auto const sle = view.peek(keylet::credential(index)))
-
1031 credentials::deleteSLE(view, sle, viewJ);
-
1032 }
-
1033}
+
1008
+
1009static void
+
+ +
1011 ApplyView& view,
+
1012 std::vector<uint256> const& offers,
+
1013 beast::Journal viewJ)
+
1014{
+
1015 std::size_t removed = 0;
+
1016
+
1017 for (auto const& index : offers)
+
1018 {
+
1019 if (auto const offer = view.peek(keylet::nftoffer(index)))
+
1020 {
+
1021 nft::deleteTokenOffer(view, offer);
+
1022 if (++removed == expiredOfferRemoveLimit)
+
1023 return;
+
1024 }
+
1025 }
+
1026}
-
1034
-
1035static void
-
- -
1037 ApplyView& view,
-
1038 std::vector<uint256> const& trustLines,
-
1039 beast::Journal viewJ)
-
1040{
-
1041 if (trustLines.size() > maxDeletableAMMTrustLines)
-
1042 {
-
1043 JLOG(viewJ.error())
-
1044 << "removeDeletedTrustLines: deleted trustlines exceed max "
-
1045 << trustLines.size();
-
1046 return;
-
1047 }
-
1048
-
1049 for (auto const& index : trustLines)
-
1050 {
-
1051 if (auto const sleState = view.peek({ltRIPPLE_STATE, index});
-
1052 deleteAMMTrustLine(view, sleState, std::nullopt, viewJ) !=
-
1053 tesSUCCESS)
-
1054 {
-
1055 JLOG(viewJ.error())
-
1056 << "removeDeletedTrustLines: failed to delete AMM trustline";
-
1057 }
-
1058 }
-
1059}
+
1027
+
1028static void
+
+ +
1030 ApplyView& view,
+
1031 std::vector<uint256> const& creds,
+
1032 beast::Journal viewJ)
+
1033{
+
1034 for (auto const& index : creds)
+
1035 {
+
1036 if (auto const sle = view.peek(keylet::credential(index)))
+
1037 credentials::deleteSLE(view, sle, viewJ);
+
1038 }
+
1039}
-
1060
- -
- -
1068{
-
1069 ctx_.discard();
-
1070
-
1071 auto const txnAcct =
- -
1073
-
1074 // The account should never be missing from the ledger. But if it
-
1075 // is missing then we can't very well charge it a fee, can we?
-
1076 if (!txnAcct)
-
1077 return {tefINTERNAL, beast::zero};
-
1078
-
1079 auto const payerSle = ctx_.tx.isFieldPresent(sfDelegate)
-
1080 ? view().peek(keylet::account(ctx_.tx.getAccountID(sfDelegate)))
-
1081 : txnAcct;
-
1082 if (!payerSle)
-
1083 return {tefINTERNAL, beast::zero}; // LCOV_EXCL_LINE
+
1040
+
1041static void
+
+ +
1043 ApplyView& view,
+
1044 std::vector<uint256> const& trustLines,
+
1045 beast::Journal viewJ)
+
1046{
+
1047 if (trustLines.size() > maxDeletableAMMTrustLines)
+
1048 {
+
1049 JLOG(viewJ.error())
+
1050 << "removeDeletedTrustLines: deleted trustlines exceed max "
+
1051 << trustLines.size();
+
1052 return;
+
1053 }
+
1054
+
1055 for (auto const& index : trustLines)
+
1056 {
+
1057 if (auto const sleState = view.peek({ltRIPPLE_STATE, index});
+
1058 deleteAMMTrustLine(view, sleState, std::nullopt, viewJ) !=
+
1059 tesSUCCESS)
+
1060 {
+
1061 JLOG(viewJ.error())
+
1062 << "removeDeletedTrustLines: failed to delete AMM trustline";
+
1063 }
+
1064 }
+
1065}
+
+
1066
+ +
+ +
1074{
+
1075 ctx_.discard();
+
1076
+
1077 auto const txnAcct =
+ +
1079
+
1080 // The account should never be missing from the ledger. But if it
+
1081 // is missing then we can't very well charge it a fee, can we?
+
1082 if (!txnAcct)
+
1083 return {tefINTERNAL, beast::zero};
1084
-
1085 auto const balance = payerSle->getFieldAmount(sfBalance).xrp();
-
1086
-
1087 // balance should have already been checked in checkFee / preFlight.
-
1088 XRPL_ASSERT(
-
1089 balance != beast::zero && (!view().open() || balance >= fee),
-
1090 "xrpl::Transactor::reset : valid balance");
-
1091
-
1092 // We retry/reject the transaction if the account balance is zero or
-
1093 // we're applying against an open ledger and the balance is less than
-
1094 // the fee
-
1095 if (fee > balance)
-
1096 fee = balance;
+
1085 auto const payerSle = ctx_.tx.isFieldPresent(sfDelegate)
+
1086 ? view().peek(keylet::account(ctx_.tx.getAccountID(sfDelegate)))
+
1087 : txnAcct;
+
1088 if (!payerSle)
+
1089 return {tefINTERNAL, beast::zero}; // LCOV_EXCL_LINE
+
1090
+
1091 auto const balance = payerSle->getFieldAmount(sfBalance).xrp();
+
1092
+
1093 // balance should have already been checked in checkFee / preFlight.
+
1094 XRPL_ASSERT(
+
1095 balance != beast::zero && (!view().open() || balance >= fee),
+
1096 "xrpl::Transactor::reset : valid balance");
1097
-
1098 // Since we reset the context, we need to charge the fee and update
-
1099 // the account's sequence number (or consume the Ticket) again.
-
1100 //
-
1101 // If for some reason we are unable to consume the ticket or sequence
-
1102 // then the ledger is corrupted. Rather than make things worse we
-
1103 // reject the transaction.
-
1104 payerSle->setFieldAmount(sfBalance, balance - fee);
-
1105 TER const ter{consumeSeqProxy(txnAcct)};
-
1106 XRPL_ASSERT(
-
1107 isTesSuccess(ter), "xrpl::Transactor::reset : result is tesSUCCESS");
-
1108
-
1109 if (isTesSuccess(ter))
-
1110 {
-
1111 view().update(txnAcct);
-
1112 if (payerSle != txnAcct)
-
1113 view().update(payerSle);
-
1114 }
-
1115
-
1116 return {ter, fee};
-
1117}
+
1098 // We retry/reject the transaction if the account balance is zero or
+
1099 // we're applying against an open ledger and the balance is less than
+
1100 // the fee
+
1101 if (fee > balance)
+
1102 fee = balance;
+
1103
+
1104 // Since we reset the context, we need to charge the fee and update
+
1105 // the account's sequence number (or consume the Ticket) again.
+
1106 //
+
1107 // If for some reason we are unable to consume the ticket or sequence
+
1108 // then the ledger is corrupted. Rather than make things worse we
+
1109 // reject the transaction.
+
1110 payerSle->setFieldAmount(sfBalance, balance - fee);
+
1111 TER const ter{consumeSeqProxy(txnAcct)};
+
1112 XRPL_ASSERT(
+
1113 isTesSuccess(ter), "xrpl::Transactor::reset : result is tesSUCCESS");
+
1114
+
1115 if (isTesSuccess(ter))
+
1116 {
+
1117 view().update(txnAcct);
+
1118 if (payerSle != txnAcct)
+
1119 view().update(payerSle);
+
1120 }
+
1121
+
1122 return {ter, fee};
+
1123}
-
1118
-
1119// The sole purpose of this function is to provide a convenient, named
-
1120// location to set a breakpoint, to be used when replaying transactions.
-
1121void
-
- -
1123{
-
1124 JLOG(j_.debug()) << "Transaction trapped: " << txHash;
-
1125}
+
1124
+
1125// The sole purpose of this function is to provide a convenient, named
+
1126// location to set a breakpoint, to be used when replaying transactions.
+
1127void
+
+ +
1129{
+
1130 JLOG(j_.debug()) << "Transaction trapped: " << txHash;
+
1131}
-
1126
-
1127//------------------------------------------------------------------------------
- -
- -
1130{
-
1131 JLOG(j_.trace()) << "apply: " << ctx_.tx.getTransactionID();
1132
-
1133 // raii classes for the current ledger rules.
-
1134 // fixUniversalNumber predate the rulesGuard and should be replaced.
-
1135 NumberSO stNumberSO{view().rules().enabled(fixUniversalNumber)};
-
1136 CurrentTransactionRulesGuard currentTransactionRulesGuard(view().rules());
-
1137
-
1138#ifdef DEBUG
-
1139 {
-
1140 Serializer ser;
-
1141 ctx_.tx.add(ser);
-
1142 SerialIter sit(ser.slice());
-
1143 STTx s2(sit);
-
1144
-
1145 if (!s2.isEquivalent(ctx_.tx))
-
1146 {
-
1147 // LCOV_EXCL_START
-
1148 JLOG(j_.fatal()) << "Transaction serdes mismatch";
- -
1150 JLOG(j_.fatal()) << s2.getJson(JsonOptions::none);
-
1151 UNREACHABLE(
-
1152 "xrpl::Transactor::operator() : transaction serdes mismatch");
-
1153 // LCOV_EXCL_STOP
-
1154 }
-
1155 }
-
1156#endif
-
1157
-
1158 if (auto const& trap = ctx_.app.trapTxID();
-
1159 trap && *trap == ctx_.tx.getTransactionID())
-
1160 {
-
1161 trapTransaction(*trap);
-
1162 }
+
1133//------------------------------------------------------------------------------
+ +
+ +
1136{
+
1137 JLOG(j_.trace()) << "apply: " << ctx_.tx.getTransactionID();
+
1138
+
1139 // raii classes for the current ledger rules.
+
1140 // fixUniversalNumber predate the rulesGuard and should be replaced.
+
1141 NumberSO stNumberSO{view().rules().enabled(fixUniversalNumber)};
+
1142 CurrentTransactionRulesGuard currentTransactionRulesGuard(view().rules());
+
1143
+
1144#ifdef DEBUG
+
1145 {
+
1146 Serializer ser;
+
1147 ctx_.tx.add(ser);
+
1148 SerialIter sit(ser.slice());
+
1149 STTx s2(sit);
+
1150
+
1151 if (!s2.isEquivalent(ctx_.tx))
+
1152 {
+
1153 // LCOV_EXCL_START
+
1154 JLOG(j_.fatal()) << "Transaction serdes mismatch";
+ +
1156 JLOG(j_.fatal()) << s2.getJson(JsonOptions::none);
+
1157 UNREACHABLE(
+
1158 "xrpl::Transactor::operator() : transaction serdes mismatch");
+
1159 // LCOV_EXCL_STOP
+
1160 }
+
1161 }
+
1162#endif
1163
-
1164 auto result = ctx_.preclaimResult;
-
1165 if (result == tesSUCCESS)
-
1166 result = apply();
-
1167
-
1168 // No transaction can return temUNKNOWN from apply,
-
1169 // and it can't be passed in from a preclaim.
-
1170 XRPL_ASSERT(
-
1171 result != temUNKNOWN,
-
1172 "xrpl::Transactor::operator() : result is not temUNKNOWN");
+
1164 if (auto const& trap = ctx_.app.trapTxID();
+
1165 trap && *trap == ctx_.tx.getTransactionID())
+
1166 {
+
1167 trapTransaction(*trap);
+
1168 }
+
1169
+
1170 auto result = ctx_.preclaimResult;
+
1171 if (result == tesSUCCESS)
+
1172 result = apply();
1173
-
1174 if (auto stream = j_.trace())
-
1175 stream << "preclaim result: " << transToken(result);
-
1176
-
1177 bool applied = isTesSuccess(result);
-
1178 auto fee = ctx_.tx.getFieldAmount(sfFee).xrp();
+
1174 // No transaction can return temUNKNOWN from apply,
+
1175 // and it can't be passed in from a preclaim.
+
1176 XRPL_ASSERT(
+
1177 result != temUNKNOWN,
+
1178 "xrpl::Transactor::operator() : result is not temUNKNOWN");
1179
- -
1181 result = tecOVERSIZE;
+
1180 if (auto stream = j_.trace())
+
1181 stream << "preclaim result: " << transToken(result);
1182
-
1183 if (isTecClaim(result) && (view().flags() & tapFAIL_HARD))
-
1184 {
-
1185 // If the tapFAIL_HARD flag is set, a tec result
-
1186 // must not do anything
-
1187 ctx_.discard();
-
1188 applied = false;
-
1189 }
-
1190 else if (
-
1191 (result == tecOVERSIZE) || (result == tecKILLED) ||
-
1192 (result == tecINCOMPLETE) || (result == tecEXPIRED) ||
-
1193 (isTecClaimHardFail(result, view().flags())))
-
1194 {
-
1195 JLOG(j_.trace()) << "reapplying because of " << transToken(result);
-
1196
-
1197 // FIXME: This mechanism for doing work while returning a `tec` is
-
1198 // awkward and very limiting. A more general purpose approach
-
1199 // should be used, making it possible to do more useful work
-
1200 // when transactions fail with a `tec` code.
-
1201 std::vector<uint256> removedOffers;
-
1202 std::vector<uint256> removedTrustLines;
-
1203 std::vector<uint256> expiredNFTokenOffers;
-
1204 std::vector<uint256> expiredCredentials;
-
1205
-
1206 bool const doOffers =
-
1207 ((result == tecOVERSIZE) || (result == tecKILLED));
-
1208 bool const doLines = (result == tecINCOMPLETE);
-
1209 bool const doNFTokenOffers = (result == tecEXPIRED);
-
1210 bool const doCredentials = (result == tecEXPIRED);
-
1211 if (doOffers || doLines || doNFTokenOffers || doCredentials)
-
1212 {
-
1213 ctx_.visit([doOffers,
-
1214 &removedOffers,
-
1215 doLines,
-
1216 &removedTrustLines,
-
1217 doNFTokenOffers,
-
1218 &expiredNFTokenOffers,
-
1219 doCredentials,
-
1220 &expiredCredentials](
-
1221 uint256 const& index,
-
1222 bool isDelete,
-
1223 std::shared_ptr<SLE const> const& before,
- -
1225 if (isDelete)
-
1226 {
-
1227 XRPL_ASSERT(
-
1228 before && after,
-
1229 "xrpl::Transactor::operator()::visit : non-null SLE "
-
1230 "inputs");
-
1231 if (doOffers && before && after &&
-
1232 (before->getType() == ltOFFER) &&
-
1233 (before->getFieldAmount(sfTakerPays) ==
-
1234 after->getFieldAmount(sfTakerPays)))
-
1235 {
-
1236 // Removal of offer found or made unfunded
-
1237 removedOffers.push_back(index);
-
1238 }
-
1239
-
1240 if (doLines && before && after &&
-
1241 (before->getType() == ltRIPPLE_STATE))
-
1242 {
-
1243 // Removal of obsolete AMM trust line
-
1244 removedTrustLines.push_back(index);
-
1245 }
-
1246
-
1247 if (doNFTokenOffers && before && after &&
-
1248 (before->getType() == ltNFTOKEN_OFFER))
-
1249 expiredNFTokenOffers.push_back(index);
-
1250
-
1251 if (doCredentials && before && after &&
-
1252 (before->getType() == ltCREDENTIAL))
-
1253 expiredCredentials.push_back(index);
-
1254 }
-
1255 });
-
1256 }
-
1257
-
1258 // Reset the context, potentially adjusting the fee.
-
1259 {
-
1260 auto const resetResult = reset(fee);
-
1261 if (!isTesSuccess(resetResult.first))
-
1262 result = resetResult.first;
+
1183 bool applied = isTesSuccess(result);
+
1184 auto fee = ctx_.tx.getFieldAmount(sfFee).xrp();
+
1185
+ +
1187 result = tecOVERSIZE;
+
1188
+
1189 if (isTecClaim(result) && (view().flags() & tapFAIL_HARD))
+
1190 {
+
1191 // If the tapFAIL_HARD flag is set, a tec result
+
1192 // must not do anything
+
1193 ctx_.discard();
+
1194 applied = false;
+
1195 }
+
1196 else if (
+
1197 (result == tecOVERSIZE) || (result == tecKILLED) ||
+
1198 (result == tecINCOMPLETE) || (result == tecEXPIRED) ||
+
1199 (isTecClaimHardFail(result, view().flags())))
+
1200 {
+
1201 JLOG(j_.trace()) << "reapplying because of " << transToken(result);
+
1202
+
1203 // FIXME: This mechanism for doing work while returning a `tec` is
+
1204 // awkward and very limiting. A more general purpose approach
+
1205 // should be used, making it possible to do more useful work
+
1206 // when transactions fail with a `tec` code.
+
1207 std::vector<uint256> removedOffers;
+
1208 std::vector<uint256> removedTrustLines;
+
1209 std::vector<uint256> expiredNFTokenOffers;
+
1210 std::vector<uint256> expiredCredentials;
+
1211
+
1212 bool const doOffers =
+
1213 ((result == tecOVERSIZE) || (result == tecKILLED));
+
1214 bool const doLines = (result == tecINCOMPLETE);
+
1215 bool const doNFTokenOffers = (result == tecEXPIRED);
+
1216 bool const doCredentials = (result == tecEXPIRED);
+
1217 if (doOffers || doLines || doNFTokenOffers || doCredentials)
+
1218 {
+
1219 ctx_.visit([doOffers,
+
1220 &removedOffers,
+
1221 doLines,
+
1222 &removedTrustLines,
+
1223 doNFTokenOffers,
+
1224 &expiredNFTokenOffers,
+
1225 doCredentials,
+
1226 &expiredCredentials](
+
1227 uint256 const& index,
+
1228 bool isDelete,
+
1229 std::shared_ptr<SLE const> const& before,
+ +
1231 if (isDelete)
+
1232 {
+
1233 XRPL_ASSERT(
+
1234 before && after,
+
1235 "xrpl::Transactor::operator()::visit : non-null SLE "
+
1236 "inputs");
+
1237 if (doOffers && before && after &&
+
1238 (before->getType() == ltOFFER) &&
+
1239 (before->getFieldAmount(sfTakerPays) ==
+
1240 after->getFieldAmount(sfTakerPays)))
+
1241 {
+
1242 // Removal of offer found or made unfunded
+
1243 removedOffers.push_back(index);
+
1244 }
+
1245
+
1246 if (doLines && before && after &&
+
1247 (before->getType() == ltRIPPLE_STATE))
+
1248 {
+
1249 // Removal of obsolete AMM trust line
+
1250 removedTrustLines.push_back(index);
+
1251 }
+
1252
+
1253 if (doNFTokenOffers && before && after &&
+
1254 (before->getType() == ltNFTOKEN_OFFER))
+
1255 expiredNFTokenOffers.push_back(index);
+
1256
+
1257 if (doCredentials && before && after &&
+
1258 (before->getType() == ltCREDENTIAL))
+
1259 expiredCredentials.push_back(index);
+
1260 }
+
1261 });
+
1262 }
1263
-
1264 fee = resetResult.second;
-
1265 }
-
1266
-
1267 // If necessary, remove any offers found unfunded during processing
-
1268 if ((result == tecOVERSIZE) || (result == tecKILLED))
- -
1270 view(), removedOffers, ctx_.app.journal("View"));
-
1271
-
1272 if (result == tecEXPIRED)
- -
1274 view(), expiredNFTokenOffers, ctx_.app.journal("View"));
-
1275
-
1276 if (result == tecINCOMPLETE)
- -
1278 view(), removedTrustLines, ctx_.app.journal("View"));
-
1279
-
1280 if (result == tecEXPIRED)
- -
1282 view(), expiredCredentials, ctx_.app.journal("View"));
-
1283
-
1284 applied = isTecClaim(result);
-
1285 }
-
1286
-
1287 if (applied)
-
1288 {
-
1289 // Check invariants: if `tecINVARIANT_FAILED` is not returned, we can
-
1290 // proceed to apply the tx
-
1291 result = ctx_.checkInvariants(result, fee);
+
1264 // Reset the context, potentially adjusting the fee.
+
1265 {
+
1266 auto const resetResult = reset(fee);
+
1267 if (!isTesSuccess(resetResult.first))
+
1268 result = resetResult.first;
+
1269
+
1270 fee = resetResult.second;
+
1271 }
+
1272
+
1273 // If necessary, remove any offers found unfunded during processing
+
1274 if ((result == tecOVERSIZE) || (result == tecKILLED))
+ +
1276 view(), removedOffers, ctx_.app.journal("View"));
+
1277
+
1278 if (result == tecEXPIRED)
+ +
1280 view(), expiredNFTokenOffers, ctx_.app.journal("View"));
+
1281
+
1282 if (result == tecINCOMPLETE)
+ +
1284 view(), removedTrustLines, ctx_.app.journal("View"));
+
1285
+
1286 if (result == tecEXPIRED)
+ +
1288 view(), expiredCredentials, ctx_.app.journal("View"));
+
1289
+
1290 applied = isTecClaim(result);
+
1291 }
1292
-
1293 if (result == tecINVARIANT_FAILED)
-
1294 {
-
1295 // if invariants checking failed again, reset the context and
-
1296 // attempt to only claim a fee.
-
1297 auto const resetResult = reset(fee);
-
1298 if (!isTesSuccess(resetResult.first))
-
1299 result = resetResult.first;
-
1300
-
1301 fee = resetResult.second;
-
1302
-
1303 // Check invariants again to ensure the fee claiming doesn't
-
1304 // violate invariants.
-
1305 if (isTesSuccess(result) || isTecClaim(result))
-
1306 result = ctx_.checkInvariants(result, fee);
-
1307 }
+
1293 if (applied)
+
1294 {
+
1295 // Check invariants: if `tecINVARIANT_FAILED` is not returned, we can
+
1296 // proceed to apply the tx
+
1297 result = ctx_.checkInvariants(result, fee);
+
1298
+
1299 if (result == tecINVARIANT_FAILED)
+
1300 {
+
1301 // if invariants checking failed again, reset the context and
+
1302 // attempt to only claim a fee.
+
1303 auto const resetResult = reset(fee);
+
1304 if (!isTesSuccess(resetResult.first))
+
1305 result = resetResult.first;
+
1306
+
1307 fee = resetResult.second;
1308
-
1309 // We ran through the invariant checker, which can, in some cases,
-
1310 // return a tef error code. Don't apply the transaction in that case.
-
1311 if (!isTecClaim(result) && !isTesSuccess(result))
-
1312 applied = false;
-
1313 }
+
1309 // Check invariants again to ensure the fee claiming doesn't
+
1310 // violate invariants.
+
1311 if (isTesSuccess(result) || isTecClaim(result))
+
1312 result = ctx_.checkInvariants(result, fee);
+
1313 }
1314
-
1315 std::optional<TxMeta> metadata;
-
1316 if (applied)
-
1317 {
-
1318 // Transaction succeeded fully or (retries are not allowed and the
-
1319 // transaction could claim a fee)
+
1315 // We ran through the invariant checker, which can, in some cases,
+
1316 // return a tef error code. Don't apply the transaction in that case.
+
1317 if (!isTecClaim(result) && !isTesSuccess(result))
+
1318 applied = false;
+
1319 }
1320
-
1321 // The transactor and invariant checkers guarantee that this will
-
1322 // *never* trigger but if it, somehow, happens, don't allow a tx
-
1323 // that charges a negative fee.
-
1324 if (fee < beast::zero)
-
1325 Throw<std::logic_error>("fee charged is negative!");
+
1321 std::optional<TxMeta> metadata;
+
1322 if (applied)
+
1323 {
+
1324 // Transaction succeeded fully or (retries are not allowed and the
+
1325 // transaction could claim a fee)
1326
-
1327 // Charge whatever fee they specified. The fee has already been
-
1328 // deducted from the balance of the account that issued the
-
1329 // transaction. We just need to account for it in the ledger
-
1330 // header.
-
1331 if (!view().open() && fee != beast::zero)
-
1332 ctx_.destroyXRP(fee);
-
1333
-
1334 // Once we call apply, we will no longer be able to look at view()
-
1335 metadata = ctx_.apply(result);
-
1336 }
-
1337
-
1338 if (ctx_.flags() & tapDRY_RUN)
-
1339 {
-
1340 applied = false;
-
1341 }
-
1342
-
1343 JLOG(j_.trace()) << (applied ? "applied " : "not applied ")
-
1344 << transToken(result);
-
1345
-
1346 return {result, applied, metadata};
-
1347}
-
+
1327 // The transactor and invariant checkers guarantee that this will
+
1328 // *never* trigger but if it, somehow, happens, don't allow a tx
+
1329 // that charges a negative fee.
+
1330 if (fee < beast::zero)
+
1331 Throw<std::logic_error>("fee charged is negative!");
+
1332
+
1333 // Charge whatever fee they specified. The fee has already been
+
1334 // deducted from the balance of the account that issued the
+
1335 // transaction. We just need to account for it in the ledger
+
1336 // header.
+
1337 if (!view().open() && fee != beast::zero)
+
1338 ctx_.destroyXRP(fee);
+
1339
+
1340 // Once we call apply, we will no longer be able to look at view()
+
1341 metadata = ctx_.apply(result);
+
1342 }
+
1343
+
1344 if (ctx_.flags() & tapDRY_RUN)
+
1345 {
+
1346 applied = false;
+
1347 }
1348
-
1349} // namespace xrpl
+
1349 JLOG(j_.trace()) << (applied ? "applied " : "not applied ")
+
1350 << transToken(result);
+
1351
+
1352 return {result, applied, metadata};
+
1353}
+
+
1354
+
1355} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:41
Stream fatal() const
Definition Journal.h:333
Stream error() const
Definition Journal.h:327
@@ -1561,37 +1567,37 @@ $(document).ready(function() { init_codefold(0); });
bool empty() const noexcept
Return true if the byte range is empty.
Definition Slice.h:51
static NotTEC preflight1(PreflightContext const &ctx, std::uint32_t flagMask)
Performs early sanity checks on the account and fee fields.
-
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
-
TER consumeSeqProxy(SLE::pointer const &sleAccount)
+
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
+
TER consumeSeqProxy(SLE::pointer const &sleAccount)
AccountID const account_
Definition Transactor.h:128
-
void trapTransaction(uint256) const
-
static TER checkFee(PreclaimContext const &ctx, XRPAmount baseFee)
- -
static NotTEC checkSign(PreclaimContext const &ctx)
-
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
-
ApplyResult operator()()
Process the transaction.
-
static NotTEC checkPermission(ReadView const &view, STTx const &tx)
-
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
-
static NotTEC preflightSigValidated(PreflightContext const &ctx)
-
static NotTEC checkBatchSign(PreclaimContext const &ctx)
-
static NotTEC checkSeqProxy(ReadView const &view, STTx const &tx, beast::Journal j)
+
void trapTransaction(uint256) const
+
static TER checkFee(PreclaimContext const &ctx, XRPAmount baseFee)
+ +
static NotTEC checkSign(PreclaimContext const &ctx)
+
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
+
ApplyResult operator()()
Process the transaction.
+
static NotTEC checkPermission(ReadView const &view, STTx const &tx)
+
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
+
static NotTEC preflightSigValidated(PreflightContext const &ctx)
+
static NotTEC checkBatchSign(PreclaimContext const &ctx)
+
static NotTEC checkSeqProxy(ReadView const &view, STTx const &tx, beast::Journal j)
beast::Journal const j_
Definition Transactor.h:126
virtual TER doApply()=0
static NotTEC preflight2(PreflightContext const &ctx)
Checks whether the signature appears valid.
ApplyView & view()
Definition Transactor.h:144
-
static NotTEC checkSingleSign(ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, beast::Journal const j)
+
static NotTEC checkSingleSign(ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, beast::Journal const j)
Transactor(Transactor const &)=delete
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
XRPAmount mSourceBalance
Definition Transactor.h:130
-
static NotTEC checkPriorTxAndLastLedger(PreclaimContext const &ctx)
+
static NotTEC checkPriorTxAndLastLedger(PreclaimContext const &ctx)
XRPAmount mPriorBalance
Definition Transactor.h:129
-
static NotTEC checkMultiSign(ReadView const &view, ApplyFlags flags, AccountID const &id, STObject const &sigObject, beast::Journal const j)
-
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
-
virtual void preCompute()
+
static NotTEC checkMultiSign(ReadView const &view, ApplyFlags flags, AccountID const &id, STObject const &sigObject, beast::Journal const j)
+
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
+
virtual void preCompute()
ApplyContext & ctx_
Definition Transactor.h:124
-
std::pair< TER, XRPAmount > reset(XRPAmount fee)
Reset the context, discarding any changes made and adjust the fee.
- -
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
+
std::pair< TER, XRPAmount > reset(XRPAmount fee)
Reset the context, discarding any changes made and adjust the fee.
+ +
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
T empty(T... args)
@@ -1619,13 +1625,13 @@ $(document).ready(function() { init_codefold(0); });
@ terNO_DELEGATE_PERMISSION
Definition TER.h:211
@ terNO_ACCOUNT
Definition TER.h:198
@ terPRE_TICKET
Definition TER.h:207
-
static void removeExpiredNFTokenOffers(ApplyView &view, std::vector< uint256 > const &offers, beast::Journal viewJ)
+
static void removeExpiredNFTokenOffers(ApplyView &view, std::vector< uint256 > const &offers, beast::Journal viewJ)
bool isLegalAmount(XRPAmount const &amount)
Returns true if the amount does not exceed the initial XRP in existence.
@ SigBad
Signature is bad. Didn't do local checks.
std::size_t constexpr expiredOfferRemoveLimit
The maximum number of expired offers to delete at once.
Definition Protocol.h:32
constexpr std::uint32_t tfInnerBatchTxn
Definition TxFlags.h:42
std::string to_string(base_uint< Bits, Tag > const &a)
Definition base_uint.h:611
-
static void removeExpiredCredentials(ApplyView &view, std::vector< uint256 > const &creds, beast::Journal viewJ)
+
static void removeExpiredCredentials(ApplyView &view, std::vector< uint256 > const &creds, beast::Journal viewJ)
bool isTecClaimHardFail(TER ter, ApplyFlags flags)
Return true if the transaction can claim a fee (tec), and the ApplyFlags do not allow soft failures.
Definition applySteps.h:29
uint256 getTicketIndex(AccountID const &account, std::uint32_t uSequence)
Definition Indexes.cpp:138
@ tefBAD_QUORUM
Definition TER.h:161
@@ -1642,7 +1648,7 @@ $(document).ready(function() { init_codefold(0); });
@ tefNOT_MULTI_SIGNING
Definition TER.h:162
std::uint16_t constexpr maxDeletableAMMTrustLines
The maximum number of trustlines to delete as part of AMM account deletion cleanup.
Definition Protocol.h:266
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:95
-
static void removeUnfundedOffers(ApplyView &view, std::vector< uint256 > const &offers, beast::Journal viewJ)
+
static void removeUnfundedOffers(ApplyView &view, std::vector< uint256 > const &offers, beast::Journal viewJ)
TER deleteAMMTrustLine(ApplyView &view, std::shared_ptr< SLE > sleState, std::optional< AccountID > const &ammAccountID, beast::Journal j)
Delete trustline to AMM.
Definition View.cpp:3463
std::string transToken(TER code)
Definition TER.cpp:245
std::optional< KeyType > publicKeyType(Slice const &slice)
Returns the type of public key.
@@ -1653,7 +1659,7 @@ $(document).ready(function() { init_codefold(0); });
bool after(NetClock::time_point now, std::uint32_t mark)
Has the specified time passed?
Definition View.cpp:3922
NotTEC checkTxPermission(std::shared_ptr< SLE const > const &delegate, STTx const &tx)
Check if the delegate account has permission to execute the transaction.
AccountID calcAccountID(PublicKey const &pk)
-
static void removeDeletedTrustLines(ApplyView &view, std::vector< uint256 > const &trustLines, beast::Journal viewJ)
+
static void removeDeletedTrustLines(ApplyView &view, std::vector< uint256 > const &trustLines, beast::Journal viewJ)
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &config)
Checks transaction signature and local checks.
Definition apply.cpp:25
TER offerDelete(ApplyView &view, std::shared_ptr< SLE > const &sle, beast::Journal j)
Delete an offer.
Definition View.cpp:1903
ApplyFlags
Definition ApplyView.h:11
diff --git a/Transactor_8h_source.html b/Transactor_8h_source.html index f83add882d..7b69ccaf47 100644 --- a/Transactor_8h_source.html +++ b/Transactor_8h_source.html @@ -553,24 +553,24 @@ $(document).ready(function() { init_codefold(0); });
static NotTEC preflight1(PreflightContext const &ctx, std::uint32_t flagMask)
Performs early sanity checks on the account and fee fields.
-
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
-
TER consumeSeqProxy(SLE::pointer const &sleAccount)
+
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
+
TER consumeSeqProxy(SLE::pointer const &sleAccount)
AccountID const account_
Definition Transactor.h:128
-
void trapTransaction(uint256) const
-
static TER checkFee(PreclaimContext const &ctx, XRPAmount baseFee)
+
void trapTransaction(uint256) const
+
static TER checkFee(PreclaimContext const &ctx, XRPAmount baseFee)
static NotTEC invokePreflight(PreflightContext const &ctx)
Definition Transactor.h:393
Transactor & operator=(Transactor const &)=delete
- +
beast::WrappedSink sink_
Definition Transactor.h:125
-
static NotTEC checkSign(PreclaimContext const &ctx)
-
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
-
ApplyResult operator()()
Process the transaction.
-
static NotTEC checkPermission(ReadView const &view, STTx const &tx)
-
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
+
static NotTEC checkSign(PreclaimContext const &ctx)
+
static XRPAmount calculateOwnerReserveFee(ReadView const &view, STTx const &tx)
+
ApplyResult operator()()
Process the transaction.
+
static NotTEC checkPermission(ReadView const &view, STTx const &tx)
+
static XRPAmount minimumFee(Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
Compute the minimum fee required to process a transaction with a given baseFee based on the current s...
static bool validNumericMinimum(std::optional< T > value, T min=T{})
Minimum will usually be zero.
Definition Transactor.h:439
-
static NotTEC preflightSigValidated(PreflightContext const &ctx)
-
static NotTEC checkBatchSign(PreclaimContext const &ctx)
-
static NotTEC checkSeqProxy(ReadView const &view, STTx const &tx, beast::Journal j)
+
static NotTEC preflightSigValidated(PreflightContext const &ctx)
+
static NotTEC checkBatchSign(PreclaimContext const &ctx)
+
static NotTEC checkSeqProxy(ReadView const &view, STTx const &tx, beast::Journal j)
beast::Journal const j_
Definition Transactor.h:126
static TER preclaim(PreclaimContext const &ctx)
Definition Transactor.h:214
virtual ~Transactor()=default
@@ -582,21 +582,21 @@ $(document).ready(function() { init_codefold(0); });
ApplyView & view()
Definition Transactor.h:144
-
static NotTEC checkSingleSign(ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, beast::Journal const j)
+
static NotTEC checkSingleSign(ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, beast::Journal const j)
Transactor(Transactor const &)=delete
-
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
XRPAmount mSourceBalance
Definition Transactor.h:130
-
static NotTEC checkPriorTxAndLastLedger(PreclaimContext const &ctx)
+
static NotTEC checkPriorTxAndLastLedger(PreclaimContext const &ctx)
XRPAmount mPriorBalance
Definition Transactor.h:129
-
static NotTEC checkMultiSign(ReadView const &view, ApplyFlags flags, AccountID const &id, STObject const &sigObject, beast::Journal const j)
-
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
-
virtual void preCompute()
+
static NotTEC checkMultiSign(ReadView const &view, ApplyFlags flags, AccountID const &id, STObject const &sigObject, beast::Journal const j)
+
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
+
virtual void preCompute()
ApplyContext & ctx_
Definition Transactor.h:124
ApplyView const & view() const
Definition Transactor.h:150
-
std::pair< TER, XRPAmount > reset(XRPAmount fee)
Reset the context, discarding any changes made and adjust the fee.
+
std::pair< TER, XRPAmount > reset(XRPAmount fee)
Reset the context, discarding any changes made and adjust the fee.
static bool validNumericRange(std::optional< T > value, T max, T min=T{})
Definition Transactor.h:420
- -
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
+ +
static TER ticketDelete(ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
Class describing the consequences to the account of applying a transaction if the transaction consume...
Definition applySteps.h:39
diff --git a/TxQ_8cpp_source.html b/TxQ_8cpp_source.html index d4f69b9fe1..e45479f870 100644 --- a/TxQ_8cpp_source.html +++ b/TxQ_8cpp_source.html @@ -2231,7 +2231,7 @@ $(document).ready(function() { init_codefold(0); });
static std::optional< LedgerIndex > getLastLedgerSequence(STTx const &tx)
Definition TxQ.cpp:48
constexpr struct xrpl::open_ledger_t open_ledger
std::optional< std::uint64_t > mulDiv(std::uint64_t value, std::uint64_t mul, std::uint64_t div)
Return value*mul/div accurately.
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
TxQ::Setup setup_TxQ(Config const &config)
Build a TxQ::Setup object from application configuration.
Definition TxQ.cpp:1893
@ tefNO_TICKET
Definition TER.h:166
@ tefINTERNAL
Definition TER.h:154
diff --git a/TxQ__test_8cpp_source.html b/TxQ__test_8cpp_source.html index f1e3a840c7..851e4d9560 100644 --- a/TxQ__test_8cpp_source.html +++ b/TxQ__test_8cpp_source.html @@ -5346,7 +5346,7 @@ $(document).ready(function() { init_codefold(0); });
@ terNO_ACCOUNT
Definition TER.h:198
@ terPRE_TICKET
Definition TER.h:207
@ terQUEUED
Definition TER.h:206
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
std::string to_string(base_uint< Bits, Tag > const &a)
Definition base_uint.h:611
@ tefWRONG_PRIOR
Definition TER.h:157
@ tefNO_TICKET
Definition TER.h:166
diff --git a/VaultCreate_8cpp_source.html b/VaultCreate_8cpp_source.html index 876cf59f39..dc468da976 100644 --- a/VaultCreate_8cpp_source.html +++ b/VaultCreate_8cpp_source.html @@ -347,7 +347,7 @@ $(document).ready(function() { init_codefold(0); });
beast::Journal const j_
Definition Transactor.h:126
ApplyView & view()
Definition Transactor.h:144
XRPAmount mPriorBalance
Definition Transactor.h:129
-
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
+
static bool validDataLength(std::optional< Slice > const &slice, std::size_t maxLength)
ApplyContext & ctx_
Definition Transactor.h:124
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
TER doApply() override
diff --git a/applySteps_8cpp_source.html b/applySteps_8cpp_source.html index 3c89a0eaca..82208360df 100644 --- a/applySteps_8cpp_source.html +++ b/applySteps_8cpp_source.html @@ -547,7 +547,7 @@ $(document).ready(function() { init_codefold(0); }); -
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
+
static XRPAmount calculateBaseFee(ReadView const &view, STTx const &tx)
Class describing the consequences to the account of applying a transaction if the transaction consume...
Definition applySteps.h:39
TxConsequences(NotTEC pfResult)
std::uint32_t sequencesConsumed_
Number of sequences consumed.
Definition applySteps.h:62
diff --git a/apply_8cpp_source.html b/apply_8cpp_source.html index 12b4935a0f..d2dade7b50 100644 --- a/apply_8cpp_source.html +++ b/apply_8cpp_source.html @@ -125,246 +125,253 @@ $(document).ready(function() { init_codefold(0); });
42 "Malformed: Invalid inner batch transaction."};
43
-
44 std::string reason;
-
45 if (!passesLocalChecks(tx, reason))
-
46 {
-
47 router.setFlags(id, SF_LOCALBAD);
-
48 return {Validity::SigGoodOnly, reason};
-
49 }
-
50
-
51 router.setFlags(id, SF_SIGGOOD);
-
52 return {Validity::Valid, ""};
-
53 }
-
54
-
55 if (any(flags & SF_SIGBAD))
-
56 // Signature is known bad
-
57 return {Validity::SigBad, "Transaction has bad signature."};
-
58
-
59 if (!any(flags & SF_SIGGOOD))
-
60 {
-
61 auto const sigVerify = tx.checkSign(rules);
-
62 if (!sigVerify)
-
63 {
-
64 router.setFlags(id, SF_SIGBAD);
-
65 return {Validity::SigBad, sigVerify.error()};
-
66 }
-
67 router.setFlags(id, SF_SIGGOOD);
-
68 }
-
69
-
70 // Signature is now known good
-
71 if (any(flags & SF_LOCALBAD))
-
72 // ...but the local checks
-
73 // are known bad.
-
74 return {Validity::SigGoodOnly, "Local checks failed."};
-
75
-
76 if (any(flags & SF_LOCALGOOD))
-
77 // ...and the local checks
-
78 // are known good.
-
79 return {Validity::Valid, ""};
-
80
-
81 // Do the local checks
-
82 std::string reason;
-
83 if (!passesLocalChecks(tx, reason))
-
84 {
-
85 router.setFlags(id, SF_LOCALBAD);
-
86 return {Validity::SigGoodOnly, reason};
-
87 }
-
88 router.setFlags(id, SF_LOCALGOOD);
-
89 return {Validity::Valid, ""};
-
90}
+
44 // This block should probably have never been included in the
+
45 // original `Batch` implementation. An inner transaction never
+
46 // has a valid signature.
+
47 bool const neverValid = rules.enabled(fixBatchInnerSigs);
+
48 if (!neverValid)
+
49 {
+
50 std::string reason;
+
51 if (!passesLocalChecks(tx, reason))
+
52 {
+
53 router.setFlags(id, SF_LOCALBAD);
+
54 return {Validity::SigGoodOnly, reason};
+
55 }
+
56
+
57 router.setFlags(id, SF_SIGGOOD);
+
58 return {Validity::Valid, ""};
+
59 }
+
60 }
+
61
+
62 if (any(flags & SF_SIGBAD))
+
63 // Signature is known bad
+
64 return {Validity::SigBad, "Transaction has bad signature."};
+
65
+
66 if (!any(flags & SF_SIGGOOD))
+
67 {
+
68 auto const sigVerify = tx.checkSign(rules);
+
69 if (!sigVerify)
+
70 {
+
71 router.setFlags(id, SF_SIGBAD);
+
72 return {Validity::SigBad, sigVerify.error()};
+
73 }
+
74 router.setFlags(id, SF_SIGGOOD);
+
75 }
+
76
+
77 // Signature is now known good
+
78 if (any(flags & SF_LOCALBAD))
+
79 // ...but the local checks
+
80 // are known bad.
+
81 return {Validity::SigGoodOnly, "Local checks failed."};
+
82
+
83 if (any(flags & SF_LOCALGOOD))
+
84 // ...and the local checks
+
85 // are known good.
+
86 return {Validity::Valid, ""};
+
87
+
88 // Do the local checks
+
89 std::string reason;
+
90 if (!passesLocalChecks(tx, reason))
+
91 {
+
92 router.setFlags(id, SF_LOCALBAD);
+
93 return {Validity::SigGoodOnly, reason};
+
94 }
+
95 router.setFlags(id, SF_LOCALGOOD);
+
96 return {Validity::Valid, ""};
+
97}
-
91
-
92void
-
-
93forceValidity(HashRouter& router, uint256 const& txid, Validity validity)
-
94{
- -
96 switch (validity)
-
97 {
-
98 case Validity::Valid:
-
99 flags |= SF_LOCALGOOD;
-
100 [[fallthrough]];
- -
102 flags |= SF_SIGGOOD;
-
103 [[fallthrough]];
-
104 case Validity::SigBad:
-
105 // would be silly to call directly
-
106 break;
-
107 }
-
108 if (any(flags))
-
109 router.setFlags(txid, flags);
-
110}
+
98
+
99void
+
+
100forceValidity(HashRouter& router, uint256 const& txid, Validity validity)
+
101{
+ +
103 switch (validity)
+
104 {
+
105 case Validity::Valid:
+
106 flags |= SF_LOCALGOOD;
+
107 [[fallthrough]];
+ +
109 flags |= SF_SIGGOOD;
+
110 [[fallthrough]];
+
111 case Validity::SigBad:
+
112 // would be silly to call directly
+
113 break;
+
114 }
+
115 if (any(flags))
+
116 router.setFlags(txid, flags);
+
117}
-
111
-
112template <typename PreflightChecks>
-
113ApplyResult
-
-
114apply(Application& app, OpenView& view, PreflightChecks&& preflightChecks)
-
115{
-
116 NumberSO stNumberSO{view.rules().enabled(fixUniversalNumber)};
-
117 return doApply(preclaim(preflightChecks(), app, view), app, view);
-
118}
-
-
119
+
118
+
119template <typename PreflightChecks>
120ApplyResult
- -
122 Application& app,
-
123 OpenView& view,
-
124 STTx const& tx,
-
125 ApplyFlags flags,
- -
127{
-
128 return apply(app, view, [&]() mutable {
-
129 return preflight(app, view.rules(), tx, flags, j);
-
130 });
-
131}
+
121apply(Application& app, OpenView& view, PreflightChecks&& preflightChecks)
+
122{
+
123 NumberSO stNumberSO{view.rules().enabled(fixUniversalNumber)};
+
124 return doApply(preclaim(preflightChecks(), app, view), app, view);
+
125}
-
132
-
133ApplyResult
-
- -
135 Application& app,
-
136 OpenView& view,
-
137 uint256 const& parentBatchId,
-
138 STTx const& tx,
-
139 ApplyFlags flags,
- -
141{
-
142 return apply(app, view, [&]() mutable {
-
143 return preflight(app, view.rules(), parentBatchId, tx, flags, j);
-
144 });
-
145}
+
126
+
127ApplyResult
+
+ +
129 Application& app,
+
130 OpenView& view,
+
131 STTx const& tx,
+
132 ApplyFlags flags,
+ +
134{
+
135 return apply(app, view, [&]() mutable {
+
136 return preflight(app, view.rules(), tx, flags, j);
+
137 });
+
138}
-
146
-
147static bool
-
- -
149 Application& app,
-
150 OpenView& batchView,
-
151 STTx const& batchTxn,
- -
153{
-
154 XRPL_ASSERT(
-
155 batchTxn.getTxnType() == ttBATCH &&
-
156 batchTxn.getFieldArray(sfRawTransactions).size() != 0,
-
157 "Batch transaction missing sfRawTransactions");
-
158
-
159 auto const parentBatchId = batchTxn.getTransactionID();
-
160 auto const mode = batchTxn.getFlags();
-
161
-
162 auto applyOneTransaction =
-
163 [&app, &j, &parentBatchId, &batchView](STTx&& tx) {
-
164 OpenView perTxBatchView(batch_view, batchView);
+
139
+
140ApplyResult
+
+ +
142 Application& app,
+
143 OpenView& view,
+
144 uint256 const& parentBatchId,
+
145 STTx const& tx,
+
146 ApplyFlags flags,
+ +
148{
+
149 return apply(app, view, [&]() mutable {
+
150 return preflight(app, view.rules(), parentBatchId, tx, flags, j);
+
151 });
+
152}
+
+
153
+
154static bool
+
+ +
156 Application& app,
+
157 OpenView& batchView,
+
158 STTx const& batchTxn,
+ +
160{
+
161 XRPL_ASSERT(
+
162 batchTxn.getTxnType() == ttBATCH &&
+
163 batchTxn.getFieldArray(sfRawTransactions).size() != 0,
+
164 "Batch transaction missing sfRawTransactions");
165
-
166 auto const ret =
-
167 apply(app, perTxBatchView, parentBatchId, tx, tapBATCH, j);
-
168 XRPL_ASSERT(
-
169 ret.applied == (isTesSuccess(ret.ter) || isTecClaim(ret.ter)),
-
170 "Inner transaction should not be applied");
-
171
-
172 JLOG(j.debug()) << "BatchTrace[" << parentBatchId
-
173 << "]: " << tx.getTransactionID() << " "
-
174 << (ret.applied ? "applied" : "failure") << ": "
-
175 << transToken(ret.ter);
-
176
-
177 // If the transaction should be applied push its changes to the
-
178 // whole-batch view.
-
179 if (ret.applied && (isTesSuccess(ret.ter) || isTecClaim(ret.ter)))
-
180 perTxBatchView.apply(batchView);
-
181
-
182 return ret;
-
183 };
-
184
-
185 int applied = 0;
-
186
-
187 for (STObject rb : batchTxn.getFieldArray(sfRawTransactions))
-
188 {
-
189 auto const result = applyOneTransaction(STTx{std::move(rb)});
-
190 XRPL_ASSERT(
-
191 result.applied ==
-
192 (isTesSuccess(result.ter) || isTecClaim(result.ter)),
-
193 "Outer Batch failure, inner transaction should not be applied");
-
194
-
195 if (result.applied)
-
196 ++applied;
-
197
-
198 if (!isTesSuccess(result.ter))
-
199 {
-
200 if (mode & tfAllOrNothing)
-
201 return false;
-
202
-
203 if (mode & tfUntilFailure)
-
204 break;
-
205 }
-
206 else if (mode & tfOnlyOne)
-
207 break;
-
208 }
+
166 auto const parentBatchId = batchTxn.getTransactionID();
+
167 auto const mode = batchTxn.getFlags();
+
168
+
169 auto applyOneTransaction =
+
170 [&app, &j, &parentBatchId, &batchView](STTx&& tx) {
+
171 OpenView perTxBatchView(batch_view, batchView);
+
172
+
173 auto const ret =
+
174 apply(app, perTxBatchView, parentBatchId, tx, tapBATCH, j);
+
175 XRPL_ASSERT(
+
176 ret.applied == (isTesSuccess(ret.ter) || isTecClaim(ret.ter)),
+
177 "Inner transaction should not be applied");
+
178
+
179 JLOG(j.debug()) << "BatchTrace[" << parentBatchId
+
180 << "]: " << tx.getTransactionID() << " "
+
181 << (ret.applied ? "applied" : "failure") << ": "
+
182 << transToken(ret.ter);
+
183
+
184 // If the transaction should be applied push its changes to the
+
185 // whole-batch view.
+
186 if (ret.applied && (isTesSuccess(ret.ter) || isTecClaim(ret.ter)))
+
187 perTxBatchView.apply(batchView);
+
188
+
189 return ret;
+
190 };
+
191
+
192 int applied = 0;
+
193
+
194 for (STObject rb : batchTxn.getFieldArray(sfRawTransactions))
+
195 {
+
196 auto const result = applyOneTransaction(STTx{std::move(rb)});
+
197 XRPL_ASSERT(
+
198 result.applied ==
+
199 (isTesSuccess(result.ter) || isTecClaim(result.ter)),
+
200 "Outer Batch failure, inner transaction should not be applied");
+
201
+
202 if (result.applied)
+
203 ++applied;
+
204
+
205 if (!isTesSuccess(result.ter))
+
206 {
+
207 if (mode & tfAllOrNothing)
+
208 return false;
209
-
210 return applied != 0;
-
211}
+
210 if (mode & tfUntilFailure)
+
211 break;
+
212 }
+
213 else if (mode & tfOnlyOne)
+
214 break;
+
215 }
+
216
+
217 return applied != 0;
+
218}
-
212
- -
- -
215 Application& app,
-
216 OpenView& view,
-
217 STTx const& txn,
-
218 bool retryAssured,
-
219 ApplyFlags flags,
- -
221{
-
222 // Returns false if the transaction has need not be retried.
-
223 if (retryAssured)
-
224 flags = flags | tapRETRY;
-
225
-
226 JLOG(j.debug()) << "TXN " << txn.getTransactionID()
-
227 << (retryAssured ? "/retry" : "/final");
-
228
-
229 try
-
230 {
-
231 auto const result = apply(app, view, txn, flags, j);
+
219
+ +
+ +
222 Application& app,
+
223 OpenView& view,
+
224 STTx const& txn,
+
225 bool retryAssured,
+
226 ApplyFlags flags,
+ +
228{
+
229 // Returns false if the transaction has need not be retried.
+
230 if (retryAssured)
+
231 flags = flags | tapRETRY;
232
-
233 if (result.applied)
-
234 {
-
235 JLOG(j.debug())
-
236 << "Transaction applied: " << transToken(result.ter);
-
237
-
238 // The batch transaction was just applied; now we need to apply
-
239 // its inner transactions as necessary.
-
240 if (isTesSuccess(result.ter) && txn.getTxnType() == ttBATCH)
-
241 {
-
242 OpenView wholeBatchView(batch_view, view);
-
243
-
244 if (applyBatchTransactions(app, wholeBatchView, txn, j))
-
245 wholeBatchView.apply(view);
-
246 }
-
247
- -
249 }
+
233 JLOG(j.debug()) << "TXN " << txn.getTransactionID()
+
234 << (retryAssured ? "/retry" : "/final");
+
235
+
236 try
+
237 {
+
238 auto const result = apply(app, view, txn, flags, j);
+
239
+
240 if (result.applied)
+
241 {
+
242 JLOG(j.debug())
+
243 << "Transaction applied: " << transToken(result.ter);
+
244
+
245 // The batch transaction was just applied; now we need to apply
+
246 // its inner transactions as necessary.
+
247 if (isTesSuccess(result.ter) && txn.getTxnType() == ttBATCH)
+
248 {
+
249 OpenView wholeBatchView(batch_view, view);
250
-
251 if (isTefFailure(result.ter) || isTemMalformed(result.ter) ||
-
252 isTelLocal(result.ter))
-
253 {
-
254 // failure
-
255 JLOG(j.debug())
-
256 << "Transaction failure: " << transHuman(result.ter);
- -
258 }
-
259
-
260 JLOG(j.debug()) << "Transaction retry: " << transHuman(result.ter);
- -
262 }
-
263 catch (std::exception const& ex)
-
264 {
-
265 JLOG(j.warn()) << "Throws: " << ex.what();
- -
267 }
-
268}
+
251 if (applyBatchTransactions(app, wholeBatchView, txn, j))
+
252 wholeBatchView.apply(view);
+
253 }
+
254
+ +
256 }
+
257
+
258 if (isTefFailure(result.ter) || isTemMalformed(result.ter) ||
+
259 isTelLocal(result.ter))
+
260 {
+
261 // failure
+
262 JLOG(j.debug())
+
263 << "Transaction failure: " << transHuman(result.ter);
+ +
265 }
+
266
+
267 JLOG(j.debug()) << "Transaction retry: " << transHuman(result.ter);
+ +
269 }
+
270 catch (std::exception const& ex)
+
271 {
+
272 JLOG(j.warn()) << "Throws: " << ex.what();
+ +
274 }
+
275}
-
269
-
270} // namespace xrpl
+
276
+
277} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:41
Stream debug() const
Definition Journal.h:309
@@ -396,14 +403,14 @@ $(document).ready(function() { init_codefold(0); });
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
constexpr struct xrpl::batch_view_t batch_view
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
Validity
Describes the pre-processing validity of a transaction.
Definition apply.h:22
@ SigBad
Signature is bad. Didn't do local checks.
@ Valid
Signature and local checks are good / passed.
@ SigGoodOnly
Signature is good, but local checks fail.
constexpr std::uint32_t tfInnerBatchTxn
Definition TxFlags.h:42
constexpr HashRouterFlags SF_LOCALBAD
Definition apply.cpp:17
-
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:214
+
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:221
PreflightResult preflight(Application &app, Rules const &rules, STTx const &tx, ApplyFlags flags, beast::Journal j)
Gate a transaction based on static information.
ApplyTransactionResult
Enum class for return value from applyTransaction
Definition apply.h:116
@ Success
Applied to this ledger.
@@ -430,12 +437,12 @@ $(document).ready(function() { init_codefold(0); });
@ tapRETRY
Definition ApplyView.h:20
@ tapBATCH
Definition ApplyView.h:26
bool isTelLocal(TER x) noexcept
Definition TER.h:635
-
static bool applyBatchTransactions(Application &app, OpenView &batchView, STTx const &batchTxn, beast::Journal j)
Definition apply.cpp:148
+
static bool applyBatchTransactions(Application &app, OpenView &batchView, STTx const &batchTxn, beast::Journal j)
Definition apply.cpp:155
bool isTesSuccess(TER x) noexcept
Definition TER.h:659
PreclaimResult preclaim(PreflightResult const &preflightResult, Application &app, OpenView const &view)
Gate a transaction based on static ledger information.
constexpr std::uint32_t tfUntilFailure
Definition TxFlags.h:259
bool isTecClaim(TER x) noexcept
Definition TER.h:666
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
bool isTemMalformed(TER x) noexcept
Definition TER.h:641
T what(T... args)
diff --git a/apply_8h_source.html b/apply_8h_source.html index 00b07b1d5b..2eba43e662 100644 --- a/apply_8h_source.html +++ b/apply_8h_source.html @@ -146,12 +146,12 @@ $(document).ready(function() { init_codefold(0); });
143#endif
A generic endpoint for log messages.
Definition Journal.h:41
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
-
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:121
+
ApplyResult apply(Application &app, OpenView &view, STTx const &tx, ApplyFlags flags, beast::Journal journal)
Apply a transaction to an OpenView.
Definition apply.cpp:128
Validity
Describes the pre-processing validity of a transaction.
Definition apply.h:22
@ SigBad
Signature is bad. Didn't do local checks.
@ Valid
Signature and local checks are good / passed.
@ SigGoodOnly
Signature is good, but local checks fail.
-
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:214
+
ApplyTransactionResult applyTransaction(Application &app, OpenView &view, STTx const &tx, bool retryAssured, ApplyFlags flags, beast::Journal journal)
Transaction application helper.
Definition apply.cpp:221
ApplyTransactionResult
Enum class for return value from applyTransaction
Definition apply.h:116
@ Success
Applied to this ledger.
@ Retry
Should be retried in this ledger.
@@ -159,7 +159,7 @@ $(document).ready(function() { init_codefold(0); });
base_uint< 256 > uint256
Definition base_uint.h:539
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &config)
Checks transaction signature and local checks.
Definition apply.cpp:25
ApplyFlags
Definition ApplyView.h:11
-
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:93
+
void forceValidity(HashRouter &router, uint256 const &txid, Validity validity)
Sets the validity of a given transaction in the cache.
Definition apply.cpp:100
diff --git a/classxrpl_1_1AMMBid.html b/classxrpl_1_1AMMBid.html index fafc8c2769..6e2e5f0d5d 100644 --- a/classxrpl_1_1AMMBid.html +++ b/classxrpl_1_1AMMBid.html @@ -574,7 +574,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -672,7 +672,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -738,7 +738,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -766,7 +766,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -828,7 +828,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -894,7 +894,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1020,7 +1020,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1070,7 +1070,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1097,7 +1097,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1126,7 +1126,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1231,7 +1231,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1259,7 +1259,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1287,7 +1287,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1325,7 +1325,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1538,7 +1538,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1566,7 +1566,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1593,7 +1593,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1649,7 +1649,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1705,7 +1705,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1733,7 +1733,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMClawback.html b/classxrpl_1_1AMMClawback.html index 45de528d27..5c7bf75956 100644 --- a/classxrpl_1_1AMMClawback.html +++ b/classxrpl_1_1AMMClawback.html @@ -691,7 +691,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -789,7 +789,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -817,7 +817,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -855,7 +855,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -883,7 +883,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -945,7 +945,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -973,7 +973,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1011,7 +1011,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1137,7 +1137,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1187,7 +1187,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1214,7 +1214,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1243,7 +1243,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1310,7 +1310,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1348,7 +1348,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1404,7 +1404,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1442,7 +1442,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1655,7 +1655,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1683,7 +1683,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1710,7 +1710,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1766,7 +1766,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1822,7 +1822,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1850,7 +1850,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMCreate.html b/classxrpl_1_1AMMCreate.html index e22d7f1d92..11d109bbd5 100644 --- a/classxrpl_1_1AMMCreate.html +++ b/classxrpl_1_1AMMCreate.html @@ -610,7 +610,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -708,7 +708,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -736,7 +736,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -774,7 +774,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -802,7 +802,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -864,7 +864,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -892,7 +892,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1018,7 +1018,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1068,7 +1068,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1095,7 +1095,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1124,7 +1124,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1191,7 +1191,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1229,7 +1229,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1257,7 +1257,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1285,7 +1285,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1323,7 +1323,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1536,7 +1536,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1564,7 +1564,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1591,7 +1591,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1647,7 +1647,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1703,7 +1703,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1731,7 +1731,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMDelete.html b/classxrpl_1_1AMMDelete.html index 655213b9ca..48b2b483f0 100644 --- a/classxrpl_1_1AMMDelete.html +++ b/classxrpl_1_1AMMDelete.html @@ -569,7 +569,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -667,7 +667,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -695,7 +695,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -733,7 +733,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -761,7 +761,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -823,7 +823,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -851,7 +851,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -889,7 +889,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1015,7 +1015,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1065,7 +1065,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1092,7 +1092,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1121,7 +1121,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1188,7 +1188,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1226,7 +1226,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1254,7 +1254,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1282,7 +1282,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1320,7 +1320,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1533,7 +1533,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1561,7 +1561,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1588,7 +1588,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1644,7 +1644,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1700,7 +1700,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1728,7 +1728,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMDeposit.html b/classxrpl_1_1AMMDeposit.html index a3a6b8b874..1c5555e87d 100644 --- a/classxrpl_1_1AMMDeposit.html +++ b/classxrpl_1_1AMMDeposit.html @@ -1288,7 +1288,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -1386,7 +1386,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -1414,7 +1414,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -1452,7 +1452,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -1480,7 +1480,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -1542,7 +1542,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1570,7 +1570,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1608,7 +1608,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1734,7 +1734,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1784,7 +1784,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1811,7 +1811,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1840,7 +1840,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1907,7 +1907,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1945,7 +1945,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1973,7 +1973,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -2011,7 +2011,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -2224,7 +2224,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -2252,7 +2252,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -2279,7 +2279,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -2335,7 +2335,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -2391,7 +2391,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -2419,7 +2419,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMVote.html b/classxrpl_1_1AMMVote.html index b3bdfe5dce..33d6fdd93a 100644 --- a/classxrpl_1_1AMMVote.html +++ b/classxrpl_1_1AMMVote.html @@ -577,7 +577,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -675,7 +675,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -703,7 +703,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -741,7 +741,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -769,7 +769,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -831,7 +831,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -859,7 +859,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -897,7 +897,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1023,7 +1023,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1073,7 +1073,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1100,7 +1100,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1129,7 +1129,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1196,7 +1196,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1234,7 +1234,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1262,7 +1262,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1290,7 +1290,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1328,7 +1328,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1541,7 +1541,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1569,7 +1569,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1596,7 +1596,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1652,7 +1652,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1708,7 +1708,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1736,7 +1736,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1AMMWithdraw.html b/classxrpl_1_1AMMWithdraw.html index 6f954b5629..ded1bafb1d 100644 --- a/classxrpl_1_1AMMWithdraw.html +++ b/classxrpl_1_1AMMWithdraw.html @@ -1558,7 +1558,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -1656,7 +1656,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -1684,7 +1684,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -1722,7 +1722,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -1750,7 +1750,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -1812,7 +1812,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1840,7 +1840,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1878,7 +1878,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -2004,7 +2004,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -2054,7 +2054,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -2081,7 +2081,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -2110,7 +2110,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -2177,7 +2177,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -2215,7 +2215,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -2243,7 +2243,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -2281,7 +2281,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -2494,7 +2494,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -2522,7 +2522,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -2549,7 +2549,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -2605,7 +2605,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -2661,7 +2661,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -2689,7 +2689,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1Batch.html b/classxrpl_1_1Batch.html index 8ea7dba4fc..a77529d917 100644 --- a/classxrpl_1_1Batch.html +++ b/classxrpl_1_1Batch.html @@ -700,7 +700,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -798,7 +798,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -826,7 +826,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -864,7 +864,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -926,7 +926,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -954,7 +954,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1108,7 +1108,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1158,7 +1158,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1185,7 +1185,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1214,7 +1214,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1281,7 +1281,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1319,7 +1319,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1385,7 +1385,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1598,7 +1598,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1626,7 +1626,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1653,7 +1653,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1709,7 +1709,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1765,7 +1765,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1793,7 +1793,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1BridgeModify.html b/classxrpl_1_1BridgeModify.html index 0dc039ee32..ea56bc3310 100644 --- a/classxrpl_1_1BridgeModify.html +++ b/classxrpl_1_1BridgeModify.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CancelCheck.html b/classxrpl_1_1CancelCheck.html index ff0fc0cfe4..84d0fcc7f1 100644 --- a/classxrpl_1_1CancelCheck.html +++ b/classxrpl_1_1CancelCheck.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CancelOffer.html b/classxrpl_1_1CancelOffer.html index b5e7779950..3d3dfc368c 100644 --- a/classxrpl_1_1CancelOffer.html +++ b/classxrpl_1_1CancelOffer.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CashCheck.html b/classxrpl_1_1CashCheck.html index 7dbf05275b..bf20b3e9b7 100644 --- a/classxrpl_1_1CashCheck.html +++ b/classxrpl_1_1CashCheck.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1Change.html b/classxrpl_1_1Change.html index a537259925..ce3cb6d5c7 100644 --- a/classxrpl_1_1Change.html +++ b/classxrpl_1_1Change.html @@ -660,7 +660,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -786,7 +786,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -824,7 +824,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -852,7 +852,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -914,7 +914,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -942,7 +942,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1068,7 +1068,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1118,7 +1118,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1145,7 +1145,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1212,7 +1212,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1250,7 +1250,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1306,7 +1306,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1334,7 +1334,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1372,7 +1372,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1585,7 +1585,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1640,7 +1640,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1696,7 +1696,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1752,7 +1752,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1780,7 +1780,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1Clawback.html b/classxrpl_1_1Clawback.html index a78629aaa1..833d106f6c 100644 --- a/classxrpl_1_1Clawback.html +++ b/classxrpl_1_1Clawback.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CreateCheck.html b/classxrpl_1_1CreateCheck.html index 5b7aae8071..ef0ea53720 100644 --- a/classxrpl_1_1CreateCheck.html +++ b/classxrpl_1_1CreateCheck.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CreateOffer.html b/classxrpl_1_1CreateOffer.html index 4c821bc13b..d2fe3fe605 100644 --- a/classxrpl_1_1CreateOffer.html +++ b/classxrpl_1_1CreateOffer.html @@ -883,7 +883,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -981,7 +981,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -1009,7 +1009,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -1047,7 +1047,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -1075,7 +1075,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -1137,7 +1137,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1165,7 +1165,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1203,7 +1203,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1329,7 +1329,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1379,7 +1379,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1406,7 +1406,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1435,7 +1435,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1502,7 +1502,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1540,7 +1540,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1568,7 +1568,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1606,7 +1606,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1819,7 +1819,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1847,7 +1847,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1874,7 +1874,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1930,7 +1930,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1986,7 +1986,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -2014,7 +2014,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CreateTicket.html b/classxrpl_1_1CreateTicket.html index d65712b83f..ae60b32cef 100644 --- a/classxrpl_1_1CreateTicket.html +++ b/classxrpl_1_1CreateTicket.html @@ -583,7 +583,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -681,7 +681,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -709,7 +709,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -747,7 +747,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -775,7 +775,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -837,7 +837,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -865,7 +865,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -903,7 +903,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1029,7 +1029,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1079,7 +1079,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1106,7 +1106,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1135,7 +1135,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1202,7 +1202,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1240,7 +1240,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1296,7 +1296,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1324,7 +1324,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1362,7 +1362,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1575,7 +1575,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1603,7 +1603,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1630,7 +1630,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1686,7 +1686,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1742,7 +1742,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1770,7 +1770,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CredentialAccept.html b/classxrpl_1_1CredentialAccept.html index 78e1d3a13f..97fb80a100 100644 --- a/classxrpl_1_1CredentialAccept.html +++ b/classxrpl_1_1CredentialAccept.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CredentialCreate.html b/classxrpl_1_1CredentialCreate.html index 673c41e942..5676dfe0b6 100644 --- a/classxrpl_1_1CredentialCreate.html +++ b/classxrpl_1_1CredentialCreate.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1CredentialDelete.html b/classxrpl_1_1CredentialDelete.html index f1679e47e2..ea8f201706 100644 --- a/classxrpl_1_1CredentialDelete.html +++ b/classxrpl_1_1CredentialDelete.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DIDDelete.html b/classxrpl_1_1DIDDelete.html index 9c27a10b11..e3e0b669b9 100644 --- a/classxrpl_1_1DIDDelete.html +++ b/classxrpl_1_1DIDDelete.html @@ -606,7 +606,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -704,7 +704,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -732,7 +732,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -770,7 +770,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -798,7 +798,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -860,7 +860,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -888,7 +888,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -926,7 +926,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1080,7 +1080,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1130,7 +1130,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1157,7 +1157,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1186,7 +1186,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1253,7 +1253,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1291,7 +1291,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1347,7 +1347,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1375,7 +1375,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1413,7 +1413,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1626,7 +1626,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1654,7 +1654,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1681,7 +1681,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1737,7 +1737,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1793,7 +1793,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1821,7 +1821,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DIDSet.html b/classxrpl_1_1DIDSet.html index 0b8be9e14b..630cae5af0 100644 --- a/classxrpl_1_1DIDSet.html +++ b/classxrpl_1_1DIDSet.html @@ -508,7 +508,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -606,7 +606,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -672,7 +672,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -762,7 +762,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -828,7 +828,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DelegateSet.html b/classxrpl_1_1DelegateSet.html index f3488d92b7..58cdc807df 100644 --- a/classxrpl_1_1DelegateSet.html +++ b/classxrpl_1_1DelegateSet.html @@ -588,7 +588,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -686,7 +686,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -714,7 +714,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -752,7 +752,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -780,7 +780,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -842,7 +842,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -870,7 +870,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -908,7 +908,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1034,7 +1034,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1084,7 +1084,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1111,7 +1111,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1140,7 +1140,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1207,7 +1207,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1245,7 +1245,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1301,7 +1301,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1329,7 +1329,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1367,7 +1367,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1580,7 +1580,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1608,7 +1608,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1635,7 +1635,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1691,7 +1691,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1747,7 +1747,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1775,7 +1775,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DeleteAccount.html b/classxrpl_1_1DeleteAccount.html index 08278f1abe..ab6585cab7 100644 --- a/classxrpl_1_1DeleteAccount.html +++ b/classxrpl_1_1DeleteAccount.html @@ -602,7 +602,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -766,7 +766,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -794,7 +794,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DeleteOracle.html b/classxrpl_1_1DeleteOracle.html index e9418b876d..866079f548 100644 --- a/classxrpl_1_1DeleteOracle.html +++ b/classxrpl_1_1DeleteOracle.html @@ -594,7 +594,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -692,7 +692,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -720,7 +720,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -786,7 +786,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -848,7 +848,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -876,7 +876,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -914,7 +914,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1040,7 +1040,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1090,7 +1090,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1117,7 +1117,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1146,7 +1146,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1213,7 +1213,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1251,7 +1251,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1335,7 +1335,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1373,7 +1373,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1614,7 +1614,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1641,7 +1641,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1697,7 +1697,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1781,7 +1781,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1DepositPreauth.html b/classxrpl_1_1DepositPreauth.html index 45ba125fce..bc8a90e04a 100644 --- a/classxrpl_1_1DepositPreauth.html +++ b/classxrpl_1_1DepositPreauth.html @@ -610,7 +610,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -708,7 +708,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -736,7 +736,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -774,7 +774,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -802,7 +802,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -864,7 +864,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -892,7 +892,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -930,7 +930,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1056,7 +1056,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1106,7 +1106,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1133,7 +1133,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1162,7 +1162,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1229,7 +1229,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1267,7 +1267,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1295,7 +1295,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1323,7 +1323,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1361,7 +1361,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1574,7 +1574,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1602,7 +1602,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1629,7 +1629,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1685,7 +1685,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1741,7 +1741,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1769,7 +1769,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1EscrowCancel.html b/classxrpl_1_1EscrowCancel.html index d84bc79169..54c337764e 100644 --- a/classxrpl_1_1EscrowCancel.html +++ b/classxrpl_1_1EscrowCancel.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1EscrowCreate.html b/classxrpl_1_1EscrowCreate.html index adf0ad0372..45c105ba53 100644 --- a/classxrpl_1_1EscrowCreate.html +++ b/classxrpl_1_1EscrowCreate.html @@ -566,7 +566,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -664,7 +664,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -692,7 +692,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -730,7 +730,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -820,7 +820,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -848,7 +848,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -886,7 +886,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1012,7 +1012,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1089,7 +1089,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1118,7 +1118,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1185,7 +1185,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1223,7 +1223,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1279,7 +1279,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1345,7 +1345,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1558,7 +1558,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1669,7 +1669,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1725,7 +1725,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1EscrowFinish.html b/classxrpl_1_1EscrowFinish.html index f9f7374358..e0f7b787c6 100644 --- a/classxrpl_1_1EscrowFinish.html +++ b/classxrpl_1_1EscrowFinish.html @@ -630,7 +630,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -794,7 +794,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -822,7 +822,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -912,7 +912,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1115,7 +1115,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1144,7 +1144,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1211,7 +1211,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LedgerStateFix.html b/classxrpl_1_1LedgerStateFix.html index 89fde725c3..08176f731b 100644 --- a/classxrpl_1_1LedgerStateFix.html +++ b/classxrpl_1_1LedgerStateFix.html @@ -596,7 +596,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -694,7 +694,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -722,7 +722,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -760,7 +760,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -788,7 +788,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -850,7 +850,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -878,7 +878,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1004,7 +1004,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1054,7 +1054,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1081,7 +1081,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1110,7 +1110,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1177,7 +1177,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1215,7 +1215,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1271,7 +1271,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1299,7 +1299,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1337,7 +1337,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1550,7 +1550,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1578,7 +1578,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1605,7 +1605,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1661,7 +1661,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1717,7 +1717,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1745,7 +1745,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanBrokerCoverClawback.html b/classxrpl_1_1LoanBrokerCoverClawback.html index 34bc48d2e5..3d2a4469de 100644 --- a/classxrpl_1_1LoanBrokerCoverClawback.html +++ b/classxrpl_1_1LoanBrokerCoverClawback.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanBrokerCoverDeposit.html b/classxrpl_1_1LoanBrokerCoverDeposit.html index 38a4ef9801..e3554f7f33 100644 --- a/classxrpl_1_1LoanBrokerCoverDeposit.html +++ b/classxrpl_1_1LoanBrokerCoverDeposit.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanBrokerCoverWithdraw.html b/classxrpl_1_1LoanBrokerCoverWithdraw.html index 2a33518532..792ffc2311 100644 --- a/classxrpl_1_1LoanBrokerCoverWithdraw.html +++ b/classxrpl_1_1LoanBrokerCoverWithdraw.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanBrokerDelete.html b/classxrpl_1_1LoanBrokerDelete.html index 0b06a8feb8..9a583cc840 100644 --- a/classxrpl_1_1LoanBrokerDelete.html +++ b/classxrpl_1_1LoanBrokerDelete.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanBrokerSet.html b/classxrpl_1_1LoanBrokerSet.html index b5933bb7b6..3e41463ee3 100644 --- a/classxrpl_1_1LoanBrokerSet.html +++ b/classxrpl_1_1LoanBrokerSet.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanDelete.html b/classxrpl_1_1LoanDelete.html index 3163a1e533..15edfd8d70 100644 --- a/classxrpl_1_1LoanDelete.html +++ b/classxrpl_1_1LoanDelete.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanManage.html b/classxrpl_1_1LoanManage.html index 1712c7f4f8..c448c082ae 100644 --- a/classxrpl_1_1LoanManage.html +++ b/classxrpl_1_1LoanManage.html @@ -769,7 +769,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -867,7 +867,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -895,7 +895,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -933,7 +933,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -961,7 +961,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -1023,7 +1023,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1051,7 +1051,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1089,7 +1089,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1215,7 +1215,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1265,7 +1265,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1292,7 +1292,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1321,7 +1321,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1388,7 +1388,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1426,7 +1426,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1454,7 +1454,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1492,7 +1492,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1705,7 +1705,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1733,7 +1733,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1760,7 +1760,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1816,7 +1816,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1872,7 +1872,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1900,7 +1900,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanPay.html b/classxrpl_1_1LoanPay.html index 11928bbef6..9614afe587 100644 --- a/classxrpl_1_1LoanPay.html +++ b/classxrpl_1_1LoanPay.html @@ -630,7 +630,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -794,7 +794,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -822,7 +822,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -912,7 +912,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1115,7 +1115,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1144,7 +1144,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1211,7 +1211,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1LoanSet.html b/classxrpl_1_1LoanSet.html index b61237f540..eda5f83de1 100644 --- a/classxrpl_1_1LoanSet.html +++ b/classxrpl_1_1LoanSet.html @@ -698,7 +698,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -796,7 +796,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -824,7 +824,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -862,7 +862,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -924,7 +924,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -952,7 +952,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1078,7 +1078,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1128,7 +1128,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1184,7 +1184,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1251,7 +1251,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1289,7 +1289,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1317,7 +1317,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1355,7 +1355,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1568,7 +1568,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1596,7 +1596,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1623,7 +1623,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1679,7 +1679,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1735,7 +1735,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1763,7 +1763,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1MPTokenAuthorize.html b/classxrpl_1_1MPTokenAuthorize.html index f202e9cdb9..ca1a5dc115 100644 --- a/classxrpl_1_1MPTokenAuthorize.html +++ b/classxrpl_1_1MPTokenAuthorize.html @@ -616,7 +616,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -714,7 +714,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -742,7 +742,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -780,7 +780,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -808,7 +808,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -870,7 +870,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -898,7 +898,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -936,7 +936,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1112,7 +1112,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1139,7 +1139,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1168,7 +1168,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1235,7 +1235,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1273,7 +1273,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1329,7 +1329,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1367,7 +1367,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1580,7 +1580,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1608,7 +1608,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1635,7 +1635,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1691,7 +1691,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1747,7 +1747,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1775,7 +1775,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1MPTokenIssuanceCreate.html b/classxrpl_1_1MPTokenIssuanceCreate.html index 33e7ad1db6..0d106cbe31 100644 --- a/classxrpl_1_1MPTokenIssuanceCreate.html +++ b/classxrpl_1_1MPTokenIssuanceCreate.html @@ -610,7 +610,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -708,7 +708,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -736,7 +736,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -774,7 +774,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -802,7 +802,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -864,7 +864,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -892,7 +892,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -930,7 +930,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1084,7 +1084,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1134,7 +1134,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1161,7 +1161,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1190,7 +1190,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1257,7 +1257,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1295,7 +1295,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1323,7 +1323,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1361,7 +1361,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1574,7 +1574,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1602,7 +1602,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1629,7 +1629,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1685,7 +1685,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1741,7 +1741,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1769,7 +1769,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1MPTokenIssuanceDestroy.html b/classxrpl_1_1MPTokenIssuanceDestroy.html index 80178897f9..48995acb03 100644 --- a/classxrpl_1_1MPTokenIssuanceDestroy.html +++ b/classxrpl_1_1MPTokenIssuanceDestroy.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1MPTokenIssuanceSet.html b/classxrpl_1_1MPTokenIssuanceSet.html index 0936adb86a..0fa4caa239 100644 --- a/classxrpl_1_1MPTokenIssuanceSet.html +++ b/classxrpl_1_1MPTokenIssuanceSet.html @@ -630,7 +630,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -794,7 +794,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -822,7 +822,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -912,7 +912,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -950,7 +950,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1115,7 +1115,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1144,7 +1144,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1211,7 +1211,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenAcceptOffer.html b/classxrpl_1_1NFTokenAcceptOffer.html index 292134741f..b2da4e99b6 100644 --- a/classxrpl_1_1NFTokenAcceptOffer.html +++ b/classxrpl_1_1NFTokenAcceptOffer.html @@ -724,7 +724,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -822,7 +822,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -850,7 +850,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -888,7 +888,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -916,7 +916,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -978,7 +978,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1006,7 +1006,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1044,7 +1044,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1170,7 +1170,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1220,7 +1220,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1247,7 +1247,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1276,7 +1276,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1343,7 +1343,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1381,7 +1381,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1437,7 +1437,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1475,7 +1475,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1688,7 +1688,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1716,7 +1716,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1743,7 +1743,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1799,7 +1799,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1855,7 +1855,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1883,7 +1883,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenBurn.html b/classxrpl_1_1NFTokenBurn.html index b5c8adcba7..1cf6e0812d 100644 --- a/classxrpl_1_1NFTokenBurn.html +++ b/classxrpl_1_1NFTokenBurn.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenCancelOffer.html b/classxrpl_1_1NFTokenCancelOffer.html index 87b05f5d38..1707ffaf45 100644 --- a/classxrpl_1_1NFTokenCancelOffer.html +++ b/classxrpl_1_1NFTokenCancelOffer.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenCreateOffer.html b/classxrpl_1_1NFTokenCreateOffer.html index 96ce439fba..4012c6c310 100644 --- a/classxrpl_1_1NFTokenCreateOffer.html +++ b/classxrpl_1_1NFTokenCreateOffer.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenMint.html b/classxrpl_1_1NFTokenMint.html index fc38faea92..f4372c7cbc 100644 --- a/classxrpl_1_1NFTokenMint.html +++ b/classxrpl_1_1NFTokenMint.html @@ -650,7 +650,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -748,7 +748,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -776,7 +776,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -814,7 +814,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -842,7 +842,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -904,7 +904,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -932,7 +932,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -970,7 +970,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1096,7 +1096,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1146,7 +1146,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1173,7 +1173,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1202,7 +1202,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1269,7 +1269,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1335,7 +1335,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1373,7 +1373,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1614,7 +1614,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1641,7 +1641,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1697,7 +1697,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1781,7 +1781,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1NFTokenModify.html b/classxrpl_1_1NFTokenModify.html index 82c8258529..a2f212e878 100644 --- a/classxrpl_1_1NFTokenModify.html +++ b/classxrpl_1_1NFTokenModify.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1PayChanClaim.html b/classxrpl_1_1PayChanClaim.html index 4a014e4987..c95c9e70d0 100644 --- a/classxrpl_1_1PayChanClaim.html +++ b/classxrpl_1_1PayChanClaim.html @@ -592,7 +592,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -718,7 +718,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -784,7 +784,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -874,7 +874,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -912,7 +912,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1115,7 +1115,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1144,7 +1144,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1211,7 +1211,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1PayChanCreate.html b/classxrpl_1_1PayChanCreate.html index cc89bc09ec..19f3dac3ae 100644 --- a/classxrpl_1_1PayChanCreate.html +++ b/classxrpl_1_1PayChanCreate.html @@ -566,7 +566,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -664,7 +664,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -692,7 +692,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -730,7 +730,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -820,7 +820,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -848,7 +848,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -886,7 +886,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1012,7 +1012,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1089,7 +1089,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1118,7 +1118,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1185,7 +1185,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1223,7 +1223,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1279,7 +1279,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1345,7 +1345,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1558,7 +1558,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1669,7 +1669,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1725,7 +1725,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1PayChanFund.html b/classxrpl_1_1PayChanFund.html index d68b6c9365..4ce68fbf76 100644 --- a/classxrpl_1_1PayChanFund.html +++ b/classxrpl_1_1PayChanFund.html @@ -538,7 +538,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -636,7 +636,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -664,7 +664,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -702,7 +702,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -730,7 +730,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -792,7 +792,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -820,7 +820,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -858,7 +858,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1012,7 +1012,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1089,7 +1089,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1118,7 +1118,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1185,7 +1185,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1223,7 +1223,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1279,7 +1279,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1345,7 +1345,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1558,7 +1558,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1669,7 +1669,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1725,7 +1725,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1Payment.html b/classxrpl_1_1Payment.html index 165b025738..e2eea8a3e6 100644 --- a/classxrpl_1_1Payment.html +++ b/classxrpl_1_1Payment.html @@ -669,7 +669,7 @@ Static Private Attributes

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -767,7 +767,7 @@ Static Private Attributes
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -795,7 +795,7 @@ Static Private Attributes
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -833,7 +833,7 @@ Static Private Attributes
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -861,7 +861,7 @@ Static Private Attributes
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -923,7 +923,7 @@ Static Private Attributes
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -951,7 +951,7 @@ Static Private Attributes
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -989,7 +989,7 @@ Static Private Attributes
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1127,7 +1127,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1154,7 +1154,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1250,7 +1250,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1288,7 +1288,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1316,7 +1316,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1354,7 +1354,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1567,7 +1567,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1595,7 +1595,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1622,7 +1622,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1678,7 +1678,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1734,7 +1734,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1762,7 +1762,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1PermissionedDomainDelete.html b/classxrpl_1_1PermissionedDomainDelete.html index 472bb99bad..95251c9c19 100644 --- a/classxrpl_1_1PermissionedDomainDelete.html +++ b/classxrpl_1_1PermissionedDomainDelete.html @@ -539,7 +539,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -637,7 +637,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -665,7 +665,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -703,7 +703,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -731,7 +731,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -793,7 +793,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -821,7 +821,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -859,7 +859,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -985,7 +985,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1035,7 +1035,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1091,7 +1091,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1158,7 +1158,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1196,7 +1196,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1252,7 +1252,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1280,7 +1280,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1318,7 +1318,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1531,7 +1531,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1559,7 +1559,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1642,7 +1642,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1698,7 +1698,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1726,7 +1726,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1PermissionedDomainSet.html b/classxrpl_1_1PermissionedDomainSet.html index dbcdaf74e2..6dea80aa9f 100644 --- a/classxrpl_1_1PermissionedDomainSet.html +++ b/classxrpl_1_1PermissionedDomainSet.html @@ -567,7 +567,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -665,7 +665,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -693,7 +693,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -731,7 +731,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -759,7 +759,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -821,7 +821,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -849,7 +849,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -887,7 +887,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1013,7 +1013,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1063,7 +1063,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1090,7 +1090,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1119,7 +1119,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1186,7 +1186,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1224,7 +1224,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1252,7 +1252,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1280,7 +1280,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1318,7 +1318,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1531,7 +1531,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1559,7 +1559,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1642,7 +1642,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1698,7 +1698,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1726,7 +1726,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1SetAccount.html b/classxrpl_1_1SetAccount.html index 6dbbedb7eb..18e4aa727d 100644 --- a/classxrpl_1_1SetAccount.html +++ b/classxrpl_1_1SetAccount.html @@ -632,7 +632,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -730,7 +730,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -796,7 +796,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -824,7 +824,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -886,7 +886,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -914,7 +914,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -952,7 +952,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1090,7 +1090,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1117,7 +1117,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1146,7 +1146,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1213,7 +1213,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1251,7 +1251,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1345,7 +1345,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1558,7 +1558,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1669,7 +1669,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1725,7 +1725,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1SetOracle.html b/classxrpl_1_1SetOracle.html index f5ed9c5a89..169a81a630 100644 --- a/classxrpl_1_1SetOracle.html +++ b/classxrpl_1_1SetOracle.html @@ -542,7 +542,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -640,7 +640,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -668,7 +668,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -706,7 +706,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -734,7 +734,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -796,7 +796,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -824,7 +824,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -862,7 +862,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -988,7 +988,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1065,7 +1065,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1094,7 +1094,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1161,7 +1161,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1199,7 +1199,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1255,7 +1255,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1283,7 +1283,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1321,7 +1321,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1534,7 +1534,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1562,7 +1562,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1589,7 +1589,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1645,7 +1645,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1701,7 +1701,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1729,7 +1729,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1SetRegularKey.html b/classxrpl_1_1SetRegularKey.html index 817c29a057..f3bb94b8e4 100644 --- a/classxrpl_1_1SetRegularKey.html +++ b/classxrpl_1_1SetRegularKey.html @@ -546,7 +546,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -644,7 +644,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -672,7 +672,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -710,7 +710,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -738,7 +738,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -800,7 +800,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -828,7 +828,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1SetSignerList.html b/classxrpl_1_1SetSignerList.html index c959e18437..d587af6508 100644 --- a/classxrpl_1_1SetSignerList.html +++ b/classxrpl_1_1SetSignerList.html @@ -874,7 +874,7 @@ Private Attributes

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -972,7 +972,7 @@ Private Attributes
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -1000,7 +1000,7 @@ Private Attributes
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ Private Attributes
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -1066,7 +1066,7 @@ Private Attributes
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -1128,7 +1128,7 @@ Private Attributes
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1156,7 +1156,7 @@ Private Attributes
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -1194,7 +1194,7 @@ Private Attributes
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1348,7 +1348,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1398,7 +1398,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1425,7 +1425,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1492,7 +1492,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1530,7 +1530,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1624,7 +1624,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1837,7 +1837,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1865,7 +1865,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1892,7 +1892,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1948,7 +1948,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -2004,7 +2004,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -2032,7 +2032,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1SetTrust.html b/classxrpl_1_1SetTrust.html index b46c896e9b..f891231210 100644 --- a/classxrpl_1_1SetTrust.html +++ b/classxrpl_1_1SetTrust.html @@ -602,7 +602,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -766,7 +766,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -794,7 +794,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -922,7 +922,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1Transactor.html b/classxrpl_1_1Transactor.html index 81394ed169..5f2f153643 100644 --- a/classxrpl_1_1Transactor.html +++ b/classxrpl_1_1Transactor.html @@ -454,7 +454,7 @@ Static Private Member Functions
-

Definition at line 230 of file Transactor.cpp.

+

Definition at line 236 of file Transactor.cpp.

@@ -502,7 +502,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -584,7 +584,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -612,7 +612,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -650,7 +650,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -678,7 +678,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -706,7 +706,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -744,7 +744,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -840,7 +840,7 @@ template<class T >
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -890,7 +890,7 @@ template<class T >
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -917,7 +917,7 @@ template<class T >
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -946,7 +946,7 @@ template<class T >

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1040,7 +1040,7 @@ template<class T > -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1078,7 +1078,7 @@ template<class T >
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1140,7 +1140,7 @@ template<class T >
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -1196,7 +1196,7 @@ template<class T >
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1224,7 +1224,7 @@ template<class T >
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1262,7 +1262,7 @@ template<class T >
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1475,7 +1475,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1503,7 +1503,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1530,7 +1530,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1642,7 +1642,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1670,7 +1670,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultClawback.html b/classxrpl_1_1VaultClawback.html index 6955866b70..4ba9cbb59e 100644 --- a/classxrpl_1_1VaultClawback.html +++ b/classxrpl_1_1VaultClawback.html @@ -588,7 +588,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -686,7 +686,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -714,7 +714,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -752,7 +752,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -780,7 +780,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -842,7 +842,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -870,7 +870,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -908,7 +908,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1034,7 +1034,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1084,7 +1084,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1111,7 +1111,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1140,7 +1140,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1207,7 +1207,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1245,7 +1245,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1301,7 +1301,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1329,7 +1329,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1367,7 +1367,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1580,7 +1580,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1608,7 +1608,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1635,7 +1635,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1691,7 +1691,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1747,7 +1747,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1775,7 +1775,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultCreate.html b/classxrpl_1_1VaultCreate.html index 7de795e3c7..600ed7b425 100644 --- a/classxrpl_1_1VaultCreate.html +++ b/classxrpl_1_1VaultCreate.html @@ -592,7 +592,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -718,7 +718,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -784,7 +784,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -874,7 +874,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -912,7 +912,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1038,7 +1038,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1115,7 +1115,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1144,7 +1144,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1211,7 +1211,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultDelete.html b/classxrpl_1_1VaultDelete.html index 7538a11ad4..9430fc99ed 100644 --- a/classxrpl_1_1VaultDelete.html +++ b/classxrpl_1_1VaultDelete.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultDeposit.html b/classxrpl_1_1VaultDeposit.html index 9327dade9f..4f55810bf1 100644 --- a/classxrpl_1_1VaultDeposit.html +++ b/classxrpl_1_1VaultDeposit.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultSet.html b/classxrpl_1_1VaultSet.html index 1345de42b3..7409ae1056 100644 --- a/classxrpl_1_1VaultSet.html +++ b/classxrpl_1_1VaultSet.html @@ -564,7 +564,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -690,7 +690,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -756,7 +756,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -846,7 +846,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -884,7 +884,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1010,7 +1010,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1060,7 +1060,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1087,7 +1087,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1116,7 +1116,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1183,7 +1183,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1221,7 +1221,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1VaultWithdraw.html b/classxrpl_1_1VaultWithdraw.html index fca3d80980..a03f9882dd 100644 --- a/classxrpl_1_1VaultWithdraw.html +++ b/classxrpl_1_1VaultWithdraw.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainAddAccountCreateAttestation.html b/classxrpl_1_1XChainAddAccountCreateAttestation.html index a8c18d5f58..ed08cb326c 100644 --- a/classxrpl_1_1XChainAddAccountCreateAttestation.html +++ b/classxrpl_1_1XChainAddAccountCreateAttestation.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainAddClaimAttestation.html b/classxrpl_1_1XChainAddClaimAttestation.html index 81f2b7881d..ec2c64b61a 100644 --- a/classxrpl_1_1XChainAddClaimAttestation.html +++ b/classxrpl_1_1XChainAddClaimAttestation.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainClaim.html b/classxrpl_1_1XChainClaim.html index 54f94018e0..41ea8cdb85 100644 --- a/classxrpl_1_1XChainClaim.html +++ b/classxrpl_1_1XChainClaim.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainCommit.html b/classxrpl_1_1XChainCommit.html index 7fb1d25212..3ef108ed26 100644 --- a/classxrpl_1_1XChainCommit.html +++ b/classxrpl_1_1XChainCommit.html @@ -566,7 +566,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -664,7 +664,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -692,7 +692,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -730,7 +730,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -758,7 +758,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -820,7 +820,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -848,7 +848,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -886,7 +886,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -1012,7 +1012,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1062,7 +1062,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1089,7 +1089,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1118,7 +1118,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1185,7 +1185,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1223,7 +1223,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1279,7 +1279,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1307,7 +1307,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1345,7 +1345,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1558,7 +1558,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1586,7 +1586,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1613,7 +1613,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1669,7 +1669,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1725,7 +1725,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1753,7 +1753,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainCreateAccountCommit.html b/classxrpl_1_1XChainCreateAccountCommit.html index f2862dcdf8..dca97d7f5b 100644 --- a/classxrpl_1_1XChainCreateAccountCommit.html +++ b/classxrpl_1_1XChainCreateAccountCommit.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainCreateBridge.html b/classxrpl_1_1XChainCreateBridge.html index fc41ac5b53..8864978318 100644 --- a/classxrpl_1_1XChainCreateBridge.html +++ b/classxrpl_1_1XChainCreateBridge.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1XChainCreateClaimID.html b/classxrpl_1_1XChainCreateClaimID.html index 320226fcc9..40e95199ad 100644 --- a/classxrpl_1_1XChainCreateClaimID.html +++ b/classxrpl_1_1XChainCreateClaimID.html @@ -536,7 +536,7 @@ Static Private Member Functions

Process the transaction.

-

Definition at line 1129 of file Transactor.cpp.

+

Definition at line 1135 of file Transactor.cpp.

@@ -634,7 +634,7 @@ Static Private Member Functions
-

Definition at line 426 of file Transactor.cpp.

+

Definition at line 432 of file Transactor.cpp.

@@ -662,7 +662,7 @@ Static Private Member Functions
-

Definition at line 497 of file Transactor.cpp.

+

Definition at line 503 of file Transactor.cpp.

@@ -700,7 +700,7 @@ Static Private Member Functions
-

Definition at line 326 of file Transactor.cpp.

+

Definition at line 332 of file Transactor.cpp.

@@ -728,7 +728,7 @@ Static Private Member Functions
-

Definition at line 722 of file Transactor.cpp.

+

Definition at line 728 of file Transactor.cpp.

@@ -790,7 +790,7 @@ Static Private Member Functions
-

Definition at line 653 of file Transactor.cpp.

+

Definition at line 659 of file Transactor.cpp.

@@ -818,7 +818,7 @@ Static Private Member Functions
-

Definition at line 732 of file Transactor.cpp.

+

Definition at line 738 of file Transactor.cpp.

@@ -856,7 +856,7 @@ Static Private Member Functions
-

Definition at line 277 of file Transactor.cpp.

+

Definition at line 283 of file Transactor.cpp.

@@ -982,7 +982,7 @@ template<>
-

Definition at line 261 of file Transactor.cpp.

+

Definition at line 267 of file Transactor.cpp.

@@ -1032,7 +1032,7 @@ template<>
-

Definition at line 546 of file Transactor.cpp.

+

Definition at line 552 of file Transactor.cpp.

@@ -1059,7 +1059,7 @@ template<>
-

Definition at line 616 of file Transactor.cpp.

+

Definition at line 622 of file Transactor.cpp.

@@ -1088,7 +1088,7 @@ template<>

Reimplemented in xrpl::Change, and xrpl::SetSignerList.

-

Definition at line 608 of file Transactor.cpp.

+

Definition at line 614 of file Transactor.cpp.

@@ -1155,7 +1155,7 @@ template<> -

Definition at line 316 of file Transactor.cpp.

+

Definition at line 322 of file Transactor.cpp.

@@ -1193,7 +1193,7 @@ template<>
-

Definition at line 296 of file Transactor.cpp.

+

Definition at line 302 of file Transactor.cpp.

@@ -1249,7 +1249,7 @@ template<>
-

Definition at line 249 of file Transactor.cpp.

+

Definition at line 255 of file Transactor.cpp.

@@ -1277,7 +1277,7 @@ template<>
-

Definition at line 255 of file Transactor.cpp.

+

Definition at line 261 of file Transactor.cpp.

@@ -1315,7 +1315,7 @@ template<>
-

Definition at line 239 of file Transactor.cpp.

+

Definition at line 245 of file Transactor.cpp.

@@ -1528,7 +1528,7 @@ template<class T , class Unit >
Returns
A pair containing the transaction result and the actual fee charged.
-

Definition at line 1067 of file Transactor.cpp.

+

Definition at line 1073 of file Transactor.cpp.

@@ -1556,7 +1556,7 @@ template<class T , class Unit >
-

Definition at line 527 of file Transactor.cpp.

+

Definition at line 533 of file Transactor.cpp.

@@ -1583,7 +1583,7 @@ template<class T , class Unit >
-

Definition at line 391 of file Transactor.cpp.

+

Definition at line 397 of file Transactor.cpp.

@@ -1639,7 +1639,7 @@ template<class T , class Unit >
-

Definition at line 778 of file Transactor.cpp.

+

Definition at line 784 of file Transactor.cpp.

@@ -1695,7 +1695,7 @@ template<class T , class Unit >
-

Definition at line 810 of file Transactor.cpp.

+

Definition at line 816 of file Transactor.cpp.

@@ -1723,7 +1723,7 @@ template<class T , class Unit >
-

Definition at line 1122 of file Transactor.cpp.

+

Definition at line 1128 of file Transactor.cpp.

diff --git a/classxrpl_1_1test_1_1Batch__test-members.html b/classxrpl_1_1test_1_1Batch__test-members.html index 15447bace4..b5bfdece03 100644 --- a/classxrpl_1_1test_1_1Batch__test-members.html +++ b/classxrpl_1_1test_1_1Batch__test-members.html @@ -82,72 +82,73 @@ $(function() { abort_beast::unit_test::suiteprivate aborted_beast::unit_test::suiteprivate arg() constbeast::unit_test::suite - except(F &&f, String const &reason)beast::unit_test::suite - except(F &&f)beast::unit_test::suite - except(F &&f, String const &reason)beast::unit_test::suite - except(F &&f)beast::unit_test::suite - expect(Condition const &shouldBeTrue)beast::unit_test::suite - expect(Condition const &shouldBeTrue, String const &reason)beast::unit_test::suite - expect(Condition const &shouldBeTrue, char const *file, int line)beast::unit_test::suite - expect(Condition const &shouldBeTrue, String const &reason, char const *file, int line)beast::unit_test::suite - fail(String const &reason, char const *file, int line)beast::unit_test::suite - fail(std::string const &reason="")beast::unit_test::suite - getCheckIndex(AccountID const &account, std::uint32_t uSequence)xrpl::test::Batch_testprivatestatic - getLastLedger(jtx::Env &env)xrpl::test::Batch_testprivate - getTxByIndex(Json::Value const &jrr, int const index)xrpl::test::Batch_testprivate - logbeast::unit_test::suite - makeSmallQueueConfig(std::map< std::string, std::string > extraTxQ={}, std::map< std::string, std::string > extraVoting={})xrpl::test::Batch_testprivatestatic - openLedgerFee(jtx::Env &env, XRPAmount const &batchFee)xrpl::test::Batch_testprivate - operator()(runner &r)beast::unit_test::suite - operator=(suite const &)=deletebeast::unit_test::suite - p_this_suite()beast::unit_test::suiteprivatestatic - pass()beast::unit_test::suite - propagate_abort()beast::unit_test::suiteprivate - run() overridexrpl::test::Batch_testvirtual - runner_beast::unit_test::suiteprivate - submitBatch(jtx::Env &env, TER const &result, Args &&... args)xrpl::test::Batch_testprivate - suite()beast::unit_test::suite - suite(suite const &)=deletebeast::unit_test::suite - testAccountActivation(FeatureBitset features)xrpl::test::Batch_testprivate - testAccountDelete(FeatureBitset features)xrpl::test::Batch_testprivate - testAccountSet(FeatureBitset features)xrpl::test::Batch_testprivate - testAllOrNothing(FeatureBitset features)xrpl::test::Batch_testprivate - testBadOuterFee(FeatureBitset features)xrpl::test::Batch_testprivate - testBadRawTxn(FeatureBitset features)xrpl::test::Batch_testprivate - testBadSequence(FeatureBitset features)xrpl::test::Batch_testprivate - testBatchCalculateBaseFee(FeatureBitset features)xrpl::test::Batch_testprivate - testBatchDelegate(FeatureBitset features)xrpl::test::Batch_testprivate - testBatchNetworkOps(FeatureBitset features)xrpl::test::Batch_testprivate - testBatchTxQueue(FeatureBitset features)xrpl::test::Batch_testprivate - testCalculateBaseFee(FeatureBitset features)xrpl::test::Batch_testprivate - testcasebeast::unit_test::suite - testEnable(FeatureBitset features)xrpl::test::Batch_testprivate - testIndependent(FeatureBitset features)xrpl::test::Batch_testprivate - testInnerSubmitRPC(FeatureBitset features)xrpl::test::Batch_testprivate - testLoan(FeatureBitset features)xrpl::test::Batch_testprivate - testObjectCreate3rdParty(FeatureBitset features)xrpl::test::Batch_testprivate - testObjectCreateSequence(FeatureBitset features)xrpl::test::Batch_testprivate - testObjectCreateTicket(FeatureBitset features)xrpl::test::Batch_testprivate - testObjectsOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate - testOnlyOne(FeatureBitset features)xrpl::test::Batch_testprivate - testOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate - testPreclaim(FeatureBitset features)xrpl::test::Batch_testprivate - testPreflight(FeatureBitset features)xrpl::test::Batch_testprivate - testPseudoTxn(FeatureBitset features)xrpl::test::Batch_testprivate - testSequenceOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate - testTickets(FeatureBitset features)xrpl::test::Batch_testprivate - testTicketsOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate - testUntilFailure(FeatureBitset features)xrpl::test::Batch_testprivate - testValidateRPCResponse(FeatureBitset features)xrpl::test::Batch_testprivate - testWithFeats(FeatureBitset features)xrpl::test::Batch_testprivate - this_suite()beast::unit_test::suitestatic - unexcept(F &&f, String const &reason)beast::unit_test::suite - unexcept(F &&f)beast::unit_test::suite - unexpected(Condition shouldBeFalse, String const &reason)beast::unit_test::suite - unexpected(Condition shouldBeFalse)beast::unit_test::suite - validateClosedLedger(jtx::Env &env, std::vector< TestLedgerData > const &ledgerResults)xrpl::test::Batch_testprivate - validateInnerTxn(jtx::Env &env, std::string const &batchID, TestLedgerData const &ledgerResult)xrpl::test::Batch_testprivate - ~suite()=defaultbeast::unit_test::suitevirtual + doTestInnerSubmitRPC(FeatureBitset features, bool withBatch)xrpl::test::Batch_testprivate + except(F &&f, String const &reason)beast::unit_test::suite + except(F &&f)beast::unit_test::suite + except(F &&f, String const &reason)beast::unit_test::suite + except(F &&f)beast::unit_test::suite + expect(Condition const &shouldBeTrue)beast::unit_test::suite + expect(Condition const &shouldBeTrue, String const &reason)beast::unit_test::suite + expect(Condition const &shouldBeTrue, char const *file, int line)beast::unit_test::suite + expect(Condition const &shouldBeTrue, String const &reason, char const *file, int line)beast::unit_test::suite + fail(String const &reason, char const *file, int line)beast::unit_test::suite + fail(std::string const &reason="")beast::unit_test::suite + getCheckIndex(AccountID const &account, std::uint32_t uSequence)xrpl::test::Batch_testprivatestatic + getLastLedger(jtx::Env &env)xrpl::test::Batch_testprivate + getTxByIndex(Json::Value const &jrr, int const index)xrpl::test::Batch_testprivate + logbeast::unit_test::suite + makeSmallQueueConfig(std::map< std::string, std::string > extraTxQ={}, std::map< std::string, std::string > extraVoting={})xrpl::test::Batch_testprivatestatic + openLedgerFee(jtx::Env &env, XRPAmount const &batchFee)xrpl::test::Batch_testprivate + operator()(runner &r)beast::unit_test::suite + operator=(suite const &)=deletebeast::unit_test::suite + p_this_suite()beast::unit_test::suiteprivatestatic + pass()beast::unit_test::suite + propagate_abort()beast::unit_test::suiteprivate + run() overridexrpl::test::Batch_testvirtual + runner_beast::unit_test::suiteprivate + submitBatch(jtx::Env &env, TER const &result, Args &&... args)xrpl::test::Batch_testprivate + suite()beast::unit_test::suite + suite(suite const &)=deletebeast::unit_test::suite + testAccountActivation(FeatureBitset features)xrpl::test::Batch_testprivate + testAccountDelete(FeatureBitset features)xrpl::test::Batch_testprivate + testAccountSet(FeatureBitset features)xrpl::test::Batch_testprivate + testAllOrNothing(FeatureBitset features)xrpl::test::Batch_testprivate + testBadOuterFee(FeatureBitset features)xrpl::test::Batch_testprivate + testBadRawTxn(FeatureBitset features)xrpl::test::Batch_testprivate + testBadSequence(FeatureBitset features)xrpl::test::Batch_testprivate + testBatchCalculateBaseFee(FeatureBitset features)xrpl::test::Batch_testprivate + testBatchDelegate(FeatureBitset features)xrpl::test::Batch_testprivate + testBatchNetworkOps(FeatureBitset features)xrpl::test::Batch_testprivate + testBatchTxQueue(FeatureBitset features)xrpl::test::Batch_testprivate + testCalculateBaseFee(FeatureBitset features)xrpl::test::Batch_testprivate + testcasebeast::unit_test::suite + testEnable(FeatureBitset features)xrpl::test::Batch_testprivate + testIndependent(FeatureBitset features)xrpl::test::Batch_testprivate + testInnerSubmitRPC(FeatureBitset features)xrpl::test::Batch_testprivate + testLoan(FeatureBitset features)xrpl::test::Batch_testprivate + testObjectCreate3rdParty(FeatureBitset features)xrpl::test::Batch_testprivate + testObjectCreateSequence(FeatureBitset features)xrpl::test::Batch_testprivate + testObjectCreateTicket(FeatureBitset features)xrpl::test::Batch_testprivate + testObjectsOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate + testOnlyOne(FeatureBitset features)xrpl::test::Batch_testprivate + testOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate + testPreclaim(FeatureBitset features)xrpl::test::Batch_testprivate + testPreflight(FeatureBitset features)xrpl::test::Batch_testprivate + testPseudoTxn(FeatureBitset features)xrpl::test::Batch_testprivate + testSequenceOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate + testTickets(FeatureBitset features)xrpl::test::Batch_testprivate + testTicketsOpenLedger(FeatureBitset features)xrpl::test::Batch_testprivate + testUntilFailure(FeatureBitset features)xrpl::test::Batch_testprivate + testValidateRPCResponse(FeatureBitset features)xrpl::test::Batch_testprivate + testWithFeats(FeatureBitset features)xrpl::test::Batch_testprivate + this_suite()beast::unit_test::suitestatic + unexcept(F &&f, String const &reason)beast::unit_test::suite + unexcept(F &&f)beast::unit_test::suite + unexpected(Condition shouldBeFalse, String const &reason)beast::unit_test::suite + unexpected(Condition shouldBeFalse)beast::unit_test::suite + validateClosedLedger(jtx::Env &env, std::vector< TestLedgerData > const &ledgerResults)xrpl::test::Batch_testprivate + validateInnerTxn(jtx::Env &env, std::string const &batchID, TestLedgerData const &ledgerResult)xrpl::test::Batch_testprivate + ~suite()=defaultbeast::unit_test::suitevirtual