xrpld
Loading...
Searching...
No Matches
batch.h
1#pragma once
2
3#include <test/jtx/Account.h>
4#include <test/jtx/Env.h>
5#include <test/jtx/SignerUtils.h>
6#include <test/jtx/amount.h>
7#include <test/jtx/owners.h>
8#include <test/jtx/tags.h>
9
10#include <xrpl/protocol/TxFlags.h>
11
12#include <concepts>
13#include <cstdint>
14#include <optional>
15#include <utility>
16
19
29calcBatchFee(jtx::Env const& env, uint32_t const& numSigners, uint32_t const& txns = 0);
30
42calcConfidentialBatchFee(jtx::Env const& env, uint32_t const& numSigners, uint32_t const& txns = 0);
43
54outer(jtx::Account const& account, uint32_t seq, STAmount const& fee, std::uint32_t flags);
55
57class Inner
58{
59private:
63
64public:
66 json::Value txn,
67 std::uint32_t const& sequence,
68 std::optional<std::uint32_t> const& ticket = std::nullopt)
69 : txn_(std::move(txn)), seq_(sequence), ticket_(ticket)
70 {
71 txn_[jss::SigningPubKey] = "";
72 txn_[jss::Sequence] = seq_;
73 txn_[jss::Fee] = "0";
74 txn_[jss::Flags] = txn_[jss::Flags].asUInt() | tfInnerBatchTxn;
75
76 // Optionally set ticket sequence
77 if (ticket_.has_value())
78 {
79 txn_[jss::Sequence] = 0;
80 txn_[sfTicketSequence.jsonName] = *ticket_;
81 }
82 }
83
84 void
85 operator()(Env&, JTx& jtx) const;
86
89 {
90 return txn_[key];
91 }
92
93 void
95 {
96 txn_.removeMember(key);
97 }
98
99 [[nodiscard]] json::Value const&
100 getTxn() const
101 {
102 return txn_;
103 }
104};
105
107class Sig
108{
109public:
111
113 {
115 }
116
117 template <class AccountType, class... Accounts>
118 requires std::convertible_to<AccountType, Reg>
119 explicit Sig(AccountType&& a0, Accounts&&... aN)
120 : signers{std::forward<AccountType>(a0), std::forward<Accounts>(aN)...}
121 {
123 }
124
125 void
126 operator()(Env&, JTx& jt) const;
127};
128
130class Msig
131{
132public:
135
136 Msig(Account masterAccount, std::vector<Reg> s)
137 : master(std::move(masterAccount)), signers(std::move(s))
138 {
140 }
141
142 template <class AccountType, class... Accounts>
143 requires std::convertible_to<AccountType, Reg>
144 explicit Msig(Account masterAccount, AccountType&& a0, Accounts&&... aN)
145 : master(std::move(masterAccount))
146 , signers{std::forward<AccountType>(a0), std::forward<Accounts>(aN)...}
147 {
149 }
150
151 void
152 operator()(Env&, JTx& jt) const;
153};
154
155} // namespace xrpl::test::jtx::batch
Lightweight wrapper to tag static string.
Definition json_value.h:44
Represents a JSON value.
Definition json_value.h:130
Immutable cryptographic account descriptor.
Definition jtx/Account.h:17
A transaction testing environment.
Definition Env.h:143
json::Value & operator[](json::StaticString const &key)
Definition batch.h:88
void removeMember(json::StaticString const &key)
Definition batch.h:94
std::optional< std::uint32_t > ticket_
Definition batch.h:62
void operator()(Env &, JTx &jtx) const
Definition batch.cpp:66
json::Value const & getTxn() const
Definition batch.h:100
Inner(json::Value txn, std::uint32_t const &sequence, std::optional< std::uint32_t > const &ticket=std::nullopt)
Definition batch.h:65
Msig(Account masterAccount, AccountType &&a0, Accounts &&... aN)
Definition batch.h:144
Msig(Account masterAccount, std::vector< Reg > s)
Definition batch.h:136
std::vector< Reg > signers
Definition batch.h:134
void operator()(Env &, JTx &jt) const
Definition batch.cpp:110
Sig(AccountType &&a0, Accounts &&... aN)
Definition batch.h:119
Sig(std::vector< Reg > s)
Definition batch.h:112
std::vector< Reg > signers
Definition batch.h:110
void operator()(Env &, JTx &jt) const
Definition batch.cpp:77
STL namespace.
Helpers for constructing Batch test transactions.
Definition batch.h:18
XRPAmount calcConfidentialBatchFee(jtx::Env const &env, uint32_t const &numSigners, uint32_t const &txns=0)
Calculate the expected Batch fee when inner transactions are confidential MPT transactions.
Definition batch.cpp:42
json::Value outer(jtx::Account const &account, uint32_t seq, STAmount const &fee, std::uint32_t flags)
Build an outer Batch transaction JSON object.
Definition batch.cpp:53
XRPAmount calcBatchFee(jtx::Env const &env, uint32_t const &numSigners, uint32_t const &txns=0)
Calculate the expected outer Batch transaction fee.
Definition batch.cpp:35
Ticket operations.
Definition ticket.cpp:13
void sortSigners(std::vector< Reg > &signers)
Definition SignerUtils.h:41
constexpr XRPAmount
Convert XRP to drops (integral types).
Definition TxTest.h:48
constexpr FlagValue tfInnerBatchTxn
Definition TxFlags.h:43
Execution context for applying a JSON transaction.
Definition JTx.h:23