xrpld
Loading...
Searching...
No Matches
xchain_bridge.h
1#pragma once
2
3#include <test/jtx/Account.h>
4#include <test/jtx/Env.h>
5#include <test/jtx/amount.h>
6#include <test/jtx/multisign.h>
7
8#include <xrpl/json/json_value.h>
9#include <xrpl/protocol/Feature.h>
10#include <xrpl/protocol/Issue.h>
11#include <xrpl/protocol/SField.h>
12
13#include <cstddef>
14#include <cstdint>
15#include <optional>
16#include <vector>
17
18namespace xrpl::test::jtx {
19
21
24
26bridge(
27 Account const& lockingChainDoor,
28 Issue const& lockingChainIssue,
29 Account const& issuingChainDoor,
30 Issue const& issuingChainIssue);
31
34 Account const& acc,
35 json::Value const& bridge,
36 STAmount const& reward,
37 std::optional<STAmount> const& minAccountCreate = std::nullopt);
38
41 Account const& acc,
42 json::Value const& bridge,
43 std::optional<STAmount> const& reward,
44 std::optional<STAmount> const& minAccountCreate = std::nullopt);
45
48 Account const& acc,
49 json::Value const& bridge,
50 STAmount const& reward,
51 Account const& otherChainSource);
52
55 Account const& acc,
56 json::Value const& bridge,
57 std::uint32_t claimID,
58 AnyAmount const& amt,
59 std::optional<Account> const& dst = std::nullopt);
60
63 Account const& acc,
64 json::Value const& bridge,
65 std::uint32_t claimID,
66 AnyAmount const& amt,
67 Account const& dst);
68
71 Account const& acc,
72 json::Value const& bridge,
73 Account const& dst,
74 AnyAmount const& amt,
75 AnyAmount const& xChainFee);
76
79 Account const& acc,
80 json::Value const& bridge,
81 Account const& dst,
82 AnyAmount const& amt);
83
86 jtx::Account const& submittingAccount,
87 json::Value const& jvBridge,
88 jtx::Account const& sendingAccount,
89 jtx::AnyAmount const& sendingAmount,
90 jtx::Account const& rewardAccount,
91 bool wasLockingChainSend,
92 std::uint64_t claimID,
94 jtx::Signer const& signer);
95
98 jtx::Account const& submittingAccount,
99 json::Value const& jvBridge,
100 jtx::Account const& sendingAccount,
101 jtx::AnyAmount const& sendingAmount,
102 jtx::AnyAmount const& rewardAmount,
103 jtx::Account const& rewardAccount,
104 bool wasLockingChainSend,
105 std::uint64_t createCount,
106 jtx::Account const& dst,
107 jtx::Signer const& signer);
108
111 jtx::Account const& submittingAccount,
112 json::Value const& jvBridge,
113 jtx::Account const& sendingAccount,
114 jtx::AnyAmount const& sendingAmount,
115 std::vector<jtx::Account> const& rewardAccounts,
116 bool wasLockingChainSend,
117 std::uint64_t claimID,
120 std::size_t const numAtts = kUtXchainDefaultQuorum,
121 std::size_t const fromIdx = 0);
122
125 jtx::Account const& submittingAccount,
126 json::Value const& jvBridge,
127 jtx::Account const& sendingAccount,
128 jtx::AnyAmount const& sendingAmount,
129 jtx::AnyAmount const& rewardAmount,
130 std::vector<jtx::Account> const& rewardAccounts,
131 bool wasLockingChainSend,
132 std::uint64_t createCount,
133 jtx::Account const& dst,
135 std::size_t const numAtts = kUtXchainDefaultQuorum,
136 std::size_t const fromIdx = 0);
137
139{
140 // funded accounts
153
154 // unfunded accounts
165
166 IOU const mcUSD;
167 IOU const scUSD;
168
170 json::Value jvb; // standard xrp bridge def for tx
171 json::Value jvub; // standard xrp bridge def for tx, unfunded accounts
172
179
180 STAmount const reward; // 1 xrp
181 STAmount const splitRewardQuorum; // 250,000 drops
182 STAmount const splitRewardEveryone; // 200,000 drops
183
184 STAmount const tinyReward; // 37 drops
185 STAmount const tinyRewardSplit; // 9 drops
187
190
191 static constexpr int kDropPerXrp = 1000000;
192
194
195 void
197
198 void
200
201 void
202 createBridgeObjects(Env& mcEnv, Env& scEnv);
203
206 std::uint64_t createCount,
207 jtx::AnyAmount const& amt,
208 jtx::Account const& dst,
209 std::size_t const numAtts,
210 std::size_t const fromIdx = 0)
211 {
214 jvb,
215 mcCarol,
216 amt,
217 reward,
218 payees,
219 true,
220 createCount,
221 dst,
222 signers,
223 numAtts,
224 fromIdx);
225 }
226
227 [[nodiscard]] json::Value
229 Account const& acc,
231 STAmount const& reward = XRP(1),
232 std::optional<STAmount> const& minAccountCreate = std::nullopt) const
233 {
234 return bridgeCreate(
235 acc, bridge == json::ValueType::Null ? jvb : bridge, reward, minAccountCreate);
236 }
237};
238
239} // namespace xrpl::test::jtx
Represents a JSON value.
Definition json_value.h:117
A currency issued by an account.
Definition Issue.h:18
Immutable cryptographic account descriptor.
Definition jtx/Account.h:21
A transaction testing environment.
Definition Env.h:161
Converts to IOU Issue or STAmount.
@ Null
'null' value
Definition json_value.h:22
std::vector< json::Value > JValueVec
json::Value sidechainXchainAccountCreate(Account const &acc, json::Value const &bridge, Account const &dst, AnyAmount const &amt, AnyAmount const &reward)
XrpT const XRP
Converts to XRP Issue or STAmount.
Definition amount.cpp:92
json::Value xchainCommit(Account const &acc, json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, std::optional< Account > const &dst)
json::Value bridgeCreate(Account const &acc, json::Value const &bridge, STAmount const &reward, std::optional< STAmount > const &minAccountCreate)
json::Value bridge(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
constexpr std::size_t kUtXchainDefaultNumSigners
JValueVec claimAttestations(jtx::Account const &submittingAccount, json::Value const &jvBridge, jtx::Account const &sendingAccount, jtx::AnyAmount const &sendingAmount, std::vector< jtx::Account > const &rewardAccounts, bool wasLockingChainSend, std::uint64_t claimID, std::optional< jtx::Account > const &dst, std::vector< jtx::Signer > const &signers, std::size_t const numAtts, std::size_t const fromIdx)
json::Value claimAttestation(jtx::Account const &submittingAccount, json::Value const &jvBridge, jtx::Account const &sendingAccount, jtx::AnyAmount const &sendingAmount, jtx::Account const &rewardAccount, bool wasLockingChainSend, std::uint64_t claimID, std::optional< jtx::Account > const &dst, jtx::Signer const &signer)
json::Value createAccountAttestation(jtx::Account const &submittingAccount, json::Value const &jvBridge, jtx::Account const &sendingAccount, jtx::AnyAmount const &sendingAmount, jtx::AnyAmount const &rewardAmount, jtx::Account const &rewardAccount, bool wasLockingChainSend, std::uint64_t createCount, jtx::Account const &dst, jtx::Signer const &signer)
json::Value xchainClaim(Account const &acc, json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, Account const &dst)
constexpr std::size_t kUtXchainDefaultQuorum
json::Value bridgeModify(Account const &acc, json::Value const &bridge, std::optional< STAmount > const &reward, std::optional< STAmount > const &minAccountCreate)
json::Value sidechainXchainAccountClaim(Account const &acc, json::Value const &bridge, Account const &dst, AnyAmount const &amt)
json::Value xchainCreateClaimId(Account const &acc, json::Value const &bridge, STAmount const &reward, Account const &otherChainSource)
json::Value signers(Account const &account, std::uint32_t quorum, std::vector< Signer > const &v)
Definition multisign.cpp:31
JValueVec createAccountAttestations(jtx::Account const &submittingAccount, json::Value const &jvBridge, jtx::Account const &sendingAccount, jtx::AnyAmount const &sendingAmount, jtx::AnyAmount const &rewardAmount, std::vector< jtx::Account > const &rewardAccounts, bool wasLockingChainSend, std::uint64_t createCount, jtx::Account const &dst, std::vector< jtx::Signer > const &signers, std::size_t const numAtts, std::size_t const fromIdx)
Amount specifier with an option for any issuer.
A signer in a SignerList.
Definition multisign.h:27
std::vector< Signer > const altSigners
void createBridgeObjects(Env &mcEnv, Env &scEnv)
std::vector< Account > const payee
std::vector< Account > const payees
json::Value createBridge(Account const &acc, json::Value const &bridge=json::ValueType::Null, STAmount const &reward=XRP(1), std::optional< STAmount > const &minAccountCreate=std::nullopt) const
std::vector< Signer > const signers
JValueVec attCreateAcctVec(std::uint64_t createCount, jtx::AnyAmount const &amt, jtx::Account const &dst, std::size_t const numAtts, std::size_t const fromIdx=0)