3#include <test/jtx/Account.h>
4#include <test/jtx/Env.h>
5#include <test/jtx/mpt.h>
7#include <xrpl/basics/Buffer.h>
8#include <xrpl/basics/base_uint.h>
9#include <xrpl/basics/contract.h>
10#include <xrpl/beast/unit_test/suite.h>
11#include <xrpl/protocol/ConfidentialTransfer.h>
12#include <xrpl/protocol/Protocol.h>
13#include <xrpl/protocol/TER.h>
14#include <xrpl/protocol/TxFlags.h>
37 return std::move(*value);
70 std::uint32_t flags = tfMPTCanLock | tfMPTCanHoldConfidentialBalance | tfMPTCanTransfer,
88 std::uint32_t flags = tfMPTCanTransfer | tfMPTCanHoldConfidentialBalance);
217 Buffer const& blindingFactor,
231 uint64_t claimedBalance,
232 uint64_t realBalance,
234 Buffer const& pedersenCommitment,
235 Buffer const& encryptedSpendingBalance,
236 Buffer const& pcBlindingFactor,
Like std::vector<char> but better.
static Buffer getForgedSingleBulletproof(uint64_t value, Buffer const &blindingFactor, UInt256 const &contextHash)
static constexpr size_t kBulletproofOffset
static Buffer getForgedSendProof(test::jtx::MPTTester &mpt, test::jtx::Env &env, test::jtx::Account const &sender, test::jtx::Account const &dest, ConfidentialSendSetup const &setup)
static std::optional< std::pair< Buffer, Buffer > > reencryptHolderBalances(test::jtx::MPTTester &mpt, test::jtx::Account const &holder, test::jtx::Account const ¤tKey, test::jtx::Account const &newKey)
static void setupConfidentialIssuance(test::jtx::MPTTester &mpt, test::jtx::Account const &issuer, std::vector< test::jtx::Account > const &holders, std::vector< test::jtx::Account > const &keyOwners={}, std::uint32_t flags=tfMPTCanTransfer|tfMPTCanHoldConfidentialBalance)
static T requireOptional(std::optional< T > value, char const *message)
static Buffer const & getBadCiphertext()
static void setupBatchEnv(test::jtx::MPTTester &mpt, test::jtx::Account const &alice, test::jtx::Account const &bob, test::jtx::Account const &carol, test::jtx::Account const &dave, std::uint64_t bobAmt, std::uint64_t carolAmt)
static T const & requireOptionalRef(std::optional< T > const &value, char const *message)
static Buffer getForgedBulletproof(std::array< uint64_t, 2 > const &values, std::array< Buffer, 2 > const &blindingFactors, UInt256 const &contextHash)
static std::string getTrivialSendProofHex()
static Buffer getForgedConvertBackProof(test::jtx::MPTTester &mpt, test::jtx::Account const &holder, uint64_t claimedBalance, uint64_t realBalance, uint64_t amt, Buffer const &pedersenCommitment, Buffer const &encryptedSpendingBalance, Buffer const &pcBlindingFactor, UInt256 const &contextHash)
static Buffer const & getTrivialCommitment()
static Buffer const & getTrivialCiphertext()
Immutable cryptographic account descriptor.
A transaction testing environment.
Test helper for creating, mutating, and asserting MPT and confidential MPT ledger state.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr std::size_t kEcDoubleBulletproofLength
Length of double bulletproof (range proof for 2 commitments) in bytes.
constexpr std::size_t kEcSendProofLength
192 bytes compact sigma proof + 754 bytes double bulletproof.
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
std::uint64_t convertAmount
test::jtx::Account account
static std::vector< test::jtx::Account > extractAccounts(std::vector< HolderInit > const &holders)
ConfidentialEnv(test::jtx::Env &env, test::jtx::Account const &issuer, std::vector< HolderInit > const &holders, std::uint32_t flags=tfMPTCanLock|tfMPTCanHoldConfidentialBalance|tfMPTCanTransfer, std::optional< test::jtx::Account > auditor=std::nullopt)
Buffer amountBlindingFactor
std::optional< Buffer > generateProof(test::jtx::MPTTester &mpt, test::jtx::Env &env, test::jtx::Account const &sender, test::jtx::Account const &dest) const
std::optional< Buffer > auditorPubKey
std::vector< ConfidentialRecipient > recipients
test::jtx::MPTConfidentialSend sendArgs(test::jtx::Account const &sender, test::jtx::Account const &dest, Buffer const &proof, std::optional< TER > err=std::nullopt) const
Buffer prevEncryptedSpending
ConfidentialSendSetup(test::jtx::MPTTester &mpt, test::jtx::Account const &sender, test::jtx::Account const &dest, test::jtx::Account const &issuer, uint64_t amount, std::optional< std::reference_wrapper< test::jtx::Account const > > auditor=std::nullopt)
std::optional< Buffer > auditorAmt
Buffer balanceBlindingFactor
Arguments for building a ConfidentialMPTSend test transaction.