20 #include <test/jtx/xchain_bridge.h>
22 #include <ripple/json/json_value.h>
23 #include <ripple/protocol/Issue.h>
24 #include <ripple/protocol/SField.h>
25 #include <ripple/protocol/STBase.h>
26 #include <ripple/protocol/STInteger.h>
27 #include <ripple/protocol/STObject.h>
28 #include <ripple/protocol/TxFlags.h>
29 #include <ripple/protocol/XChainAttestations.h>
30 #include <ripple/protocol/jss.h>
31 #include <test/jtx/Env.h>
32 #include <test/jtx/attester.h>
41 Account const& lockingChainDoor,
42 Issue const& lockingChainIssue,
43 Account const& issuingChainDoor,
44 Issue const& issuingChainIssue)
57 Account const& lockingChainDoor,
58 Issue const& lockingChainIssue,
59 Account const& issuingChainDoor,
60 Issue const& issuingChainIssue)
79 jv[jss::Account] = acc.
human();
86 jv[jss::TransactionType] = jss::XChainCreateBridge;
100 jv[jss::Account] = acc.
human();
105 if (minAccountCreate)
109 jv[jss::TransactionType] = jss::XChainModifyBridge;
119 Account const& otherChainSource)
123 jv[jss::Account] = acc.
human();
128 jv[jss::TransactionType] = jss::XChainCreateClaimID;
143 jv[jss::Account] = acc.
human();
150 jv[jss::TransactionType] = jss::XChainCommit;
171 jv[jss::TransactionType] = jss::XChainClaim;
193 jv[jss::TransactionType] = jss::XChainAccountCreateCommit;
205 bool wasLockingChainSend,
244 result[jss::TransactionType] = jss::XChainAddClaimAttestation;
258 bool wasLockingChainSend,
299 result[jss::TransactionType] = jss::XChainAddAccountCreateAttestation;
312 bool wasLockingChainSend,
319 assert(fromIdx + numAtts <= rewardAccounts.size());
323 for (
auto i = fromIdx; i < fromIdx + numAtts; ++i)
345 bool wasLockingChainSend,
352 assert(fromIdx + numAtts <= rewardAccounts.size());
356 for (
auto i = fromIdx; i < fromIdx + numAtts; ++i)
382 , scAttester(
"scAttester")
383 , scReward(
"scReward")
385 , mcuAlice(
"mcuAlice")
387 , mcuCarol(
"mcuCarol")
390 , scuAlice(
"scuAlice")
392 , scuCarol(
"scuCarol")
405 for (
int i = 0; i < numSigners; ++i)
407 using namespace std::literals;
419 for (
int i = 0; i < numSigners; ++i)
421 using namespace std::literals;
422 auto const a = Account(
434 r.push_back(scReward);
443 using namespace std::literals;
444 auto const a = Account(
"reward_"s + std::to_string(i));
451 , split_reward_quorum(
453 , split_reward_everyone(
divide(
457 , tiny_reward(
drops(37))
458 , tiny_reward_split((
divide(
461 tiny_reward.issue())))
462 , tiny_reward_remainder(
467 tiny_reward.issue()))
469 , xrp_dust(
divide(one_xrp, STAmount(10000), one_xrp.issue()))
void createBridgeObjects(Env &mcEnv, Env &scEnv)
const XRP_t XRP
Converts to XRP Issue or STAmount.
void createScBridgeObjects(Env &scEnv)
Json::Value xchain_commit(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, std::optional< Account > const &dst)
A currency issued by an account.
PrettyAmount drops(Integer i)
Returns an XRP PrettyAmount, which is trivially convertible to STAmount.
const SF_ACCOUNT sfDestination
const SF_ACCOUNT sfLockingChainDoor
Json::Value bridge_rpc(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
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)
Buffer sign_create_account_attestation(PublicKey const &pk, SecretKey const &sk, STXChainBridge const &bridge, AccountID const &sendingAccount, STAmount const &sendingAmount, STAmount const &rewardAmount, AccountID const &rewardAccount, bool wasLockingChainSend, std::uint64_t createCount, AccountID const &dst)
Json::Value getJson(JsonOptions) const override
Amount specifier with an option for any issuer.
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
const SF_ACCOUNT sfOtherChainSource
std::string const & human() const
Returns the human readable public key.
constexpr std::size_t UT_XCHAIN_DEFAULT_QUORUM
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_modify(Account const &acc, Json::Value const &bridge, std::optional< STAmount > const &reward, std::optional< STAmount > const &minAccountCreate)
const SF_UINT8 sfWasLockingChainSend
Json::StaticString const & getJsonName() const
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)
A signer in a SignerList.
Json::Value bridge(Account const &lockingChainDoor, Issue const &lockingChainIssue, Account const &issuingChainDoor, Issue const &issuingChainIssue)
const SF_UINT64 sfXChainClaimID
Buffer sign_claim_attestation(PublicKey const &pk, SecretKey const &sk, STXChainBridge const &bridge, AccountID const &sendingAccount, STAmount const &sendingAmount, AccountID const &rewardAccount, bool wasLockingChainSend, std::uint64_t claimID, std::optional< AccountID > const &dst)
Json::Value xchain_claim(Account const &acc, Json::Value const &bridge, std::uint32_t claimID, AnyAmount const &amt, Account const &dst)
STAmount divide(STAmount const &amount, Rate const &rate)
const SF_AMOUNT sfSignatureReward
Json::Value signers(Account const &account, std::uint32_t quorum, std::vector< signer > const &v)
const SF_ISSUE sfLockingChainIssue
bool close(NetClock::time_point closeTime, std::optional< std::chrono::milliseconds > consensusDelay=std::nullopt)
Close and advance the ledger.
UInt size() const
Number of values in array or object.
const SF_ACCOUNT sfAttestationSignerAccount
FeatureBitset supported_amendments()
Set the regular signature on a JTx.
static const Account master
The master account.
const uint256 featureXChainBridge
constexpr std::size_t UT_XCHAIN_DEFAULT_NUM_SIGNERS
STAmount multiply(STAmount const &amount, Rate const &rate)
const SF_AMOUNT sfMinAccountCreateAmount
T emplace_back(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Json::Value xchain_create_claim_id(Account const &acc, Json::Value const &bridge, STAmount const &reward, Account const &otherChainSource)
Json::Value to_json(Issue const &is)
Json::Value sidechain_xchain_account_create(Account const &acc, Json::Value const &bridge, Account const &dst, AnyAmount const &amt, AnyAmount const &reward)
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
const SF_ACCOUNT sfOtherChainDestination
const SF_UINT64 sfXChainAccountCreateCount
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
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)
Immutable cryptographic account descriptor.
const SF_ACCOUNT sfAccount
const SF_ACCOUNT sfIssuingChainDoor
std::string strHex(FwdIt begin, FwdIt end)
const SF_ACCOUNT sfAttestationRewardAccount
SecretKey const & sk() const
Return the secret key.
constexpr std::uint32_t tfUniversal
const SF_ISSUE sfIssuingChainIssue
void createMcBridgeObjects(Env &mcEnv)
Json::Value bridge_create(Account const &acc, Json::Value const &bridge, STAmount const &reward, std::optional< STAmount > const &minAccountCreate)
const SF_XCHAIN_BRIDGE sfXChainBridge
PublicKey const & pk() const
Return the public key.
A transaction testing environment.
const std::vector< signer > signers