mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-25 16:20:58 +00:00
Compare commits
17 Commits
mvadari/ai
...
3.4.0-b1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0fdaf69e2c | ||
|
|
9d41b1bd1c | ||
|
|
f137d71510 | ||
|
|
8bc6e81c5f | ||
|
|
764cbe7c29 | ||
|
|
520650081b | ||
|
|
a097ccebae | ||
|
|
fe4ccdf750 | ||
|
|
046d4dd4af | ||
|
|
d27beef500 | ||
|
|
85512541ad | ||
|
|
3ab5288ef2 | ||
|
|
d0dbf9163c | ||
|
|
a1478fac39 | ||
|
|
cc76708563 | ||
|
|
422e5245e4 | ||
|
|
e3ba569187 |
@@ -366,6 +366,7 @@ words:
|
||||
- venv
|
||||
- vfalco
|
||||
- vinnie
|
||||
- vkeylet
|
||||
- wasmi
|
||||
- wextra
|
||||
- wptr
|
||||
|
||||
5
.github/actions/cargo-cache/action.yml
vendored
5
.github/actions/cargo-cache/action.yml
vendored
@@ -20,9 +20,10 @@ inputs:
|
||||
required: false
|
||||
default: ""
|
||||
save-if:
|
||||
description: "Condition for saving the cache after the job."
|
||||
description: >
|
||||
Condition for saving the cache after the job. Defaults to save only from develop branch
|
||||
required: false
|
||||
default: "true"
|
||||
default: ${{ github.ref == 'refs/heads/develop' }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
|
||||
@@ -167,7 +167,6 @@ jobs:
|
||||
with:
|
||||
cache-directories: ${{ env.BUILD_DIR }}/corrosion
|
||||
key: ${{ inputs.config_name }}
|
||||
save-if: ${{ github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/release') }}
|
||||
# two workspaces here because build artifacts are located in 2 places:
|
||||
# - crates/target when cargo is called directly
|
||||
# - build/cargo when cargo is called by cmake
|
||||
|
||||
1
.github/workflows/reusable-clang-tidy.yml
vendored
1
.github/workflows/reusable-clang-tidy.yml
vendored
@@ -63,7 +63,6 @@ jobs:
|
||||
uses: ./.github/actions/cargo-cache
|
||||
with:
|
||||
cache-directories: ${{ env.BUILD_DIR }}/corrosion
|
||||
save-if: ${{ github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/release') }}
|
||||
workspaces: crates -> ../${{ env.BUILD_DIR }}/cargo
|
||||
|
||||
- name: Setup Conan
|
||||
|
||||
@@ -54,6 +54,9 @@ This section contains changes targeting a future version.
|
||||
- `submit`: The `fail_hard` field now returns an error if the value is not a boolean. [#6529](https://github.com/XRPLF/rippled/pull/6529)
|
||||
- `subscribe`: The `taker` field in the `books` array now returns `actMalformed` instead of `badIssuer` if the value is not a valid account. [#6529](https://github.com/XRPLF/rippled/pull/6529)
|
||||
- Fixed a bug in `Forwarded` HTTP header parsing where the extracted IP address could be incorrect when no comma or semicolon delimiter follows the address. This could cause the server to misidentify a client's IP address when operating behind a reverse proxy. [#6529](https://github.com/XRPLF/rippled/pull/6529)
|
||||
- `vault_info`: Errors now identify what the request got wrong instead of reporting every failure as the unregistered token `malformedRequest`, and the `error`, `error_code` and `error_message` fields now agree with each other. An invalid `vault_id` or `seq` returns `invalidParams`, an invalid `owner` returns `actMalformed`, and a request that mixes `vault_id` with `owner`/`seq` or supplies neither returns `invalidParams` with a message naming the accepted combinations. [#8015](https://github.com/XRPLF/rippled/pull/8015)
|
||||
- `vault_info`: A well-formed all-zero `vault_id` now returns `entryNotFound` instead of being rejected as malformed, and `entryNotFound` responses now include `error_code` and `error_message`. Clients that request `ripplerpc` 3.0 or above therefore receive HTTP 400 with that error rather than HTTP 200. [#8015](https://github.com/XRPLF/rippled/pull/8015)
|
||||
- `vault_info`: `vault_id` and `owner` must now be strings, matching how `ledger_entry` reads the same fields. An object or an array in either field previously produced an internal error, and a number was silently converted to its decimal text; `vault_id` now returns `invalidParams` and `owner` returns `actMalformed`. [#8015](https://github.com/XRPLF/rippled/pull/8015)
|
||||
- `gateway_balances`: The `account` and `ident` fields now return an `invalidParams` error if the value is not a string, instead of an `internal` error. [#7655](https://github.com/XRPLF/rippled/pull/7655)
|
||||
- `account_lines`: The `peer` field now returns an error if the value is not a string. [#7728](https://github.com/XRPLF/rippled/pull/7728)
|
||||
|
||||
|
||||
@@ -1094,8 +1094,8 @@
|
||||
# Default is 100.
|
||||
#
|
||||
# back_off_milliseconds
|
||||
# Number of milliseconds to wait between
|
||||
# online_delete batches to allow other functions
|
||||
# Number of milliseconds to wait between online_delete
|
||||
# SQL deletion batches to allow other functions
|
||||
# to catch up.
|
||||
# Default is 100.
|
||||
#
|
||||
@@ -1109,10 +1109,22 @@
|
||||
# The online delete process checks periodically
|
||||
# that xrpld is still in sync with the network,
|
||||
# and that the validated ledger is less than
|
||||
# 'age_threshold_seconds' old. If not, then continue
|
||||
# 'age_threshold_seconds' old, and that all
|
||||
# recent ledgers are available. If not, then continue
|
||||
# sleeping for this number of seconds and
|
||||
# checking until healthy.
|
||||
# Default is 5.
|
||||
# Default is 2.
|
||||
#
|
||||
# max_waiting_ledgers
|
||||
# The maximum number of ledgers that may be validated
|
||||
# while online deletion is waiting for the node to get
|
||||
# fully synced with the rest of the network. If more than
|
||||
# this number of ledgers are validated while waiting, then
|
||||
# online deletion gives up on the current ledger and tries
|
||||
# again later. Note this only affects situations that cause
|
||||
# rotation to wait, such as going out of sync, or missing
|
||||
# ledgers. Forward progress is not penalized. Minimum is 64.
|
||||
# Default is the online_delete value.
|
||||
#
|
||||
# Notes:
|
||||
# The 'node_db' entry configures the primary, persistent storage.
|
||||
|
||||
@@ -8,6 +8,7 @@ Uses pcpp to preprocess the macro file and pyparsing to parse the DSL.
|
||||
|
||||
import io
|
||||
import argparse
|
||||
import re
|
||||
from pathlib import Path
|
||||
import pyparsing as pp
|
||||
|
||||
@@ -53,28 +54,89 @@ def create_transaction_parser():
|
||||
return macro_parser
|
||||
|
||||
|
||||
# Defaults for xrpl::TxSettings members, mirroring
|
||||
# include/xrpl/protocol/TxSettings.h. A transaction's settings blob only names
|
||||
# the members that differ from these.
|
||||
SETTING_DEFAULTS = {
|
||||
"delegable": "Delegation::NotDelegable",
|
||||
"amendment": "uint256{}",
|
||||
"privileges": "Privilege::NoPriv",
|
||||
}
|
||||
|
||||
|
||||
def parse_settings(settings_str):
|
||||
"""Parse a TxSettings blob into a dict, filling in defaults.
|
||||
|
||||
Args:
|
||||
settings_str: A string like '({.delegable = Delegation::NotDelegable,
|
||||
.privileges = Privilege::CreateAcct})', or '({})'.
|
||||
|
||||
Returns:
|
||||
A dict with a value for every key in SETTING_DEFAULTS.
|
||||
"""
|
||||
body = settings_str.strip()
|
||||
if not (body.startswith("(") and body.endswith(")")):
|
||||
raise ValueError(
|
||||
f"Malformed settings blob, expected '({{...}})': {settings_str!r}"
|
||||
)
|
||||
body = body[1:-1].strip()
|
||||
if not (body.startswith("{") and body.endswith("}")):
|
||||
raise ValueError(
|
||||
f"Malformed settings blob, expected '({{...}})': {settings_str!r}"
|
||||
)
|
||||
body = body[1:-1]
|
||||
|
||||
# Strip comments, which may be interleaved with the designated initializers.
|
||||
body = re.sub(r"//[^\n]*", "", body)
|
||||
|
||||
settings = dict(SETTING_DEFAULTS)
|
||||
seen = set()
|
||||
# Each entry runs from '.key =' up to the next '.key =' or the end.
|
||||
for key, value in re.findall(
|
||||
r"\.(\w+)\s*=\s*(.*?)(?=,\s*\.\w+\s*=|,?\s*$)", body, re.S
|
||||
):
|
||||
if key not in SETTING_DEFAULTS:
|
||||
raise ValueError(f"Unknown TxSettings member '.{key}' in {settings_str!r}")
|
||||
settings[key] = " ".join(value.split()).rstrip(",")
|
||||
seen.add(key)
|
||||
|
||||
# Catch a typo'd or unparsed initializer rather than silently defaulting it.
|
||||
# Every '.member' in the blob must have been consumed above.
|
||||
if len(re.findall(r"\.\w+", body)) != len(seen):
|
||||
raise ValueError(f"Could not parse every setting in {settings_str!r}")
|
||||
|
||||
# A blob with content but no designated initializer is positional, which
|
||||
# would otherwise be read as "all defaults" and silently generate the
|
||||
# wrong output.
|
||||
if body.strip() and not seen:
|
||||
raise ValueError(
|
||||
"TxSettings requires designated initializers (.member = value), "
|
||||
f"got {settings_str!r}"
|
||||
)
|
||||
|
||||
return settings
|
||||
|
||||
|
||||
def parse_transaction_args(args_list):
|
||||
"""Parse the arguments of a TRANSACTION macro call.
|
||||
|
||||
Args:
|
||||
args_list: A list of parsed arguments from pyparsing, e.g.,
|
||||
['ttPAYMENT', '0', 'Payment', 'Delegation::delegable',
|
||||
'uint256{}', 'createAcct', '({...})']
|
||||
['ttPAYMENT', '0', 'Payment',
|
||||
'({.privileges = Privilege::CreateAcct})', '({...})']
|
||||
|
||||
Returns:
|
||||
A dict with parsed transaction information.
|
||||
"""
|
||||
if len(args_list) < 7:
|
||||
if len(args_list) < 5:
|
||||
raise ValueError(
|
||||
f"Expected at least 7 parts in TRANSACTION, got {len(args_list)}: {args_list}"
|
||||
f"Expected at least 5 parts in TRANSACTION, got {len(args_list)}: {args_list}"
|
||||
)
|
||||
|
||||
tag = args_list[0]
|
||||
value = args_list[1]
|
||||
name = args_list[2]
|
||||
delegable = args_list[3]
|
||||
amendments = args_list[4]
|
||||
privileges = args_list[5]
|
||||
settings = parse_settings(args_list[3])
|
||||
fields_str = args_list[-1]
|
||||
|
||||
# Parse fields: ({field1, field2, ...})
|
||||
@@ -84,9 +146,9 @@ def parse_transaction_args(args_list):
|
||||
"tag": tag,
|
||||
"value": value,
|
||||
"name": name,
|
||||
"delegable": delegable,
|
||||
"amendments": amendments,
|
||||
"privileges": privileges,
|
||||
"delegable": settings["delegable"],
|
||||
"amendments": settings["amendment"],
|
||||
"privileges": settings["privileges"],
|
||||
"fields": fields,
|
||||
}
|
||||
|
||||
|
||||
@@ -92,11 +92,11 @@ wherever it appears in the repository configuration.
|
||||
2. Add the repository, using the channel you picked in [Release channels](#release-channels):
|
||||
|
||||
```bash
|
||||
cat << REPOFILE | sudo tee /etc/yum.repos.d/xrplf.repo
|
||||
cat << 'REPOFILE' | sudo tee /etc/yum.repos.d/xrplf.repo
|
||||
[xrplf-stable]
|
||||
name=XRP Ledger Packages
|
||||
enabled=1
|
||||
baseurl=https://packages.xrplf.org/repository/rpm-stable/
|
||||
baseurl=https://packages.xrplf.org/repository/rpm-stable/$basearch/
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgkey=https://packages.xrplf.org/xrplf.asc
|
||||
|
||||
@@ -125,6 +125,7 @@ struct Keys
|
||||
static constexpr auto kMaximumTxnInLedger = "maximum_txn_in_ledger";
|
||||
static constexpr auto kMaximumTxnPerAccount = "maximum_txn_per_account";
|
||||
static constexpr auto kMemoryLevel = "memory_level";
|
||||
static constexpr auto kMaxWaitingLedgers = "max_waiting_ledgers";
|
||||
static constexpr auto kMinLedgersToComputeSizeLimit = "min_ledgers_to_compute_size_limit";
|
||||
static constexpr auto kMinimumEscalationMultiplier = "minimum_escalation_multiplier";
|
||||
static constexpr auto kMinimumLastLedgerBuffer = "minimum_last_ledger_buffer";
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <optional>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
namespace xrpl {
|
||||
|
||||
@@ -198,7 +199,10 @@ dirLink(
|
||||
* if withdrawing to self.
|
||||
* - If withdrawing to self, succeed.
|
||||
* - If not, checks if the receiver requires deposit authorization, and if
|
||||
* the sender has it.
|
||||
* the sender has it (account-based or credential-based).
|
||||
* - Expects any credentials passed in to already exist in the ledger, and
|
||||
* returns an internal error otherwise. Validate them beforehand with
|
||||
* credentials::valid().
|
||||
* - Checks that the receiver will not exceed the limit (IOU trustline limit
|
||||
* or MPT MaximumAmount).
|
||||
*/
|
||||
@@ -209,7 +213,8 @@ canWithdraw(
|
||||
AccountID const& to,
|
||||
SLE::const_ref toSle,
|
||||
STAmount const& amount,
|
||||
bool hasDestinationTag);
|
||||
bool hasDestinationTag,
|
||||
std::optional<std::vector<uint256>> const& credentialIDs = std::nullopt);
|
||||
|
||||
/**
|
||||
* Checks that can withdraw funds from an object to itself or a destination.
|
||||
@@ -222,7 +227,10 @@ canWithdraw(
|
||||
* if withdrawing to self.
|
||||
* - If withdrawing to self, succeed.
|
||||
* - If not, checks if the receiver requires deposit authorization, and if
|
||||
* the sender has it.
|
||||
* the sender has it (account-based or credential-based).
|
||||
* - Expects any credentials passed in to already exist in the ledger, and
|
||||
* returns an internal error otherwise. Validate them beforehand with
|
||||
* credentials::valid().
|
||||
* - Checks that the receiver will not exceed the limit (IOU trustline limit
|
||||
* or MPT MaximumAmount).
|
||||
*/
|
||||
@@ -232,20 +240,25 @@ canWithdraw(
|
||||
AccountID const& from,
|
||||
AccountID const& to,
|
||||
STAmount const& amount,
|
||||
bool hasDestinationTag);
|
||||
bool hasDestinationTag,
|
||||
std::optional<std::vector<uint256>> const& credentialIDs = std::nullopt);
|
||||
|
||||
/**
|
||||
* Checks that can withdraw funds from an object to itself or a destination.
|
||||
*
|
||||
* The receiver may be either the submitting account (sfAccount) or a different
|
||||
* destination account (sfDestination).
|
||||
* destination account (sfDestination). Credentials, if any, are taken from the
|
||||
* transaction's sfCredentialIDs field.
|
||||
*
|
||||
* - Checks that the receiver account exists.
|
||||
* - If the receiver requires a destination tag, check that one exists, even
|
||||
* if withdrawing to self.
|
||||
* - If withdrawing to self, succeed.
|
||||
* - If not, checks if the receiver requires deposit authorization, and if
|
||||
* the sender has it.
|
||||
* the sender has it (account-based or credential-based).
|
||||
* - Expects any credentials in sfCredentialIDs to already exist in the
|
||||
* ledger, and returns an internal error otherwise. Validate them
|
||||
* beforehand with credentials::valid().
|
||||
* - Checks that the receiver will not exceed the limit (IOU trustline limit
|
||||
* or MPT MaximumAmount).
|
||||
*/
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <xrpl/protocol/STVector256.h>
|
||||
#include <xrpl/protocol/TER.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
@@ -33,6 +34,32 @@ checkExpired(SLE const& sleCredential, NetClock::time_point const& closed);
|
||||
[[nodiscard]] TER
|
||||
deleteSLE(ApplyView& view, SLE::ref sleCredential, beast::Journal j);
|
||||
|
||||
/**
|
||||
* @brief Remove credentials pinned to a pseudo-account's owner directory.
|
||||
*
|
||||
* Cleans up credentials that were linked to a pseudo-account (Vault, LoanBroker,
|
||||
* AMM), which such an account can neither accept nor delete. Only credentials
|
||||
* are removed; every other object is left in place. The walk visits at most
|
||||
* @p maxNodesToDelete directory entries and charges the ones it leaves alone
|
||||
* against that budget too, so a directory holding other objects yields fewer
|
||||
* than @p maxNodesToDelete deletions. On reaching the bound the result is
|
||||
* `tecINCOMPLETE` and the caller must propagate it so a later transaction
|
||||
* resumes.
|
||||
*
|
||||
* @param view Mutable ledger view.
|
||||
* @param pseudoAcct The pseudo-account whose directory is cleaned.
|
||||
* @param maxNodesToDelete Upper bound on directory entries processed in one call.
|
||||
* @param j Journal for diagnostics.
|
||||
* @return tesSUCCESS once no credentials remain, tecINCOMPLETE if the bound was
|
||||
* reached, or a deletion error.
|
||||
*/
|
||||
[[nodiscard]] TER
|
||||
deletePseudoAccountCredentials(
|
||||
ApplyView& view,
|
||||
AccountID const& pseudoAcct,
|
||||
std::uint16_t maxNodesToDelete,
|
||||
beast::Journal j);
|
||||
|
||||
// Amendment and parameters checks for sfCredentialIDs field
|
||||
NotTEC
|
||||
checkFields(STTx const& tx, Rules const& rules, beast::Journal j);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <xrpl/protocol/Protocol.h>
|
||||
#include <xrpl/protocol/STAmount.h>
|
||||
#include <xrpl/protocol/STLedgerEntry.h>
|
||||
#include <xrpl/protocol/TER.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
@@ -238,4 +239,40 @@ getVaultPhase(
|
||||
std::optional<std::uint32_t> subscriptionDate,
|
||||
std::optional<std::uint32_t> redemptionDate);
|
||||
|
||||
/**
|
||||
* Controls whether checkVaultDomain reports an expired credential as an
|
||||
* error. A caller that deletes expired credentials later, in doApply, passes
|
||||
* Yes and treats the subject as authorized; a caller with no such cleanup
|
||||
* step must keep the error.
|
||||
*/
|
||||
enum class SuppressExpired : bool { No = false, Yes = true };
|
||||
|
||||
/**
|
||||
* Checks that subject belongs to the permissioned domain governing a vault's
|
||||
* shares.
|
||||
*
|
||||
* The domain is read from the share issuance rather than from the vault. Vault
|
||||
* shares are issued by the vault's pseudo-account, which cannot grant an
|
||||
* authorization explicitly, so domain membership is the only route to being
|
||||
* authorized: a vault with no domain set has no authorized participants at
|
||||
* all, and every subject fails with tecNO_AUTH.
|
||||
*
|
||||
* Which accounts to check, and whether to check at all, is left to the caller.
|
||||
* This says nothing about vault privacy or about the roles of the accounts.
|
||||
*
|
||||
* @param view The ledger view.
|
||||
* @param issuance The MPTokenIssuance SLE for the vault's shares.
|
||||
* @param subject The account whose domain membership is checked.
|
||||
* @param suppressExpired Whether an expired credential counts as authorized.
|
||||
*
|
||||
* @return tesSUCCESS if the subject is a domain member, otherwise the reason
|
||||
* it is not.
|
||||
*/
|
||||
[[nodiscard]] TER
|
||||
checkVaultDomain(
|
||||
ReadView const& view,
|
||||
SLE::const_ref issuance,
|
||||
AccountID const& subject,
|
||||
SuppressExpired suppressExpired);
|
||||
|
||||
} // namespace xrpl
|
||||
|
||||
@@ -91,6 +91,17 @@ getFee(std::uint16_t tfee)
|
||||
return Number{tfee} / kAuctionSlotFeeScaleFactor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Minimum auction slot price: LPTokens * TradingFee / kAuctionSlotMinFeeFraction
|
||||
* @param lptAMMBalance AMM LP token balance
|
||||
* @param tradingFee trading fee in {0, 1000}
|
||||
*/
|
||||
inline Number
|
||||
ammAuctionMinSlotPrice(Number const& lptAMMBalance, std::uint16_t tradingFee)
|
||||
{
|
||||
return lptAMMBalance * getFee(tradingFee) / kAuctionSlotMinFeeFraction;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get fee multiplier (1 - tfee)
|
||||
* @tfee trading fee in basis points
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <xrpl/protocol/Rules.h>
|
||||
#include <xrpl/protocol/SOTemplate.h>
|
||||
#include <xrpl/protocol/TxFormats.h>
|
||||
#include <xrpl/protocol/TxSettings.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
@@ -38,11 +39,6 @@ enum GranularPermissionType : std::uint32_t {
|
||||
#pragma pop_macro("GRANULAR_PERMISSION")
|
||||
};
|
||||
|
||||
// Injected bare enumerators (xrpl::delegable / xrpl::notDelegable) are required by preprocessor
|
||||
// tricks in tests and macro-generated code; enum class would break that.
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-use-enum-class)
|
||||
enum Delegation { Delegable, NotDelegable };
|
||||
|
||||
class Permission
|
||||
{
|
||||
private:
|
||||
@@ -65,7 +61,7 @@ private:
|
||||
struct TxDelegationEntry
|
||||
{
|
||||
uint256 amendment;
|
||||
Delegation delegable{NotDelegable};
|
||||
Delegation delegable{Delegation::NotDelegable};
|
||||
};
|
||||
|
||||
std::unordered_set<TxType> granularTxTypes_;
|
||||
|
||||
@@ -396,6 +396,16 @@ using TxID = uint256;
|
||||
*/
|
||||
constexpr std::uint16_t kMaxDeletableAmmTrustLines = 512;
|
||||
|
||||
/**
|
||||
* The maximum number of owner-directory entries to walk when clearing
|
||||
* credentials pinned to a pseudo-account, in a single transaction.
|
||||
*
|
||||
* The walk stops after this many entries whether or not each one turns out to
|
||||
* be a credential, so a directory that also holds other objects yields fewer
|
||||
* deletions per transaction.
|
||||
*/
|
||||
constexpr std::uint16_t kMaxDeletablePseudoAccountCredentials = 512;
|
||||
|
||||
/**
|
||||
* The maximum length of a URI inside an Oracle
|
||||
*/
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace xrpl {
|
||||
|
||||
class Rules;
|
||||
namespace test {
|
||||
class Invariants_test;
|
||||
class InvariantsMisc_test;
|
||||
} // namespace test
|
||||
|
||||
class STLedgerEntry final : public STObject, public CountedObject<STLedgerEntry>
|
||||
@@ -83,8 +83,8 @@ private:
|
||||
void
|
||||
setSLEType();
|
||||
|
||||
friend test::Invariants_test; // this test wants access to the private
|
||||
// type_
|
||||
friend test::InvariantsMisc_test; // this test wants access to the
|
||||
// private type_
|
||||
|
||||
STBase*
|
||||
copy(std::size_t n, void* buf) const override;
|
||||
|
||||
96
include/xrpl/protocol/TxSettings.h
Normal file
96
include/xrpl/protocol/TxSettings.h
Normal file
@@ -0,0 +1,96 @@
|
||||
#pragma once
|
||||
|
||||
#include <xrpl/basics/base_uint.h>
|
||||
#include <xrpl/basics/safe_cast.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <type_traits>
|
||||
|
||||
namespace xrpl {
|
||||
|
||||
enum class Delegation { Delegable, NotDelegable };
|
||||
|
||||
/**
|
||||
* Operations a transaction is permitted to perform, as a bitfield.
|
||||
*
|
||||
* These are declared per-transaction in transactions.macro (via
|
||||
* TxSettings::privileges) and enforced in InvariantCheck.cpp.
|
||||
*/
|
||||
enum class Privilege : std::uint16_t {
|
||||
NoPriv = 0x0000, // The transaction can not do any of the enumerated operations
|
||||
CreateAcct = 0x0001, // The transaction can create a new ACCOUNT_ROOT object.
|
||||
CreatePseudoAcct = 0x0002, // The transaction can create a pseudo account,
|
||||
// which implies createAcct
|
||||
MustDeleteAcct = 0x0004, // The transaction must delete an ACCOUNT_ROOT object
|
||||
MayDeleteAcct = 0x0008, // The transaction may delete an ACCOUNT_ROOT
|
||||
// object, but does not have to
|
||||
OverrideFreeze = 0x0010, // The transaction can override some freeze rules
|
||||
ChangeNftCounts = 0x0020, // The transaction can mint or burn an NFT
|
||||
CreateMptIssuance = 0x0040, // The transaction can create a new MPT issuance
|
||||
DestroyMptIssuance = 0x0080, // The transaction can destroy an MPT issuance
|
||||
MustAuthorizeMpt = 0x0100, // The transaction MUST create or delete an MPT
|
||||
// object (except by issuer)
|
||||
MayAuthorizeMpt = 0x0200, // The transaction MAY create or delete an MPT
|
||||
// object (except by issuer)
|
||||
MayDeleteMpt = 0x0400, // The transaction MAY delete an MPT object. May not create.
|
||||
MustModifyVault = 0x0800, // The transaction must modify, delete or create, a vault
|
||||
MayModifyVault = 0x1000, // The transaction MAY modify, delete or create, a vault
|
||||
MayCreateMpt = 0x2000, // The transaction MAY create an MPT object, except for issuer.
|
||||
};
|
||||
|
||||
// The inner static_cast is not redundant: the underlying type is narrower than
|
||||
// `int`, so the operands integer-promote and the result has to be narrowed back.
|
||||
// safeCast rejects that narrowing, but every input bit is a Privilege bit by
|
||||
// construction, so the result is always representable.
|
||||
constexpr Privilege
|
||||
operator|(Privilege lhs, Privilege rhs)
|
||||
{
|
||||
using Underlying = std::underlying_type_t<Privilege>;
|
||||
return static_cast<Privilege>(
|
||||
static_cast<Underlying>(safeCast<Underlying>(lhs) | safeCast<Underlying>(rhs)));
|
||||
}
|
||||
|
||||
constexpr Privilege
|
||||
operator&(Privilege lhs, Privilege rhs)
|
||||
{
|
||||
using Underlying = std::underlying_type_t<Privilege>;
|
||||
return static_cast<Privilege>(
|
||||
static_cast<Underlying>(safeCast<Underlying>(lhs) & safeCast<Underlying>(rhs)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Per-transaction metadata declared in transactions.macro.
|
||||
*
|
||||
* Every member has a default, so a transaction only needs to name the settings
|
||||
* that differ from the common case. See the documentation at the top of
|
||||
* transactions.macro for the authoring syntax.
|
||||
*
|
||||
* This is deliberately not a constexpr-friendly type: amendment identifiers are
|
||||
* runtime-initialized `extern uint256 const` globals (see Feature.h), so a
|
||||
* TxSettings can only be built at runtime.
|
||||
*/
|
||||
struct TxSettings
|
||||
{
|
||||
/**
|
||||
* Whether an account may delegate this transaction to another account.
|
||||
*/
|
||||
Delegation delegable{Delegation::NotDelegable};
|
||||
|
||||
/**
|
||||
* The amendment gating this transaction, or uint256{} if always available.
|
||||
*/
|
||||
// The `{}` looks redundant, because BaseUInt's default constructor already
|
||||
// zeroes the value. It is not: without a default member initializer here,
|
||||
// every partial designated initializer in transactions.macro trips the
|
||||
// missing-designated-field-initializers warning, which the build treats as
|
||||
// an error.
|
||||
// NOLINTNEXTLINE(readability-redundant-member-init)
|
||||
uint256 amendment{};
|
||||
|
||||
/**
|
||||
* Operations this transaction is permitted to perform.
|
||||
*/
|
||||
Privilege privileges{Privilege::NoPriv};
|
||||
};
|
||||
|
||||
} // namespace xrpl
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,7 @@ class AMMBidBuilder;
|
||||
* Type: ttAMM_BID (39)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMBidBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMClawbackBuilder;
|
||||
* Type: ttAMM_CLAWBACK (31)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMMClawback
|
||||
* Privileges: MayDeleteAcct | OverrideFreeze | MayAuthorizeMpt
|
||||
* Privileges: Privilege::MayDeleteAcct | Privilege::OverrideFreeze | Privilege::MayAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMClawbackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMCreateBuilder;
|
||||
* Type: ttAMM_CREATE (35)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: CreatePseudoAcct | MayCreateMpt
|
||||
* Privileges: Privilege::CreatePseudoAcct | Privilege::MayCreateMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMDeleteBuilder;
|
||||
* Type: ttAMM_DELETE (40)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: MustDeleteAcct | MayDeleteMpt
|
||||
* Privileges: Privilege::MustDeleteAcct | Privilege::MayDeleteMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMDepositBuilder;
|
||||
* Type: ttAMM_DEPOSIT (36)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMDepositBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMVoteBuilder;
|
||||
* Type: ttAMM_VOTE (38)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMVoteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AMMWithdrawBuilder;
|
||||
* Type: ttAMM_WITHDRAW (37)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureAMM
|
||||
* Privileges: MayDeleteAcct | MayAuthorizeMpt
|
||||
* Privileges: Privilege::MayDeleteAcct | Privilege::MayAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AMMWithdrawBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AccountDeleteBuilder;
|
||||
* Type: ttACCOUNT_DELETE (21)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: MustDeleteAcct
|
||||
* Privileges: Privilege::MustDeleteAcct
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AccountDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class AccountSetBuilder;
|
||||
* Type: ttACCOUNT_SET (3)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use AccountSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class BatchBuilder;
|
||||
* Type: ttBATCH (71)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureBatchV1_1
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use BatchBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CheckCancelBuilder;
|
||||
* Type: ttCHECK_CANCEL (18)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CheckCancelBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CheckCashBuilder;
|
||||
* Type: ttCHECK_CASH (17)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: MayCreateMpt
|
||||
* Privileges: Privilege::MayCreateMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CheckCashBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CheckCreateBuilder;
|
||||
* Type: ttCHECK_CREATE (16)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CheckCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ClawbackBuilder;
|
||||
* Type: ttCLAWBACK (30)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ClawbackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ConfidentialMPTClawbackBuilder;
|
||||
* Type: ttCONFIDENTIAL_MPT_CLAWBACK (89)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureConfidentialTransfer
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ConfidentialMPTClawbackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ConfidentialMPTConvertBuilder;
|
||||
* Type: ttCONFIDENTIAL_MPT_CONVERT (85)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureConfidentialTransfer
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ConfidentialMPTConvertBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ConfidentialMPTConvertBackBuilder;
|
||||
* Type: ttCONFIDENTIAL_MPT_CONVERT_BACK (87)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureConfidentialTransfer
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ConfidentialMPTConvertBackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ConfidentialMPTMergeInboxBuilder;
|
||||
* Type: ttCONFIDENTIAL_MPT_MERGE_INBOX (86)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureConfidentialTransfer
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ConfidentialMPTMergeInboxBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class ConfidentialMPTSendBuilder;
|
||||
* Type: ttCONFIDENTIAL_MPT_SEND (88)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureConfidentialTransfer
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use ConfidentialMPTSendBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CredentialAcceptBuilder;
|
||||
* Type: ttCREDENTIAL_ACCEPT (59)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureCredentials
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CredentialAcceptBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CredentialCreateBuilder;
|
||||
* Type: ttCREDENTIAL_CREATE (58)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureCredentials
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CredentialCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class CredentialDeleteBuilder;
|
||||
* Type: ttCREDENTIAL_DELETE (60)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureCredentials
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use CredentialDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class DIDDeleteBuilder;
|
||||
* Type: ttDID_DELETE (50)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureDID
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use DIDDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class DIDSetBuilder;
|
||||
* Type: ttDID_SET (49)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureDID
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use DIDSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class DelegateSetBuilder;
|
||||
* Type: ttDELEGATE_SET (64)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featurePermissionDelegationV1_1
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use DelegateSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class DepositPreauthBuilder;
|
||||
* Type: ttDEPOSIT_PREAUTH (19)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use DepositPreauthBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class EnableAmendmentBuilder;
|
||||
* Type: ttAMENDMENT (100)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use EnableAmendmentBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class EscrowCancelBuilder;
|
||||
* Type: ttESCROW_CANCEL (4)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use EscrowCancelBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class EscrowCreateBuilder;
|
||||
* Type: ttESCROW_CREATE (1)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use EscrowCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class EscrowFinishBuilder;
|
||||
* Type: ttESCROW_FINISH (2)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use EscrowFinishBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LedgerStateFixBuilder;
|
||||
* Type: ttLEDGER_STATE_FIX (53)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: fixNFTokenPageLinks
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LedgerStateFixBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanBrokerCoverClawbackBuilder;
|
||||
* Type: ttLOAN_BROKER_COVER_CLAWBACK (78)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanBrokerCoverClawbackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanBrokerCoverDepositBuilder;
|
||||
* Type: ttLOAN_BROKER_COVER_DEPOSIT (76)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanBrokerCoverDepositBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanBrokerCoverWithdrawBuilder;
|
||||
* Type: ttLOAN_BROKER_COVER_WITHDRAW (77)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: MayAuthorizeMpt
|
||||
* Privileges: Privilege::MayAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanBrokerCoverWithdrawBuilder to construct new transactions.
|
||||
@@ -121,6 +121,32 @@ public:
|
||||
{
|
||||
return this->tx_->isFieldPresent(sfDestinationTag);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get sfCredentialIDs (SoeOptional)
|
||||
* @return The field value, or std::nullopt if not present.
|
||||
*/
|
||||
[[nodiscard]]
|
||||
protocol_autogen::Optional<SF_VECTOR256::type::value_type>
|
||||
getCredentialIDs() const
|
||||
{
|
||||
if (hasCredentialIDs())
|
||||
{
|
||||
return this->tx_->at(sfCredentialIDs);
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if sfCredentialIDs is present.
|
||||
* @return True if the field is present, false otherwise.
|
||||
*/
|
||||
[[nodiscard]]
|
||||
bool
|
||||
hasCredentialIDs() const
|
||||
{
|
||||
return this->tx_->isFieldPresent(sfCredentialIDs);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -214,6 +240,17 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set sfCredentialIDs (SoeOptional)
|
||||
* @return Reference to this builder for method chaining.
|
||||
*/
|
||||
LoanBrokerCoverWithdrawBuilder&
|
||||
setCredentialIDs(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||
{
|
||||
object_[sfCredentialIDs] = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Build and return the LoanBrokerCoverWithdraw wrapper.
|
||||
* @param publicKey The public key for signing.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanBrokerDeleteBuilder;
|
||||
* Type: ttLOAN_BROKER_DELETE (75)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: MustDeleteAcct | MayAuthorizeMpt
|
||||
* Privileges: Privilege::MustDeleteAcct | Privilege::MayAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanBrokerDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanBrokerSetBuilder;
|
||||
* Type: ttLOAN_BROKER_SET (74)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: CreatePseudoAcct | MayAuthorizeMpt
|
||||
* Privileges: Privilege::CreatePseudoAcct | Privilege::MayAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanBrokerSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanDeleteBuilder;
|
||||
* Type: ttLOAN_DELETE (81)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanManageBuilder;
|
||||
* Type: ttLOAN_MANAGE (82)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: MayModifyVault
|
||||
* Privileges: Privilege::MayModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanManageBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanPayBuilder;
|
||||
* Type: ttLOAN_PAY (84)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: MayAuthorizeMpt | MustModifyVault
|
||||
* Privileges: Privilege::MayAuthorizeMpt | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanPayBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class LoanSetBuilder;
|
||||
* Type: ttLOAN_SET (80)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureLendingProtocol
|
||||
* Privileges: MayAuthorizeMpt | MustModifyVault
|
||||
* Privileges: Privilege::MayAuthorizeMpt | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use LoanSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class MPTokenAuthorizeBuilder;
|
||||
* Type: ttMPTOKEN_AUTHORIZE (57)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureMPTokensV1
|
||||
* Privileges: MustAuthorizeMpt
|
||||
* Privileges: Privilege::MustAuthorizeMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use MPTokenAuthorizeBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class MPTokenIssuanceCreateBuilder;
|
||||
* Type: ttMPTOKEN_ISSUANCE_CREATE (54)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureMPTokensV1
|
||||
* Privileges: CreateMptIssuance
|
||||
* Privileges: Privilege::CreateMptIssuance
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use MPTokenIssuanceCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class MPTokenIssuanceDestroyBuilder;
|
||||
* Type: ttMPTOKEN_ISSUANCE_DESTROY (55)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureMPTokensV1
|
||||
* Privileges: DestroyMptIssuance
|
||||
* Privileges: Privilege::DestroyMptIssuance
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use MPTokenIssuanceDestroyBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class MPTokenIssuanceSetBuilder;
|
||||
* Type: ttMPTOKEN_ISSUANCE_SET (56)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureMPTokensV1
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use MPTokenIssuanceSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenAcceptOfferBuilder;
|
||||
* Type: ttNFTOKEN_ACCEPT_OFFER (29)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenAcceptOfferBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenBurnBuilder;
|
||||
* Type: ttNFTOKEN_BURN (26)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: ChangeNftCounts
|
||||
* Privileges: Privilege::ChangeNftCounts
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenBurnBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenCancelOfferBuilder;
|
||||
* Type: ttNFTOKEN_CANCEL_OFFER (28)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenCancelOfferBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenCreateOfferBuilder;
|
||||
* Type: ttNFTOKEN_CREATE_OFFER (27)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenCreateOfferBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenMintBuilder;
|
||||
* Type: ttNFTOKEN_MINT (25)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: ChangeNftCounts
|
||||
* Privileges: Privilege::ChangeNftCounts
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenMintBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class NFTokenModifyBuilder;
|
||||
* Type: ttNFTOKEN_MODIFY (61)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureDynamicNFT
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use NFTokenModifyBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class OfferCancelBuilder;
|
||||
* Type: ttOFFER_CANCEL (8)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use OfferCancelBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class OfferCreateBuilder;
|
||||
* Type: ttOFFER_CREATE (7)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: MayCreateMpt
|
||||
* Privileges: Privilege::MayCreateMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use OfferCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class OracleDeleteBuilder;
|
||||
* Type: ttORACLE_DELETE (52)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featurePriceOracle
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use OracleDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class OracleSetBuilder;
|
||||
* Type: ttORACLE_SET (51)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featurePriceOracle
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use OracleSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PaymentBuilder;
|
||||
* Type: ttPAYMENT (0)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: CreateAcct | MayCreateMpt
|
||||
* Privileges: Privilege::CreateAcct | Privilege::MayCreateMpt
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PaymentBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PaymentChannelClaimBuilder;
|
||||
* Type: ttPAYCHAN_CLAIM (15)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PaymentChannelClaimBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PaymentChannelCreateBuilder;
|
||||
* Type: ttPAYCHAN_CREATE (13)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PaymentChannelCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PaymentChannelFundBuilder;
|
||||
* Type: ttPAYCHAN_FUND (14)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PaymentChannelFundBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PermissionedDomainDeleteBuilder;
|
||||
* Type: ttPERMISSIONED_DOMAIN_DELETE (63)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featurePermissionedDomains
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PermissionedDomainDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class PermissionedDomainSetBuilder;
|
||||
* Type: ttPERMISSIONED_DOMAIN_SET (62)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featurePermissionedDomains
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use PermissionedDomainSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class SetFeeBuilder;
|
||||
* Type: ttFEE (101)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use SetFeeBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class SetRegularKeyBuilder;
|
||||
* Type: ttREGULAR_KEY_SET (5)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use SetRegularKeyBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class SignerListSetBuilder;
|
||||
* Type: ttSIGNER_LIST_SET (12)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use SignerListSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class SponsorshipSetBuilder;
|
||||
* Type: ttSPONSORSHIP_SET (91)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureSponsor
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use SponsorshipSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class SponsorshipTransferBuilder;
|
||||
* Type: ttSPONSORSHIP_TRANSFER (90)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSponsor
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use SponsorshipTransferBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class TicketCreateBuilder;
|
||||
* Type: ttTICKET_CREATE (10)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use TicketCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class TrustSetBuilder;
|
||||
* Type: ttTRUST_SET (20)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use TrustSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class UNLModifyBuilder;
|
||||
* Type: ttUNL_MODIFY (102)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: uint256{}
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use UNLModifyBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultClawbackBuilder;
|
||||
* Type: ttVAULT_CLAWBACK (70)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: MayDeleteMpt | MustModifyVault
|
||||
* Privileges: Privilege::MayDeleteMpt | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultClawbackBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultCreateBuilder;
|
||||
* Type: ttVAULT_CREATE (65)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: CreatePseudoAcct | CreateMptIssuance | MustModifyVault
|
||||
* Privileges: Privilege::CreatePseudoAcct | Privilege::CreateMptIssuance | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultCreateBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultDeleteBuilder;
|
||||
* Type: ttVAULT_DELETE (67)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: MustDeleteAcct | DestroyMptIssuance | MustModifyVault
|
||||
* Privileges: Privilege::MustDeleteAcct | Privilege::DestroyMptIssuance | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultDeleteBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultDepositBuilder;
|
||||
* Type: ttVAULT_DEPOSIT (68)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: MayAuthorizeMpt | MustModifyVault
|
||||
* Privileges: Privilege::MayAuthorizeMpt | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultDepositBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultSetBuilder;
|
||||
* Type: ttVAULT_SET (66)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: MustModifyVault
|
||||
* Privileges: Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultSetBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class VaultWithdrawBuilder;
|
||||
* Type: ttVAULT_WITHDRAW (69)
|
||||
* Delegable: Delegation::NotDelegable
|
||||
* Amendment: featureSingleAssetVault
|
||||
* Privileges: MayDeleteMpt | MayAuthorizeMpt | MustModifyVault
|
||||
* Privileges: Privilege::MayDeleteMpt | Privilege::MayAuthorizeMpt | Privilege::MustModifyVault
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use VaultWithdrawBuilder to construct new transactions.
|
||||
@@ -121,6 +121,32 @@ public:
|
||||
{
|
||||
return this->tx_->isFieldPresent(sfDestinationTag);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get sfCredentialIDs (SoeOptional)
|
||||
* @return The field value, or std::nullopt if not present.
|
||||
*/
|
||||
[[nodiscard]]
|
||||
protocol_autogen::Optional<SF_VECTOR256::type::value_type>
|
||||
getCredentialIDs() const
|
||||
{
|
||||
if (hasCredentialIDs())
|
||||
{
|
||||
return this->tx_->at(sfCredentialIDs);
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if sfCredentialIDs is present.
|
||||
* @return True if the field is present, false otherwise.
|
||||
*/
|
||||
[[nodiscard]]
|
||||
bool
|
||||
hasCredentialIDs() const
|
||||
{
|
||||
return this->tx_->isFieldPresent(sfCredentialIDs);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -214,6 +240,17 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set sfCredentialIDs (SoeOptional)
|
||||
* @return Reference to this builder for method chaining.
|
||||
*/
|
||||
VaultWithdrawBuilder&
|
||||
setCredentialIDs(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||
{
|
||||
object_[sfCredentialIDs] = value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Build and return the VaultWithdraw wrapper.
|
||||
* @param publicKey The public key for signing.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainAccountCreateCommitBuilder;
|
||||
* Type: ttXCHAIN_ACCOUNT_CREATE_COMMIT (44)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainAccountCreateCommitBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainAddAccountCreateAttestationBuilder;
|
||||
* Type: ttXCHAIN_ADD_ACCOUNT_CREATE_ATTESTATION (46)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: CreateAcct
|
||||
* Privileges: Privilege::CreateAcct
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainAddAccountCreateAttestationBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainAddClaimAttestationBuilder;
|
||||
* Type: ttXCHAIN_ADD_CLAIM_ATTESTATION (45)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: CreateAcct
|
||||
* Privileges: Privilege::CreateAcct
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainAddClaimAttestationBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainClaimBuilder;
|
||||
* Type: ttXCHAIN_CLAIM (43)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainClaimBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainCommitBuilder;
|
||||
* Type: ttXCHAIN_COMMIT (42)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainCommitBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainCreateBridgeBuilder;
|
||||
* Type: ttXCHAIN_CREATE_BRIDGE (48)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainCreateBridgeBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainCreateClaimIDBuilder;
|
||||
* Type: ttXCHAIN_CREATE_CLAIM_ID (41)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainCreateClaimIDBuilder to construct new transactions.
|
||||
|
||||
@@ -21,7 +21,7 @@ class XChainModifyBridgeBuilder;
|
||||
* Type: ttXCHAIN_MODIFY_BRIDGE (47)
|
||||
* Delegable: Delegation::Delegable
|
||||
* Amendment: featureXChainBridge
|
||||
* Privileges: NoPriv
|
||||
* Privileges: Privilege::NoPriv
|
||||
*
|
||||
* Immutable wrapper around STTx providing type-safe field access.
|
||||
* Use XChainModifyBridgeBuilder to construct new transactions.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user