rippled
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 {
12namespace test {
13namespace jtx {
14
16
19
21bridge(
22 Account const& lockingChainDoor,
23 Issue const& lockingChainIssue,
24 Account const& issuingChainDoor,
25 Issue const& issuingChainIssue);
26
29 Account const& acc,
30 Json::Value const& bridge,
31 STAmount const& reward,
32 std::optional<STAmount> const& minAccountCreate = std::nullopt);
33
36 Account const& acc,
37 Json::Value const& bridge,
38 std::optional<STAmount> const& reward,
39 std::optional<STAmount> const& minAccountCreate = std::nullopt);
40
43 Account const& acc,
44 Json::Value const& bridge,
45 STAmount const& reward,
46 Account const& otherChainSource);
47
50 Account const& acc,
51 Json::Value const& bridge,
52 std::uint32_t claimID,
53 AnyAmount const& amt,
55
58 Account const& acc,
59 Json::Value const& bridge,
60 std::uint32_t claimID,
61 AnyAmount const& amt,
62 Account const& dst);
63
66 Account const& acc,
67 Json::Value const& bridge,
68 Account const& dst,
69 AnyAmount const& amt,
70 AnyAmount const& xChainFee);
71
74 Account const& acc,
75 Json::Value const& bridge,
76 Account const& dst,
77 AnyAmount const& amt);
78
81 jtx::Account const& submittingAccount,
82 Json::Value const& jvBridge,
83 jtx::Account const& sendingAccount,
84 jtx::AnyAmount const& sendingAmount,
85 jtx::Account const& rewardAccount,
86 bool wasLockingChainSend,
87 std::uint64_t claimID,
89 jtx::signer const& signer);
90
93 jtx::Account const& submittingAccount,
94 Json::Value const& jvBridge,
95 jtx::Account const& sendingAccount,
96 jtx::AnyAmount const& sendingAmount,
97 jtx::AnyAmount const& rewardAmount,
98 jtx::Account const& rewardAccount,
99 bool wasLockingChainSend,
100 std::uint64_t createCount,
101 jtx::Account const& dst,
102 jtx::signer const& signer);
103
106 jtx::Account const& submittingAccount,
107 Json::Value const& jvBridge,
108 jtx::Account const& sendingAccount,
109 jtx::AnyAmount const& sendingAmount,
110 std::vector<jtx::Account> const& rewardAccounts,
111 bool wasLockingChainSend,
112 std::uint64_t claimID,
116 std::size_t const fromIdx = 0);
117
120 jtx::Account const& submittingAccount,
121 Json::Value const& jvBridge,
122 jtx::Account const& sendingAccount,
123 jtx::AnyAmount const& sendingAmount,
124 jtx::AnyAmount const& rewardAmount,
125 std::vector<jtx::Account> const& rewardAccounts,
126 bool wasLockingChainSend,
127 std::uint64_t createCount,
128 jtx::Account const& dst,
131 std::size_t const fromIdx = 0);
132
134{
135 // funded accounts
148
149 // unfunded accounts
160
161 IOU const mcUSD;
162 IOU const scUSD;
163
165 Json::Value jvb; // standard xrp bridge def for tx
166 Json::Value jvub; // standard xrp bridge def for tx, unfunded accounts
167
174
175 STAmount const reward; // 1 xrp
176 STAmount const split_reward_quorum; // 250,000 drops
177 STAmount const split_reward_everyone; // 200,000 drops
178
179 STAmount const tiny_reward; // 37 drops
180 STAmount const tiny_reward_split; // 9 drops
182
185
186 static constexpr int drop_per_xrp = 1000000;
187
189
190 void
192
193 void
195
196 void
197 createBridgeObjects(Env& mcEnv, Env& scEnv);
198
201 std::uint64_t createCount,
202 jtx::AnyAmount const& amt,
203 jtx::Account const& dst,
204 std::size_t const numAtts,
205 std::size_t const fromIdx = 0)
206 {
209 jvb,
210 mcCarol,
211 amt,
212 reward,
213 payees,
214 true,
215 createCount,
216 dst,
217 signers,
218 numAtts,
219 fromIdx);
220 }
221
224 Account const& acc,
226 STAmount const& _reward = XRP(1),
227 std::optional<STAmount> const& minAccountCreate = std::nullopt)
228 {
229 return bridge_create(
230 acc, bridge == Json::nullValue ? jvb : bridge, _reward, minAccountCreate);
231 }
232};
233
234} // namespace jtx
235} // namespace test
236} // namespace xrpl
Represents a JSON value.
Definition json_value.h:130
A currency issued by an account.
Definition Issue.h:13
Immutable cryptographic account descriptor.
Definition Account.h:19
A transaction testing environment.
Definition Env.h:122
Converts to IOU Issue or STAmount.
T is_same_v
@ nullValue
'null' value
Definition json_value.h:19
Json::Value sidechain_xchain_account_create(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt, AnyAmount const &reward)
constexpr std::size_t UT_XCHAIN_DEFAULT_NUM_SIGNERS
Json::Value bridge_create(Account const &acc, Json::Value const &bridge, STAmount const &reward, std::optional< STAmount > const &minAccountCreate)
Json::Value signers(Account const &account, std::uint32_t quorum, std::vector< signer > const &v)
Definition multisign.cpp:15
JValueVec claim_attestations(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 xchain_claim(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, Account const &dst)
XRP_t const XRP
Converts to XRP Issue or STAmount.
Definition amount.cpp:95
Json::Value bridge_modify(Account const &acc, Json::Value const &bridge, std::optional< STAmount > const &reward, std::optional< STAmount > const &minAccountCreate)
JValueVec create_account_attestations(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)
Json::Value xchain_create_claim_id(Account const &acc, Json::Value const &bridge, STAmount const &reward, Account const &otherChainSource)
Json::Value xchain_commit(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, std::optional< Account > const &dst)
Json::Value bridge(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
Json::Value create_account_attestation(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)
constexpr std::size_t UT_XCHAIN_DEFAULT_QUORUM
Json::Value sidechain_xchain_account_claim(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt)
Json::Value claim_attestation(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)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Amount specifier with an option for any issuer.
void createBridgeObjects(Env &mcEnv, Env &scEnv)
std::vector< Account > const payee
std::vector< signer > const signers
Json::Value create_bridge(Account const &acc, Json::Value const &bridge=Json::nullValue, STAmount const &_reward=XRP(1), std::optional< STAmount > const &minAccountCreate=std::nullopt)
std::vector< signer > const alt_signers
std::vector< Account > const payees
JValueVec att_create_acct_vec(std::uint64_t createCount, jtx::AnyAmount const &amt, jtx::Account const &dst, std::size_t const numAtts, std::size_t const fromIdx=0)
A signer in a SignerList.
Definition multisign.h:19