xrpld
Loading...
Searching...
No Matches
xchain_bridge.h
1#pragma once
2
3#include <test/jtx/Account.h>
4#include <test/jtx/amount.h>
5#include <test/jtx/multisign.h>
6
7#include <xrpl/json/json_value.h>
8#include <xrpl/protocol/SField.h>
9#include <xrpl/protocol/XChainAttestations.h>
10
11namespace xrpl::test::jtx {
12
14
17
19bridge(
20 Account const& lockingChainDoor,
21 Issue const& lockingChainIssue,
22 Account const& issuingChainDoor,
23 Issue const& issuingChainIssue);
24
27 Account const& acc,
28 json::Value const& bridge,
29 STAmount const& reward,
30 std::optional<STAmount> const& minAccountCreate = std::nullopt);
31
34 Account const& acc,
35 json::Value const& bridge,
36 std::optional<STAmount> const& reward,
37 std::optional<STAmount> const& minAccountCreate = std::nullopt);
38
41 Account const& acc,
42 json::Value const& bridge,
43 STAmount const& reward,
44 Account const& otherChainSource);
45
48 Account const& acc,
49 json::Value const& bridge,
50 std::uint32_t claimID,
51 AnyAmount const& amt,
52 std::optional<Account> const& dst = std::nullopt);
53
56 Account const& acc,
57 json::Value const& bridge,
58 std::uint32_t claimID,
59 AnyAmount const& amt,
60 Account const& dst);
61
64 Account const& acc,
65 json::Value const& bridge,
66 Account const& dst,
67 AnyAmount const& amt,
68 AnyAmount const& xChainFee);
69
72 Account const& acc,
73 json::Value const& bridge,
74 Account const& dst,
75 AnyAmount const& amt);
76
79 jtx::Account const& submittingAccount,
80 json::Value const& jvBridge,
81 jtx::Account const& sendingAccount,
82 jtx::AnyAmount const& sendingAmount,
83 jtx::Account const& rewardAccount,
84 bool wasLockingChainSend,
85 std::uint64_t claimID,
87 jtx::Signer const& signer);
88
91 jtx::Account const& submittingAccount,
92 json::Value const& jvBridge,
93 jtx::Account const& sendingAccount,
94 jtx::AnyAmount const& sendingAmount,
95 jtx::AnyAmount const& rewardAmount,
96 jtx::Account const& rewardAccount,
97 bool wasLockingChainSend,
98 std::uint64_t createCount,
99 jtx::Account const& dst,
100 jtx::Signer const& signer);
101
104 jtx::Account const& submittingAccount,
105 json::Value const& jvBridge,
106 jtx::Account const& sendingAccount,
107 jtx::AnyAmount const& sendingAmount,
108 std::vector<jtx::Account> const& rewardAccounts,
109 bool wasLockingChainSend,
110 std::uint64_t claimID,
113 std::size_t const numAtts = kUtXchainDefaultQuorum,
114 std::size_t const fromIdx = 0);
115
118 jtx::Account const& submittingAccount,
119 json::Value const& jvBridge,
120 jtx::Account const& sendingAccount,
121 jtx::AnyAmount const& sendingAmount,
122 jtx::AnyAmount const& rewardAmount,
123 std::vector<jtx::Account> const& rewardAccounts,
124 bool wasLockingChainSend,
125 std::uint64_t createCount,
126 jtx::Account const& dst,
128 std::size_t const numAtts = kUtXchainDefaultQuorum,
129 std::size_t const fromIdx = 0);
130
132{
133 // funded accounts
146
147 // unfunded accounts
158
159 IOU const mcUSD;
160 IOU const scUSD;
161
163 json::Value jvb; // standard xrp bridge def for tx
164 json::Value jvub; // standard xrp bridge def for tx, unfunded accounts
165
172
173 STAmount const reward; // 1 xrp
174 STAmount const splitRewardQuorum; // 250,000 drops
175 STAmount const splitRewardEveryone; // 200,000 drops
176
177 STAmount const tinyReward; // 37 drops
178 STAmount const tinyRewardSplit; // 9 drops
180
183
184 static constexpr int kDropPerXrp = 1000000;
185
187
188 void
190
191 void
193
194 void
195 createBridgeObjects(Env& mcEnv, Env& scEnv);
196
199 std::uint64_t createCount,
200 jtx::AnyAmount const& amt,
201 jtx::Account const& dst,
202 std::size_t const numAtts,
203 std::size_t const fromIdx = 0)
204 {
207 jvb,
208 mcCarol,
209 amt,
210 reward,
211 payees,
212 true,
213 createCount,
214 dst,
215 signers,
216 numAtts,
217 fromIdx);
218 }
219
220 [[nodiscard]] json::Value
222 Account const& acc,
224 STAmount const& reward = XRP(1),
225 std::optional<STAmount> const& minAccountCreate = std::nullopt) const
226 {
227 return bridgeCreate(
228 acc, bridge == json::ValueType::Null ? jvb : bridge, reward, minAccountCreate);
229 }
230};
231
232} // namespace xrpl::test::jtx
Represents a JSON value.
Definition json_value.h:130
A currency issued by an account.
Definition Issue.h:13
Immutable cryptographic account descriptor.
Definition jtx/Account.h:17
A transaction testing environment.
Definition Env.h:143
Converts to IOU Issue or STAmount.
@ Null
'null' value
Definition json_value.h:19
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:17
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)