1#include <test/jtx/paychan.h>
3#include <xrpl/basics/Buffer.h>
4#include <xrpl/basics/Slice.h>
5#include <xrpl/basics/base_uint.h>
6#include <xrpl/basics/chrono.h>
7#include <xrpl/basics/strHex.h>
8#include <xrpl/json/json_value.h>
9#include <xrpl/ledger/ReadView.h>
10#include <xrpl/protocol/AccountID.h>
11#include <xrpl/protocol/Indexes.h>
12#include <xrpl/protocol/LedgerFormats.h>
13#include <xrpl/protocol/PayChan.h>
14#include <xrpl/protocol/PublicKey.h>
15#include <xrpl/protocol/SField.h>
16#include <xrpl/protocol/STAmount.h>
17#include <xrpl/protocol/SecretKey.h>
18#include <xrpl/protocol/SeqProxy.h>
19#include <xrpl/protocol/Serializer.h>
20#include <xrpl/protocol/jss.h>
41 jv[jss::TransactionType] = jss::PaymentChannelCreate;
45 jv[jss::SettleDelay] = settleDelay.
count();
48 jv[sfCancelAfter.fieldName] = cancelAfter->time_since_epoch().count();
50 jv[sfDestinationTag.fieldName] = *dstTag;
62 jv[jss::TransactionType] = jss::PaymentChannelFund;
67 jv[sfExpiration.fieldName] = expiration->time_since_epoch().count();
81 jv[jss::TransactionType] = jss::PaymentChannelClaim;
89 jv[
"Signature"] =
strHex(*signature);
91 jv[
"PublicKey"] =
strHex(pk->slice());
106 auto const slep = view.
read({ltPAYCHAN, chan});
109 return (*slep)[sfBalance];
115 auto const slep = view.
read({ltPAYCHAN, chan});
118 return (*slep)[sfAmount];
124 auto const slep = view.
read({ltPAYCHAN, chan});
Like std::vector<char> but better.
std::chrono::duration< rep, period > duration
Slice slice() const noexcept
virtual SLE::const_pointer read(Keylet const &k) const =0
Return the state item associated with a key.
json::Value getJson(JsonOptions=JsonOptions::Values::None) const override
static constexpr SeqProxy rawSequence(std::uint32_t v)
Factory function to return a sequence-based SeqProxy.
Slice slice() const noexcept
Keylet payChannel(AccountID const &src, AccountID const &dst, SeqProxy const &seq) noexcept
A PaymentChannel.
json::Value fund(AccountID const &account, uint256 const &channel, STAmount const &amount, std::optional< NetClock::time_point > const &expiration)
STAmount channelBalance(ReadView const &view, uint256 const &chan)
json::Value create(AccountID const &account, AccountID const &to, STAmount const &amount, NetClock::duration const &settleDelay, PublicKey const &pk, std::optional< NetClock::time_point > const &cancelAfter, std::optional< std::uint32_t > const &dstTag)
uint256 channel(AccountID const &account, AccountID const &dst, std::uint32_t seqProxyValue)
json::Value claim(AccountID const &account, uint256 const &channel, std::optional< STAmount > const &balance, std::optional< STAmount > const &amount, std::optional< Slice > const &signature, std::optional< PublicKey > const &pk)
STAmount channelAmount(ReadView const &view, uint256 const &chan)
bool channelExists(ReadView const &view, uint256 const &chan)
Buffer signClaimAuth(PublicKey const &pk, SecretKey const &sk, uint256 const &channel, STAmount const &authAmt)
void sign(json::Value &jv, Account const &account, json::Value &sigObject, HashPrefix prefix)
Sign automatically into a specific Json field of the jv object.
constexpr XRPAmount
Convert XRP to drops (integral types).
void serializePayChanAuthorization(Serializer &msg, UInt256 const &key, XRPAmount const &amt)
std::string strHex(FwdIt begin, FwdIt end)
std::string to_string(BaseUInt< Bits, Tag > const &a)
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.