respond to comments

This commit is contained in:
Mayukha Vadari
2026-08-17 18:52:29 -04:00
parent bfdbdd658c
commit c3cc2d4dad
93 changed files with 167 additions and 151 deletions

View File

@@ -60,7 +60,7 @@ def create_transaction_parser():
SETTING_DEFAULTS = {
"delegable": "Delegation::Delegable",
"amendment": "uint256{}",
"privileges": "NoPriv",
"privileges": "Privilege::NoPriv",
}
@@ -69,7 +69,7 @@ def parse_settings(settings_str):
Args:
settings_str: A string like '({.delegable = Delegation::NotDelegable,
.privileges = CreateAcct | MayCreateMpt})', or '({})'.
.privileges = Privilege::CreateAcct})', or '({})'.
Returns:
A dict with a value for every key in SETTING_DEFAULTS.
@@ -123,7 +123,7 @@ def parse_transaction_args(args_list):
Args:
args_list: A list of parsed arguments from pyparsing, e.g.,
['ttPAYMENT', '0', 'Payment',
'({.privileges = CreateAcct | MayCreateMpt})', '({...})']
'({.privileges = Privilege::CreateAcct})', '({...})']
Returns:
A dict with parsed transaction information.

View File

@@ -61,7 +61,7 @@ private:
struct TxDelegationEntry
{
uint256 amendment;
Delegation delegable{NotDelegable};
Delegation delegable{Delegation::NotDelegable};
};
std::unordered_set<TxType> granularTxTypes_;

View File

@@ -3,14 +3,12 @@
#include <xrpl/basics/base_uint.h>
#include <xrpl/basics/safe_cast.h>
#include <cstdint>
#include <type_traits>
namespace xrpl {
// 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 };
enum class Delegation { Delegable, NotDelegable };
/**
* Operations a transaction is permitted to perform, as a bitfield.
@@ -18,9 +16,7 @@ enum Delegation { Delegable, NotDelegable };
* These are declared per-transaction in transactions.macro (via
* TxSettings::privileges) and enforced in InvariantCheck.cpp.
*/
// Bitwise flags, used in macro files
// NOLINTNEXTLINE(cppcoreguidelines-use-enum-class)
enum Privilege {
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,
@@ -42,12 +38,24 @@ enum Privilege {
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)
{
return safeCast<Privilege>(
safeCast<std::underlying_type_t<Privilege>>(lhs) |
safeCast<std::underlying_type_t<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)));
}
/**
@@ -66,7 +74,7 @@ struct TxSettings
/**
* Whether an account may delegate this transaction to another account.
*/
Delegation delegable = Delegable;
Delegation delegable{Delegation::Delegable};
/**
* The amendment gating this transaction, or uint256{} if always available.
@@ -82,7 +90,7 @@ struct TxSettings
/**
* Operations this transaction is permitted to perform.
*/
Privilege privileges = NoPriv;
Privilege privileges{Privilege::NoPriv};
};
} // namespace xrpl

View File

@@ -20,9 +20,9 @@
*
* struct TxSettings
* {
* Delegation delegable = Delegable;
* Delegation delegable{Delegation::Delegable};
* uint256 amendment{};
* Privilege privileges = NoPriv;
* Privilege privileges{Privilege::NoPriv};
* };
*
* Name only the settings that differ from those defaults, in declaration
@@ -47,7 +47,7 @@
# include <xrpl/tx/transactors/payment/Payment.h>
#endif
TRANSACTION(ttPAYMENT, 0, Payment,
({.privileges = CreateAcct | MayCreateMpt}),
({.privileges = Privilege::CreateAcct | Privilege::MayCreateMpt}),
({
{sfDestination, SoeRequired},
{sfAmount, SoeRequired, SoeMptSupported},
@@ -131,7 +131,7 @@ TRANSACTION(ttREGULAR_KEY_SET, 5, SetRegularKey,
# include <xrpl/tx/transactors/dex/OfferCreate.h>
#endif
TRANSACTION(ttOFFER_CREATE, 7, OfferCreate,
({.privileges = MayCreateMpt}),
({.privileges = Privilege::MayCreateMpt}),
({
{sfTakerPays, SoeRequired, SoeMptSupported},
{sfTakerGets, SoeRequired, SoeMptSupported},
@@ -226,7 +226,7 @@ TRANSACTION(ttCHECK_CREATE, 16, CheckCreate, ({}), ({
# include <xrpl/tx/transactors/check/CheckCash.h>
#endif
TRANSACTION(ttCHECK_CASH, 17, CheckCash,
({.privileges = MayCreateMpt}),
({.privileges = Privilege::MayCreateMpt}),
({
{sfCheckID, SoeRequired},
{sfAmount, SoeOptional, SoeMptSupported},
@@ -269,7 +269,7 @@ TRANSACTION(ttTRUST_SET, 20, TrustSet, ({}), ({
TRANSACTION(ttACCOUNT_DELETE, 21, AccountDelete,
({
.delegable = Delegation::NotDelegable,
.privileges = MustDeleteAcct,
.privileges = Privilege::MustDeleteAcct,
}),
({
{sfDestination, SoeRequired},
@@ -284,7 +284,7 @@ TRANSACTION(ttACCOUNT_DELETE, 21, AccountDelete,
# include <xrpl/tx/transactors/nft/NFTokenMint.h>
#endif
TRANSACTION(ttNFTOKEN_MINT, 25, NFTokenMint,
({.privileges = ChangeNftCounts}),
({.privileges = Privilege::ChangeNftCounts}),
({
{sfNFTokenTaxon, SoeRequired},
{sfTransferFee, SoeOptional},
@@ -300,7 +300,7 @@ TRANSACTION(ttNFTOKEN_MINT, 25, NFTokenMint,
# include <xrpl/tx/transactors/nft/NFTokenBurn.h>
#endif
TRANSACTION(ttNFTOKEN_BURN, 26, NFTokenBurn,
({.privileges = ChangeNftCounts}),
({.privileges = Privilege::ChangeNftCounts}),
({
{sfNFTokenID, SoeRequired},
{sfOwner, SoeOptional},
@@ -352,7 +352,8 @@ TRANSACTION(ttCLAWBACK, 30, Clawback, ({}), ({
TRANSACTION(ttAMM_CLAWBACK, 31, AMMClawback,
({
.amendment = featureAMMClawback,
.privileges = MayDeleteAcct | OverrideFreeze | MayAuthorizeMpt,
.privileges = Privilege::MayDeleteAcct | Privilege::OverrideFreeze |
Privilege::MayAuthorizeMpt,
}),
({
{sfHolder, SoeRequired},
@@ -368,7 +369,7 @@ TRANSACTION(ttAMM_CLAWBACK, 31, AMMClawback,
TRANSACTION(ttAMM_CREATE, 35, AMMCreate,
({
.amendment = featureAMM,
.privileges = CreatePseudoAcct | MayCreateMpt,
.privileges = Privilege::CreatePseudoAcct | Privilege::MayCreateMpt,
}),
({
{sfAmount, SoeRequired, SoeMptSupported},
@@ -399,7 +400,7 @@ TRANSACTION(ttAMM_DEPOSIT, 36, AMMDeposit,
TRANSACTION(ttAMM_WITHDRAW, 37, AMMWithdraw,
({
.amendment = featureAMM,
.privileges = MayDeleteAcct | MayAuthorizeMpt,
.privileges = Privilege::MayDeleteAcct | Privilege::MayAuthorizeMpt,
}),
({
{sfAsset, SoeRequired, SoeMptSupported},
@@ -443,7 +444,7 @@ TRANSACTION(ttAMM_BID, 39, AMMBid,
TRANSACTION(ttAMM_DELETE, 40, AMMDelete,
({
.amendment = featureAMM,
.privileges = MustDeleteAcct | MayDeleteMpt,
.privileges = Privilege::MustDeleteAcct | Privilege::MayDeleteMpt,
}),
({
{sfAsset, SoeRequired, SoeMptSupported},
@@ -497,7 +498,7 @@ TRANSACTION(ttXCHAIN_ACCOUNT_CREATE_COMMIT, 44, XChainAccountCreateCommit,
TRANSACTION(ttXCHAIN_ADD_CLAIM_ATTESTATION, 45, XChainAddClaimAttestation,
({
.amendment = featureXChainBridge,
.privileges = CreateAcct,
.privileges = Privilege::CreateAcct,
}),
({
{sfXChainBridge, SoeRequired},
@@ -518,7 +519,7 @@ TRANSACTION(ttXCHAIN_ADD_CLAIM_ATTESTATION, 45, XChainAddClaimAttestation,
TRANSACTION(ttXCHAIN_ADD_ACCOUNT_CREATE_ATTESTATION, 46, XChainAddAccountCreateAttestation,
({
.amendment = featureXChainBridge,
.privileges = CreateAcct,
.privileges = Privilege::CreateAcct,
}),
({
{sfXChainBridge, SoeRequired},
@@ -618,7 +619,7 @@ TRANSACTION(ttLEDGER_STATE_FIX, 53, LedgerStateFix,
TRANSACTION(ttMPTOKEN_ISSUANCE_CREATE, 54, MPTokenIssuanceCreate,
({
.amendment = featureMPTokensV1,
.privileges = CreateMptIssuance,
.privileges = Privilege::CreateMptIssuance,
}),
({
{sfAssetScale, SoeOptional},
@@ -636,7 +637,7 @@ TRANSACTION(ttMPTOKEN_ISSUANCE_CREATE, 54, MPTokenIssuanceCreate,
TRANSACTION(ttMPTOKEN_ISSUANCE_DESTROY, 55, MPTokenIssuanceDestroy,
({
.amendment = featureMPTokensV1,
.privileges = DestroyMptIssuance,
.privileges = Privilege::DestroyMptIssuance,
}),
({
{sfMPTokenIssuanceID, SoeRequired},
@@ -666,7 +667,7 @@ TRANSACTION(ttMPTOKEN_ISSUANCE_SET, 56, MPTokenIssuanceSet,
TRANSACTION(ttMPTOKEN_AUTHORIZE, 57, MPTokenAuthorize,
({
.amendment = featureMPTokensV1,
.privileges = MustAuthorizeMpt,
.privileges = Privilege::MustAuthorizeMpt,
}),
({
{sfMPTokenIssuanceID, SoeRequired},
@@ -764,7 +765,8 @@ TRANSACTION(ttVAULT_CREATE, 65, VaultCreate,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = CreatePseudoAcct | CreateMptIssuance | MustModifyVault,
.privileges = Privilege::CreatePseudoAcct | Privilege::CreateMptIssuance |
Privilege::MustModifyVault,
}),
({
{sfAsset, SoeRequired, SoeMptSupported},
@@ -787,7 +789,7 @@ TRANSACTION(ttVAULT_SET, 66, VaultSet,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = MustModifyVault,
.privileges = Privilege::MustModifyVault,
}),
({
{sfVaultID, SoeRequired},
@@ -804,7 +806,8 @@ TRANSACTION(ttVAULT_DELETE, 67, VaultDelete,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = MustDeleteAcct | DestroyMptIssuance | MustModifyVault,
.privileges = Privilege::MustDeleteAcct | Privilege::DestroyMptIssuance |
Privilege::MustModifyVault,
}),
({
{sfVaultID, SoeRequired},
@@ -819,7 +822,7 @@ TRANSACTION(ttVAULT_DEPOSIT, 68, VaultDeposit,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = MayAuthorizeMpt | MustModifyVault,
.privileges = Privilege::MayAuthorizeMpt | Privilege::MustModifyVault,
}),
({
{sfVaultID, SoeRequired},
@@ -834,7 +837,8 @@ TRANSACTION(ttVAULT_WITHDRAW, 69, VaultWithdraw,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = MayDeleteMpt | MayAuthorizeMpt | MustModifyVault,
.privileges = Privilege::MayDeleteMpt | Privilege::MayAuthorizeMpt |
Privilege::MustModifyVault,
}),
({
{sfVaultID, SoeRequired},
@@ -851,7 +855,7 @@ TRANSACTION(ttVAULT_CLAWBACK, 70, VaultClawback,
({
.delegable = Delegation::NotDelegable,
.amendment = featureSingleAssetVault,
.privileges = MayDeleteMpt | MustModifyVault,
.privileges = Privilege::MayDeleteMpt | Privilege::MustModifyVault,
}),
({
{sfVaultID, SoeRequired},
@@ -883,7 +887,7 @@ TRANSACTION(ttLOAN_BROKER_SET, 74, LoanBrokerSet,
({
.delegable = Delegation::NotDelegable,
.amendment = featureLendingProtocol,
.privileges = CreatePseudoAcct | MayAuthorizeMpt,
.privileges = Privilege::CreatePseudoAcct | Privilege::MayAuthorizeMpt,
}),
({
{sfVaultID, SoeRequired},
@@ -903,7 +907,7 @@ TRANSACTION(ttLOAN_BROKER_DELETE, 75, LoanBrokerDelete,
({
.delegable = Delegation::NotDelegable,
.amendment = featureLendingProtocol,
.privileges = MustDeleteAcct | MayAuthorizeMpt,
.privileges = Privilege::MustDeleteAcct | Privilege::MayAuthorizeMpt,
}),
({
{sfLoanBrokerID, SoeRequired},
@@ -931,7 +935,7 @@ TRANSACTION(ttLOAN_BROKER_COVER_WITHDRAW, 77, LoanBrokerCoverWithdraw,
({
.delegable = Delegation::NotDelegable,
.amendment = featureLendingProtocol,
.privileges = MayAuthorizeMpt,
.privileges = Privilege::MayAuthorizeMpt,
}),
({
{sfLoanBrokerID, SoeRequired},
@@ -963,7 +967,7 @@ TRANSACTION(ttLOAN_SET, 80, LoanSet,
({
.delegable = Delegation::NotDelegable,
.amendment = featureLendingProtocol,
.privileges = MayAuthorizeMpt | MustModifyVault,
.privileges = Privilege::MayAuthorizeMpt | Privilege::MustModifyVault,
}),
({
{sfLoanBrokerID, SoeRequired},
@@ -1009,7 +1013,7 @@ TRANSACTION(ttLOAN_MANAGE, 82, LoanManage,
// All of the LoanManage options will modify the vault, but the
// transaction can succeed without options, essentially making it
// a noop.
.privileges = MayModifyVault,
.privileges = Privilege::MayModifyVault,
}),
({
{sfLoanID, SoeRequired},
@@ -1023,7 +1027,7 @@ TRANSACTION(ttLOAN_PAY, 84, LoanPay,
({
.delegable = Delegation::NotDelegable,
.amendment = featureLendingProtocol,
.privileges = MayAuthorizeMpt | MustModifyVault,
.privileges = Privilege::MayAuthorizeMpt | Privilege::MustModifyVault,
}),
({
{sfLoanID, SoeRequired},

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -251,7 +251,7 @@ Permission::isDelegable(std::uint32_t permissionValue, Rules const& rules) const
// Tx-level permissions require the transaction type itself to be delegable, and
// the corresponding amendment enabled.
return txIt != txDelegationMap_.end() && txIt->second.delegable != NotDelegable &&
return txIt != txDelegationMap_.end() && txIt->second.delegable != Delegation::NotDelegable &&
amendmentEnabled(txIt->second);
}

View File

@@ -260,7 +260,8 @@ TransfersNotFrozen::validateFrozenState(
// individually-frozen or deep-frozen AMM trust lines.
// Post-fixCleanup3_4_0: AMMClawbacks are allowed to override all freeze types.
bool const isAMMLine = change.line->isFlag(lsfAMMNode);
if ((fixOverrideFreeze || !isAMMLine || globalFreeze) && hasPrivilege(tx, OverrideFreeze))
if ((fixOverrideFreeze || !isAMMLine || globalFreeze) &&
hasPrivilege(tx, Privilege::OverrideFreeze))
{
JLOG(j.debug()) << "Invariant check allowing funds to be moved "
<< (change.balanceChangeSign > 0 ? "to" : "from")

View File

@@ -47,9 +47,9 @@ namespace xrpl {
#undef TRANSACTION
#define UNWRAP(...) __VA_ARGS__
#define TRANSACTION(tag, value, name, settings, ...) \
case tag: { \
return (TxSettings UNWRAP settings).privileges & priv; \
#define TRANSACTION(tag, value, name, settings, ...) \
case tag: { \
return ((TxSettings UNWRAP settings).privileges & priv) != Privilege::NoPriv; \
}
bool
@@ -442,7 +442,7 @@ AccountRootsNotDeleted::finalize(
// transaction when the total AMM LP Tokens balance goes to 0.
// A successful AccountDelete or AMMDelete MUST delete exactly
// one account root.
if (hasPrivilege(tx, MustDeleteAcct) && isTesSuccess(result))
if (hasPrivilege(tx, Privilege::MustDeleteAcct) && isTesSuccess(result))
{
if (accountsDeleted_ == 1)
return true;
@@ -463,7 +463,7 @@ AccountRootsNotDeleted::finalize(
// A successful AMMWithdraw/AMMClawback MAY delete one account root
// when the total AMM LP Tokens balance goes to 0. Not every AMM withdraw
// deletes the AMM account, accountsDeleted_ is set if it is deleted.
if (hasPrivilege(tx, MayDeleteAcct) && isTesSuccess(result) && accountsDeleted_ == 1)
if (hasPrivilege(tx, Privilege::MayDeleteAcct) && isTesSuccess(result) && accountsDeleted_ == 1)
return true;
if (accountsDeleted_ == 0)
@@ -766,14 +766,15 @@ ValidNewAccountRoot::finalize(
}
// From this point on we know exactly one account was created.
if (hasPrivilege(tx, CreateAcct | CreatePseudoAcct) && isTesSuccess(result))
if (hasPrivilege(tx, Privilege::CreateAcct | Privilege::CreatePseudoAcct) &&
isTesSuccess(result))
{
bool const pseudoAccount =
(pseudoAccount_ &&
(view.rules().enabled(featureSingleAssetVault) ||
view.rules().enabled(featureLendingProtocol)));
if (pseudoAccount && !hasPrivilege(tx, CreatePseudoAcct))
if (pseudoAccount && !hasPrivilege(tx, Privilege::CreatePseudoAcct))
{
JLOG(j.fatal()) << "Invariant failed: pseudo-account created by a "
"wrong transaction type";

View File

@@ -208,7 +208,7 @@ ValidMPTIssuance::finalize(
}
auto const txnType = tx.getTxnType();
if (hasPrivilege(tx, CreateMptIssuance))
if (hasPrivilege(tx, Privilege::CreateMptIssuance))
{
if (mptIssuancesCreated_ == 0)
{
@@ -229,7 +229,7 @@ ValidMPTIssuance::finalize(
return mptIssuancesCreated_ == 1 && mptIssuancesDeleted_ == 0;
}
if (hasPrivilege(tx, DestroyMptIssuance))
if (hasPrivilege(tx, Privilege::DestroyMptIssuance))
{
if (mptIssuancesDeleted_ == 0)
{
@@ -256,7 +256,8 @@ ValidMPTIssuance::finalize(
// non-amendment-gated side effects.
bool const enforceEscrowFinish = (txnType == ttESCROW_FINISH) &&
(rules.enabled(featureSingleAssetVault) || lendingProtocolEnabled);
if (hasPrivilege(tx, MustAuthorizeMpt | MayAuthorizeMpt) || enforceEscrowFinish)
if (hasPrivilege(tx, Privilege::MustAuthorizeMpt | Privilege::MayAuthorizeMpt) ||
enforceEscrowFinish)
{
bool const submittedByIssuer = tx.isFieldPresent(sfHolder);
@@ -272,7 +273,7 @@ ValidMPTIssuance::finalize(
"succeeded but deleted issuances";
return false;
}
if (mptV2Enabled && hasPrivilege(tx, MayAuthorizeMpt) &&
if (mptV2Enabled && hasPrivilege(tx, Privilege::MayAuthorizeMpt) &&
(txnType == ttAMM_WITHDRAW || txnType == ttAMM_CLAWBACK))
{
if (submittedByIssuer && txnType == ttAMM_WITHDRAW && mptokensCreated_ > 0)
@@ -308,7 +309,7 @@ ValidMPTIssuance::finalize(
return false;
}
else if (
!submittedByIssuer && hasPrivilege(tx, MustAuthorizeMpt) &&
!submittedByIssuer && hasPrivilege(tx, Privilege::MustAuthorizeMpt) &&
(mptokensCreated_ + mptokensDeleted_ != 1))
{
// if the holder submitted this tx, then a mptoken must be
@@ -321,7 +322,7 @@ ValidMPTIssuance::finalize(
return true;
}
if (hasPrivilege(tx, MayCreateMpt))
if (hasPrivilege(tx, Privilege::MayCreateMpt))
{
bool const submittedByIssuer = tx.isFieldPresent(sfHolder);
@@ -376,7 +377,7 @@ ValidMPTIssuance::finalize(
return true;
}
if (hasPrivilege(tx, MayDeleteMpt) &&
if (hasPrivilege(tx, Privilege::MayDeleteMpt) &&
((txnType == ttAMM_DELETE && mptokensDeleted_ <= 2) || mptokensDeleted_ == 1) &&
mptokensCreated_ == 0 && mptIssuancesCreated_ == 0 && mptIssuancesDeleted_ == 0)
return true;
@@ -837,7 +838,7 @@ ValidMPTTransfer::finalize(
ReadView const& view,
beast::Journal const& j)
{
if (hasPrivilege(tx, OverrideFreeze))
if (hasPrivilege(tx, Privilege::OverrideFreeze))
return true;
// DEX transactions (AMM[Create,Deposit], cross-currency payments, offer creates) are

View File

@@ -206,7 +206,7 @@ NFTokenCountTracking::finalize(
ReadView const& view,
beast::Journal const& j) const
{
if (!hasPrivilege(tx, ChangeNftCounts))
if (!hasPrivilege(tx, Privilege::ChangeNftCounts))
{
if (beforeMintedTotal_ != afterMintedTotal_)
{

View File

@@ -346,7 +346,7 @@ ValidVault::finalize(
if (afterVault_.empty() && beforeVault_.empty())
{
if (hasPrivilege(tx, MustModifyVault))
if (hasPrivilege(tx, Privilege::MustModifyVault))
{
JLOG(j.fatal()) << //
"Invariant failed: vault operation succeeded without modifying "
@@ -357,7 +357,8 @@ ValidVault::finalize(
return true; // Not a vault operation
}
if (!(hasPrivilege(tx, MustModifyVault) || hasPrivilege(tx, MayModifyVault)))
if (!(hasPrivilege(tx, Privilege::MustModifyVault) ||
hasPrivilege(tx, Privilege::MayModifyVault)))
{
JLOG(j.fatal()) << //
"Invariant failed: vault updated by a wrong transaction type";

View File

@@ -2725,10 +2725,10 @@ class Delegate_test : public beast::unit_test::Suite
#undef TRANSACTION
#define UNWRAP(...) __VA_ARGS__
#define TRANSACTION(tag, value, name, settings, ...) \
if ((xrpl::TxSettings UNWRAP settings).delegable == xrpl::Delegable) \
{ \
delegableCount++; \
#define TRANSACTION(tag, value, name, settings, ...) \
if ((xrpl::TxSettings UNWRAP settings).delegable == xrpl::Delegation::Delegable) \
{ \
delegableCount++; \
}
#include <xrpl/protocol/detail/transactions.macro>