rippled
Loading...
Searching...
No Matches
xchain_bridge.h
1#ifndef XRPL_TEST_JTX_XCHAINBRIDGE_H_INCLUDED
2#define XRPL_TEST_JTX_XCHAINBRIDGE_H_INCLUDED
3
4#include <test/jtx/Account.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/SField.h>
10#include <xrpl/protocol/XChainAttestations.h>
11
12namespace ripple {
13namespace test {
14namespace jtx {
15
17
20
22bridge(
23 Account const& lockingChainDoor,
24 Issue const& lockingChainIssue,
25 Account const& issuingChainDoor,
26 Issue const& issuingChainIssue);
27
30 Account const& acc,
31 Json::Value const& bridge,
32 STAmount const& reward,
33 std::optional<STAmount> const& minAccountCreate = std::nullopt);
34
37 Account const& acc,
38 Json::Value const& bridge,
39 std::optional<STAmount> const& reward,
40 std::optional<STAmount> const& minAccountCreate = std::nullopt);
41
44 Account const& acc,
45 Json::Value const& bridge,
46 STAmount const& reward,
47 Account const& otherChainSource);
48
51 Account const& acc,
52 Json::Value const& bridge,
53 std::uint32_t claimID,
54 AnyAmount const& amt,
56
59 Account const& acc,
60 Json::Value const& bridge,
61 std::uint32_t claimID,
62 AnyAmount const& amt,
63 Account const& dst);
64
67 Account const& acc,
68 Json::Value const& bridge,
69 Account const& dst,
70 AnyAmount const& amt,
71 AnyAmount const& xChainFee);
72
75 Account const& acc,
76 Json::Value const& bridge,
77 Account const& dst,
78 AnyAmount const& amt);
79
82 jtx::Account const& submittingAccount,
83 Json::Value const& jvBridge,
84 jtx::Account const& sendingAccount,
85 jtx::AnyAmount const& sendingAmount,
86 jtx::Account const& rewardAccount,
87 bool wasLockingChainSend,
88 std::uint64_t claimID,
90 jtx::signer const& signer);
91
94 jtx::Account const& submittingAccount,
95 Json::Value const& jvBridge,
96 jtx::Account const& sendingAccount,
97 jtx::AnyAmount const& sendingAmount,
98 jtx::AnyAmount const& rewardAmount,
99 jtx::Account const& rewardAccount,
100 bool wasLockingChainSend,
101 std::uint64_t createCount,
102 jtx::Account const& dst,
103 jtx::signer const& signer);
104
107 jtx::Account const& submittingAccount,
108 Json::Value const& jvBridge,
109 jtx::Account const& sendingAccount,
110 jtx::AnyAmount const& sendingAmount,
111 std::vector<jtx::Account> const& rewardAccounts,
112 bool wasLockingChainSend,
113 std::uint64_t claimID,
117 std::size_t const fromIdx = 0);
118
121 jtx::Account const& submittingAccount,
122 Json::Value const& jvBridge,
123 jtx::Account const& sendingAccount,
124 jtx::AnyAmount const& sendingAmount,
125 jtx::AnyAmount const& rewardAmount,
126 std::vector<jtx::Account> const& rewardAccounts,
127 bool wasLockingChainSend,
128 std::uint64_t createCount,
129 jtx::Account const& dst,
132 std::size_t const fromIdx = 0);
133
135{
136 // funded accounts
149
150 // unfunded accounts
161
162 IOU const mcUSD;
163 IOU const scUSD;
164
166 Json::Value jvb; // standard xrp bridge def for tx
167 Json::Value jvub; // standard xrp bridge def for tx, unfunded accounts
168
175
176 STAmount const reward; // 1 xrp
177 STAmount const split_reward_quorum; // 250,000 drops
178 STAmount const split_reward_everyone; // 200,000 drops
179
180 STAmount const tiny_reward; // 37 drops
181 STAmount const tiny_reward_split; // 9 drops
183
186
187 static constexpr int drop_per_xrp = 1000000;
188
190
191 void
193
194 void
196
197 void
198 createBridgeObjects(Env& mcEnv, Env& scEnv);
199
202 std::uint64_t createCount,
203 jtx::AnyAmount const& amt,
204 jtx::Account const& dst,
205 std::size_t const numAtts,
206 std::size_t const fromIdx = 0)
207 {
210 jvb,
211 mcCarol,
212 amt,
213 reward,
214 payees,
215 true,
216 createCount,
217 dst,
218 signers,
219 numAtts,
220 fromIdx);
221 }
222
225 Account const& acc,
227 STAmount const& _reward = XRP(1),
228 std::optional<STAmount> const& minAccountCreate = std::nullopt)
229 {
230 return bridge_create(
231 acc,
233 _reward,
234 minAccountCreate);
235 }
236};
237
238} // namespace jtx
239} // namespace test
240} // namespace ripple
241
242#endif
Represents a JSON value.
Definition json_value.h:130
A currency issued by an account.
Definition Issue.h:14
Immutable cryptographic account descriptor.
Definition Account.h:20
A transaction testing environment.
Definition Env.h:102
Converts to IOU Issue or STAmount.
T is_same_v
@ nullValue
'null' value
Definition json_value.h:19
constexpr std::size_t UT_XCHAIN_DEFAULT_QUORUM
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)
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 bridge_create(Account const &acc, Json::Value const &bridge, STAmount const &reward, std::optional< STAmount > const &minAccountCreate)
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)
Json::Value bridge(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
Json::Value signers(Account const &account, std::uint32_t quorum, std::vector< signer > const &v)
Definition multisign.cpp:15
Json::Value sidechain_xchain_account_claim(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt)
Json::Value sidechain_xchain_account_create(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt, AnyAmount const &reward)
Json::Value xchain_claim(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, Account const &dst)
constexpr std::size_t UT_XCHAIN_DEFAULT_NUM_SIGNERS
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 bridge_modify(Account const &acc, Json::Value const &bridge, std::optional< STAmount > const &reward, std::optional< STAmount > const &minAccountCreate)
Json::Value xchain_commit(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, std::optional< Account > const &dst)
XRP_t const XRP
Converts to XRP Issue or STAmount.
Definition amount.cpp:92
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
Amount specifier with an option for any issuer.
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)
std::vector< Account > const payee
std::vector< signer > const alt_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< Account > const payees
std::vector< signer > const signers
void createBridgeObjects(Env &mcEnv, Env &scEnv)
A signer in a SignerList.
Definition multisign.h:20