rippled
xchain_bridge.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_TEST_JTX_XCHAINBRIDGE_H_INCLUDED
21 #define RIPPLE_TEST_JTX_XCHAINBRIDGE_H_INCLUDED
22 
23 #include <ripple/json/json_value.h>
24 #include <ripple/protocol/SField.h>
25 #include <ripple/protocol/XChainAttestations.h>
26 #include <test/jtx/Account.h>
27 #include <test/jtx/amount.h>
28 #include <test/jtx/multisign.h>
29 
30 namespace ripple {
31 namespace test {
32 namespace jtx {
33 
35 
38 
40 bridge(
41  Account const& lockingChainDoor,
42  Issue const& lockingChainIssue,
43  Account const& issuingChainDoor,
44  Issue const& issuingChainIssue);
45 
48  Account const& acc,
49  Json::Value const& bridge,
50  STAmount const& reward,
51  std::optional<STAmount> const& minAccountCreate = std::nullopt);
52 
55  Account const& acc,
56  Json::Value const& bridge,
57  std::optional<STAmount> const& reward,
58  std::optional<STAmount> const& minAccountCreate = std::nullopt);
59 
62  Account const& acc,
63  Json::Value const& bridge,
64  STAmount const& reward,
65  Account const& otherChainSource);
66 
69  Account const& acc,
70  Json::Value const& bridge,
71  std::uint32_t claimID,
72  AnyAmount const& amt,
73  std::optional<Account> const& dst = std::nullopt);
74 
77  Account const& acc,
78  Json::Value const& bridge,
79  std::uint32_t claimID,
80  AnyAmount const& amt,
81  Account const& dst);
82 
85  Account const& acc,
86  Json::Value const& bridge,
87  Account const& dst,
88  AnyAmount const& amt,
89  AnyAmount const& xChainFee);
90 
93  Account const& acc,
94  Json::Value const& bridge,
95  Account const& dst,
96  AnyAmount const& amt);
97 
100  jtx::Account const& submittingAccount,
101  Json::Value const& jvBridge,
102  jtx::Account const& sendingAccount,
103  jtx::AnyAmount const& sendingAmount,
104  jtx::Account const& rewardAccount,
105  bool wasLockingChainSend,
106  std::uint64_t claimID,
107  std::optional<jtx::Account> const& dst,
108  jtx::signer const& signer);
109 
112  jtx::Account const& submittingAccount,
113  Json::Value const& jvBridge,
114  jtx::Account const& sendingAccount,
115  jtx::AnyAmount const& sendingAmount,
116  jtx::AnyAmount const& rewardAmount,
117  jtx::Account const& rewardAccount,
118  bool wasLockingChainSend,
119  std::uint64_t createCount,
120  jtx::Account const& dst,
121  jtx::signer const& signer);
122 
123 JValueVec
125  jtx::Account const& submittingAccount,
126  Json::Value const& jvBridge,
127  jtx::Account const& sendingAccount,
128  jtx::AnyAmount const& sendingAmount,
129  std::vector<jtx::Account> const& rewardAccounts,
130  bool wasLockingChainSend,
131  std::uint64_t claimID,
132  std::optional<jtx::Account> const& dst,
134  std::size_t const numAtts = UT_XCHAIN_DEFAULT_QUORUM,
135  std::size_t const fromIdx = 0);
136 
137 JValueVec
139  jtx::Account const& submittingAccount,
140  Json::Value const& jvBridge,
141  jtx::Account const& sendingAccount,
142  jtx::AnyAmount const& sendingAmount,
143  jtx::AnyAmount const& rewardAmount,
144  std::vector<jtx::Account> const& rewardAccounts,
145  bool wasLockingChainSend,
146  std::uint64_t createCount,
147  jtx::Account const& dst,
149  std::size_t const numAtts = UT_XCHAIN_DEFAULT_QUORUM,
150  std::size_t const fromIdx = 0);
151 
153 {
154  // funded accounts
157  Account const mcBob;
159  Account const mcGw;
162  Account const scBob;
164  Account const scGw;
167 
168  // unfunded accounts
173  Account const mcuGw;
178  Account const scuGw;
179 
180  IOU const mcUSD;
181  IOU const scUSD;
182 
184  Json::Value jvb; // standard xrp bridge def for tx
185  Json::Value jvub; // standard xrp bridge def for tx, unfunded accounts
186 
193 
194  STAmount const reward; // 1 xrp
195  STAmount const split_reward_quorum; // 250,000 drops
196  STAmount const split_reward_everyone; // 200,000 drops
197 
198  const STAmount tiny_reward; // 37 drops
199  const STAmount tiny_reward_split; // 9 drops
200  const STAmount tiny_reward_remainder; // 1 drops
201 
204 
205  static constexpr int drop_per_xrp = 1000000;
206 
208 
209  void
210  createMcBridgeObjects(Env& mcEnv);
211 
212  void
213  createScBridgeObjects(Env& scEnv);
214 
215  void
216  createBridgeObjects(Env& mcEnv, Env& scEnv);
217 
218  JValueVec
220  std::uint64_t createCount,
221  jtx::AnyAmount const& amt,
222  jtx::Account const& dst,
223  std::size_t const numAtts,
224  std::size_t const fromIdx = 0)
225  {
227  scAttester,
228  jvb,
229  mcCarol,
230  amt,
231  reward,
232  payees,
233  true,
234  createCount,
235  dst,
236  signers,
237  numAtts,
238  fromIdx);
239  }
240 
243  Account const& acc,
245  STAmount const& _reward = XRP(1),
246  std::optional<STAmount> const& minAccountCreate = std::nullopt)
247  {
248  return bridge_create(
249  acc,
251  _reward,
252  minAccountCreate);
253  }
254 };
255 
256 } // namespace jtx
257 } // namespace test
258 } // namespace ripple
259 
260 #endif
ripple::test::jtx::XChainBridgeObjects::split_reward_everyone
const STAmount split_reward_everyone
Definition: xchain_bridge.h:196
ripple::test::jtx::XChainBridgeObjects::createBridgeObjects
void createBridgeObjects(Env &mcEnv, Env &scEnv)
Definition: xchain_bridge.cpp:509
ripple::test::jtx::XRP
const XRP_t XRP
Converts to XRP Issue or STAmount.
Definition: amount.cpp:105
ripple::test::jtx::XChainBridgeObjects::createScBridgeObjects
void createScBridgeObjects(Env &scEnv)
Definition: xchain_bridge.cpp:491
ripple::test::jtx::xchain_commit
Json::Value xchain_commit(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, std::optional< Account > const &dst)
Definition: xchain_bridge.cpp:134
ripple::Issue
A currency issued by an account.
Definition: Issue.h:35
ripple::test::jtx::XChainBridgeObjects::scUSD
const IOU scUSD
Definition: xchain_bridge.h:181
ripple::test::jtx::XChainBridgeObjects::features
const FeatureBitset features
Definition: xchain_bridge.h:187
ripple::test::jtx::claim_attestations
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)
Definition: xchain_bridge.cpp:306
ripple::test::jtx::XChainBridgeObjects::scuCarol
const Account scuCarol
Definition: xchain_bridge.h:177
ripple::test::jtx::XChainBridgeObjects::mcuBob
const Account mcuBob
Definition: xchain_bridge.h:171
ripple::test::jtx::XChainBridgeObjects::tiny_reward_remainder
const STAmount tiny_reward_remainder
Definition: xchain_bridge.h:200
ripple::test::jtx::XChainBridgeObjects::XChainBridgeObjects
XChainBridgeObjects()
Definition: xchain_bridge.cpp:371
std::vector
STL class.
ripple::test::jtx::XChainBridgeObjects::scuGw
const Account scuGw
Definition: xchain_bridge.h:178
ripple::test::jtx::XChainBridgeObjects::mcuCarol
const Account mcuCarol
Definition: xchain_bridge.h:172
ripple::test::jtx::XChainBridgeObjects::jvb
Json::Value jvb
Definition: xchain_bridge.h:184
ripple::test::jtx::AnyAmount
Amount specifier with an option for any issuer.
Definition: amount.h:361
ripple::test::jtx::XChainBridgeObjects::scuBob
const Account scuBob
Definition: xchain_bridge.h:176
ripple::test::jtx::XChainBridgeObjects::tiny_reward
const STAmount tiny_reward
Definition: xchain_bridge.h:198
ripple::test::jtx::XChainBridgeObjects::scGw
const Account scGw
Definition: xchain_bridge.h:164
ripple::test::jtx::UT_XCHAIN_DEFAULT_QUORUM
constexpr std::size_t UT_XCHAIN_DEFAULT_QUORUM
Definition: xchain_bridge.h:37
ripple::test::jtx::sidechain_xchain_account_claim
Json::Value sidechain_xchain_account_claim(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt)
ripple::test::jtx::claim_attestation
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)
Definition: xchain_bridge.cpp:199
ripple::test::jtx::bridge_modify
Json::Value bridge_modify(Account const &acc, Json::Value const &bridge, std::optional< STAmount > const &reward, std::optional< STAmount > const &minAccountCreate)
Definition: xchain_bridge.cpp:92
ripple::test::jtx::XChainBridgeObjects::tiny_reward_split
const STAmount tiny_reward_split
Definition: xchain_bridge.h:199
ripple::test::jtx::XChainBridgeObjects::mcCarol
const Account mcCarol
Definition: xchain_bridge.h:158
ripple::test::jtx::create_account_attestation
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)
Definition: xchain_bridge.cpp:251
ripple::test::jtx::signer
A signer in a SignerList.
Definition: multisign.h:35
ripple::test::jtx::XChainBridgeObjects::xrp_dust
const STAmount xrp_dust
Definition: xchain_bridge.h:203
ripple::test::jtx::bridge
Json::Value bridge(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
Definition: xchain_bridge.cpp:40
ripple::test::jtx::xchain_claim
Json::Value xchain_claim(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, Account const &dst)
Definition: xchain_bridge.cpp:156
ripple::test::jtx::XChainBridgeObjects::reward
const STAmount reward
Definition: xchain_bridge.h:194
ripple::test::jtx::XChainBridgeObjects::scCarol
const Account scCarol
Definition: xchain_bridge.h:163
ripple::test::jtx::XChainBridgeObjects::scDoor
const Account scDoor
Definition: xchain_bridge.h:160
ripple::test::jtx::signers
Json::Value signers(Account const &account, std::uint32_t quorum, std::vector< signer > const &v)
Definition: multisign.cpp:35
ripple::test::jtx::XChainBridgeObjects::mcGw
const Account mcGw
Definition: xchain_bridge.h:159
ripple::test::jtx::XChainBridgeObjects::mcUSD
const IOU mcUSD
Definition: xchain_bridge.h:180
ripple::test::jtx::XChainBridgeObjects::scReward
const Account scReward
Definition: xchain_bridge.h:166
ripple::test::jtx::XChainBridgeObjects::att_create_acct_vec
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)
Definition: xchain_bridge.h:219
ripple::test::jtx::XChainBridgeObjects::split_reward_quorum
const STAmount split_reward_quorum
Definition: xchain_bridge.h:195
ripple::test::jtx::XChainBridgeObjects::payee
const std::vector< Account > payee
Definition: xchain_bridge.h:190
ripple::test::jtx::XChainBridgeObjects::one_xrp
const STAmount one_xrp
Definition: xchain_bridge.h:202
ripple::STAmount
Definition: STAmount.h:46
std::uint32_t
ripple::test::jtx::XChainBridgeObjects::scAttester
const Account scAttester
Definition: xchain_bridge.h:165
ripple::test::jtx::UT_XCHAIN_DEFAULT_NUM_SIGNERS
constexpr std::size_t UT_XCHAIN_DEFAULT_NUM_SIGNERS
Definition: xchain_bridge.h:36
ripple::test::jtx::XChainBridgeObjects::alt_signers
const std::vector< signer > alt_signers
Definition: xchain_bridge.h:189
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::test::jtx::xchain_create_claim_id
Json::Value xchain_create_claim_id(Account const &acc, Json::Value const &bridge, STAmount const &reward, Account const &otherChainSource)
Definition: xchain_bridge.cpp:115
ripple::test::jtx::sidechain_xchain_account_create
Json::Value sidechain_xchain_account_create(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt, AnyAmount const &reward)
Definition: xchain_bridge.cpp:177
ripple::test::jtx::IOU
Converts to IOU Issue or STAmount.
Definition: amount.h:291
ripple::test::jtx::XChainBridgeObjects::scuAlice
const Account scuAlice
Definition: xchain_bridge.h:175
ripple::test::jtx::XChainBridgeObjects::mcDoor
const Account mcDoor
Definition: xchain_bridge.h:155
ripple::test::jtx::XChainBridgeObjects
Definition: xchain_bridge.h:152
Json::nullValue
@ nullValue
'null' value
Definition: json_value.h:36
ripple::test::jtx::XChainBridgeObjects::scBob
const Account scBob
Definition: xchain_bridge.h:162
ripple::test::jtx::XChainBridgeObjects::payees
const std::vector< Account > payees
Definition: xchain_bridge.h:191
ripple::test::jtx::XChainBridgeObjects::scAlice
const Account scAlice
Definition: xchain_bridge.h:161
ripple::FeatureBitset
Definition: Feature.h:113
ripple::test::jtx::XChainBridgeObjects::jvXRPBridgeRPC
const Json::Value jvXRPBridgeRPC
Definition: xchain_bridge.h:183
ripple::test::jtx::XChainBridgeObjects::quorum
const std::uint32_t quorum
Definition: xchain_bridge.h:192
std::optional< STAmount >
ripple::test::jtx::XChainBridgeObjects::drop_per_xrp
static constexpr int drop_per_xrp
Definition: xchain_bridge.h:205
ripple::test::jtx::create_account_attestations
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)
Definition: xchain_bridge.cpp:338
std::size_t
ripple::test::jtx::Account
Immutable cryptographic account descriptor.
Definition: Account.h:37
ripple::test::jtx::XChainBridgeObjects::mcBob
const Account mcBob
Definition: xchain_bridge.h:157
ripple::test::jtx::XChainBridgeObjects::create_bridge
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)
Definition: xchain_bridge.h:242
ripple::test::jtx::XChainBridgeObjects::mcuAlice
const Account mcuAlice
Definition: xchain_bridge.h:170
ripple::test::jtx::XChainBridgeObjects::createMcBridgeObjects
void createMcBridgeObjects(Env &mcEnv)
Definition: xchain_bridge.cpp:474
ripple::test::jtx::bridge_create
Json::Value bridge_create(Account const &acc, Json::Value const &bridge, STAmount const &reward, std::optional< STAmount > const &minAccountCreate)
Definition: xchain_bridge.cpp:71
ripple::test::jtx::XChainBridgeObjects::mcAlice
const Account mcAlice
Definition: xchain_bridge.h:156
ripple::test::jtx::XChainBridgeObjects::mcuGw
const Account mcuGw
Definition: xchain_bridge.h:173
ripple::test::jtx::XChainBridgeObjects::scuDoor
const Account scuDoor
Definition: xchain_bridge.h:174
ripple::test::jtx::XChainBridgeObjects::mcuDoor
const Account mcuDoor
Definition: xchain_bridge.h:169
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:117
ripple::test::jtx::XChainBridgeObjects::jvub
Json::Value jvub
Definition: xchain_bridge.h:185
ripple::test::jtx::XChainBridgeObjects::signers
const std::vector< signer > signers
Definition: xchain_bridge.h:188
Json::Value
Represents a JSON value.
Definition: json_value.h:145