module Digitalbits
xdr source ============================================================¶ ↑
struct AccountEntry
{
AccountID accountID; // master public key for this account
int64 balance; // in nibbs
SequenceNumber seqNum; // last sequence number used for this account
uint32 numSubEntries; // number of sub-entries this account has
// drives the reserve
AccountID* inflationDest; // Account to vote for during inflation
uint32 flags; // see AccountFlags
string32 homeDomain; // can be used for reverse federation and memo lookup
// fields used for signatures
// thresholds stores unsigned bytes: [weight of master|low|medium|high]
Thresholds thresholds;
Signer signers<MAX_SIGNERS>; // possible signers for this account
// reserved for future use
union switch (int v)
{
case 0:
void;
case 1:
AccountEntryExtensionV1 v1;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
case 1:
AccountEntryExtensionV1 v1;
}
¶ ↑
xdr source ============================================================¶ ↑
struct AccountEntryExtensionV1
{
Liabilities liabilities;
union switch (int v)
{
case 0:
void;
case 2:
AccountEntryExtensionV2 v2;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
case 2:
AccountEntryExtensionV2 v2;
}
¶ ↑
xdr source ============================================================¶ ↑
struct AccountEntryExtensionV2
{
uint32 numSponsored;
uint32 numSponsoring;
SponsorshipDescriptor signerSponsoringIDs<MAX_SIGNERS>;
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
enum AccountFlags
{ // masks for each flag
// Flags set on issuer accounts
// TrustLines are created with authorized set to "false" requiring
// the issuer to set it for each TrustLine
AUTH_REQUIRED_FLAG = 0x1,
// If set, the authorized flag in TrustLines can be cleared
// otherwise, authorization cannot be revoked
AUTH_REVOCABLE_FLAG = 0x2,
// Once set, causes all AUTH_* flags to be read-only
AUTH_IMMUTABLE_FLAG = 0x4
};
¶ ↑
xdr source ============================================================¶ ↑
union AccountMergeResult switch (AccountMergeResultCode code)
{
case ACCOUNT_MERGE_SUCCESS:
int64 sourceAccountBalance; // how much got transfered from source account
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum AccountMergeResultCode
{
// codes considered as "success" for the operation
ACCOUNT_MERGE_SUCCESS = 0,
// codes considered as "failure" for the operation
ACCOUNT_MERGE_MALFORMED = -1, // can't merge onto itself
ACCOUNT_MERGE_NO_ACCOUNT = -2, // destination does not exist
ACCOUNT_MERGE_IMMUTABLE_SET = -3, // source account has AUTH_IMMUTABLE set
ACCOUNT_MERGE_HAS_SUB_ENTRIES = -4, // account has trust lines/offers
ACCOUNT_MERGE_SEQNUM_TOO_FAR = -5, // sequence number is over max allowed
ACCOUNT_MERGE_DEST_FULL = -6, // can't add source balance to
// destination balance
ACCOUNT_MERGE_IS_SPONSOR = -7 // can't merge account that is a sponsor
};
¶ ↑
xdr source ============================================================¶ ↑
struct AllowTrustOp
{
AccountID trustor;
union switch (AssetType type)
{
// ASSET_TYPE_NATIVE is not allowed
case ASSET_TYPE_CREDIT_ALPHANUM4:
AssetCode4 assetCode4;
case ASSET_TYPE_CREDIT_ALPHANUM12:
AssetCode12 assetCode12;
// add other asset types here in the future
}
asset;
// 0, or any bitwise combination of TrustLineFlags
uint32 authorize;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (AssetType type)
{
// ASSET_TYPE_NATIVE is not allowed
case ASSET_TYPE_CREDIT_ALPHANUM4:
AssetCode4 assetCode4;
case ASSET_TYPE_CREDIT_ALPHANUM12:
AssetCode12 assetCode12;
// add other asset types here in the future
}
¶ ↑
xdr source ============================================================¶ ↑
union AllowTrustResult switch (AllowTrustResultCode code)
{
case ALLOW_TRUST_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum AllowTrustResultCode
{
// codes considered as "success" for the operation
ALLOW_TRUST_SUCCESS = 0,
// codes considered as "failure" for the operation
ALLOW_TRUST_MALFORMED = -1, // asset is not ASSET_TYPE_ALPHANUM
ALLOW_TRUST_NO_TRUST_LINE = -2, // trustor does not have a trustline
// source account does not require trust
ALLOW_TRUST_TRUST_NOT_REQUIRED = -3,
ALLOW_TRUST_CANT_REVOKE = -4, // source account can't revoke trust,
ALLOW_TRUST_SELF_NOT_ALLOWED = -5 // trusting self is not allowed
};
¶ ↑
xdr source ============================================================¶ ↑
union Asset switch (AssetType type)
{
case ASSET_TYPE_NATIVE: // Not credit
void;
case ASSET_TYPE_CREDIT_ALPHANUM4:
struct
{
AssetCode4 assetCode;
AccountID issuer;
} alphaNum4;
case ASSET_TYPE_CREDIT_ALPHANUM12:
struct
{
AssetCode12 assetCode;
AccountID issuer;
} alphaNum12;
// add other asset types here in the future
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AssetCode12 assetCode;
AccountID issuer;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AssetCode4 assetCode;
AccountID issuer;
}
¶ ↑
xdr source ============================================================¶ ↑
enum AssetType
{
ASSET_TYPE_NATIVE = 0,
ASSET_TYPE_CREDIT_ALPHANUM4 = 1,
ASSET_TYPE_CREDIT_ALPHANUM12 = 2
};
¶ ↑
xdr source ============================================================¶ ↑
struct Auth
{
// Empty message, just to confirm
// establishment of MAC keys.
int unused;
};
¶ ↑
xdr source ============================================================¶ ↑
struct AuthCert
{
Curve25519Public pubkey;
uint64 expiration;
Signature sig;
};
¶ ↑
xdr source ============================================================¶ ↑
union AuthenticatedMessage switch (uint32 v)
{
case 0:
struct
{
uint64 sequence;
DigitalBitsMessage message;
HmacSha256Mac mac;
} v0;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
uint64 sequence;
DigitalBitsMessage message;
HmacSha256Mac mac;
}
¶ ↑
xdr source ============================================================¶ ↑
struct BeginSponsoringFutureReservesOp
{
AccountID sponsoredID;
};
¶ ↑
xdr source ============================================================¶ ↑
union BeginSponsoringFutureReservesResult switch (BeginSponsoringFutureReservesResultCode code)
{
case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum BeginSponsoringFutureReservesResultCode
{
// codes considered as "success" for the operation
BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS = 0,
// codes considered as "failure" for the operation
BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED = -1,
BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED = -2,
BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE = -3
};
¶ ↑
xdr source ============================================================¶ ↑
union BucketEntry switch (BucketEntryType type)
{
case LIVEENTRY:
case INITENTRY:
LedgerEntry liveEntry;
case DEADENTRY:
LedgerKey deadEntry;
case METAENTRY:
BucketMetadata metaEntry;
};
¶ ↑
xdr source ============================================================¶ ↑
enum BucketEntryType
{
METAENTRY =
-1, // At-and-after protocol 11: bucket metadata, should come first.
LIVEENTRY = 0, // Before protocol 11: created-or-updated;
// At-and-after protocol 11: only updated.
DEADENTRY = 1,
INITENTRY = 2 // At-and-after protocol 11: only created.
};
¶ ↑
xdr source ============================================================¶ ↑
struct BucketMetadata
{
// Indicates the protocol version used to create / merge this bucket.
uint32 ledgerVersion;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct BumpSequenceOp
{
SequenceNumber bumpTo;
};
¶ ↑
xdr source ============================================================¶ ↑
union BumpSequenceResult switch (BumpSequenceResultCode code)
{
case BUMP_SEQUENCE_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum BumpSequenceResultCode
{
// codes considered as "success" for the operation
BUMP_SEQUENCE_SUCCESS = 0,
// codes considered as "failure" for the operation
BUMP_SEQUENCE_BAD_SEQ = -1 // `bumpTo` is not within bounds
};
¶ ↑
xdr source ============================================================¶ ↑
struct ChangeTrustOp
{
Asset line;
// if limit is set to 0, deletes the trust line
int64 limit;
};
¶ ↑
xdr source ============================================================¶ ↑
union ChangeTrustResult switch (ChangeTrustResultCode code)
{
case CHANGE_TRUST_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ChangeTrustResultCode
{
// codes considered as "success" for the operation
CHANGE_TRUST_SUCCESS = 0,
// codes considered as "failure" for the operation
CHANGE_TRUST_MALFORMED = -1, // bad input
CHANGE_TRUST_NO_ISSUER = -2, // could not find issuer
CHANGE_TRUST_INVALID_LIMIT = -3, // cannot drop limit below balance
// cannot create with a limit of 0
CHANGE_TRUST_LOW_RESERVE =
-4, // not enough funds to create a new trust line,
CHANGE_TRUST_SELF_NOT_ALLOWED = -5 // trusting self is not allowed
};
¶ ↑
xdr source ============================================================¶ ↑
struct ClaimClaimableBalanceOp
{
ClaimableBalanceID balanceID;
};
¶ ↑
xdr source ============================================================¶ ↑
union ClaimClaimableBalanceResult switch (ClaimClaimableBalanceResultCode code)
{
case CLAIM_CLAIMABLE_BALANCE_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ClaimClaimableBalanceResultCode
{
CLAIM_CLAIMABLE_BALANCE_SUCCESS = 0,
CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST = -1,
CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM = -2,
CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3,
CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4,
CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5
};
¶ ↑
xdr source ============================================================¶ ↑
struct ClaimOfferAtom
{
// emitted to identify the offer
AccountID sellerID; // Account that owns the offer
int64 offerID;
// amount and asset taken from the owner
Asset assetSold;
int64 amountSold;
// amount and asset sent to the owner
Asset assetBought;
int64 amountBought;
};
¶ ↑
xdr source ============================================================¶ ↑
union ClaimPredicate switch (ClaimPredicateType type)
{
case CLAIM_PREDICATE_UNCONDITIONAL:
void;
case CLAIM_PREDICATE_AND:
ClaimPredicate andPredicates<2>;
case CLAIM_PREDICATE_OR:
ClaimPredicate orPredicates<2>;
case CLAIM_PREDICATE_NOT:
ClaimPredicate* notPredicate;
case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME:
int64 absBefore; // Predicate will be true if closeTime < absBefore
case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME:
int64 relBefore; // Seconds since closeTime of the ledger in which the
// ClaimableBalanceEntry was created
};
¶ ↑
xdr source ============================================================¶ ↑
enum ClaimPredicateType
{
CLAIM_PREDICATE_UNCONDITIONAL = 0,
CLAIM_PREDICATE_AND = 1,
CLAIM_PREDICATE_OR = 2,
CLAIM_PREDICATE_NOT = 3,
CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME = 4,
CLAIM_PREDICATE_BEFORE_RELATIVE_TIME = 5
};
¶ ↑
xdr source ============================================================¶ ↑
struct ClaimableBalanceEntry
{
// Unique identifier for this ClaimableBalanceEntry
ClaimableBalanceID balanceID;
// List of claimants with associated predicate
Claimant claimants<10>;
// Any asset including native
Asset asset;
// Amount of asset
int64 amount;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union ClaimableBalanceID switch (ClaimableBalanceIDType type)
{
case CLAIMABLE_BALANCE_ID_TYPE_V0:
Hash v0;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ClaimableBalanceIDType
{
CLAIMABLE_BALANCE_ID_TYPE_V0 = 0
};
¶ ↑
xdr source ============================================================¶ ↑
union Claimant switch (ClaimantType type)
{
case CLAIMANT_TYPE_V0:
struct
{
AccountID destination; // The account that can use this condition
ClaimPredicate predicate; // Claimable if predicate is true
} v0;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID destination; // The account that can use this condition
ClaimPredicate predicate; // Claimable if predicate is true
}
¶ ↑
xdr source ============================================================¶ ↑
enum ClaimantType
{
CLAIMANT_TYPE_V0 = 0
};
¶ ↑
xdr source ============================================================¶ ↑
struct CreateAccountOp
{
AccountID destination; // account to create
int64 startingBalance; // amount they end up with
};
¶ ↑
xdr source ============================================================¶ ↑
union CreateAccountResult switch (CreateAccountResultCode code)
{
case CREATE_ACCOUNT_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum CreateAccountResultCode
{
// codes considered as "success" for the operation
CREATE_ACCOUNT_SUCCESS = 0, // account was created
// codes considered as "failure" for the operation
CREATE_ACCOUNT_MALFORMED = -1, // invalid destination
CREATE_ACCOUNT_UNDERFUNDED = -2, // not enough funds in source account
CREATE_ACCOUNT_LOW_RESERVE =
-3, // would create an account below the min reserve
CREATE_ACCOUNT_ALREADY_EXIST = -4 // account already exists
};
¶ ↑
xdr source ============================================================¶ ↑
struct CreateClaimableBalanceOp
{
Asset asset;
int64 amount;
Claimant claimants<10>;
};
¶ ↑
xdr source ============================================================¶ ↑
union CreateClaimableBalanceResult switch (
CreateClaimableBalanceResultCode code)
{
case CREATE_CLAIMABLE_BALANCE_SUCCESS:
ClaimableBalanceID balanceID;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum CreateClaimableBalanceResultCode
{
CREATE_CLAIMABLE_BALANCE_SUCCESS = 0,
CREATE_CLAIMABLE_BALANCE_MALFORMED = -1,
CREATE_CLAIMABLE_BALANCE_LOW_RESERVE = -2,
CREATE_CLAIMABLE_BALANCE_NO_TRUST = -3,
CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -4,
CREATE_CLAIMABLE_BALANCE_UNDERFUNDED = -5
};
¶ ↑
xdr source ============================================================¶ ↑
struct CreatePassiveSellOfferOp
{
Asset selling; // A
Asset buying; // B
int64 amount; // amount taker gets. if set to 0, delete the offer
Price price; // cost of A in terms of B
};
¶ ↑
xdr source ============================================================¶ ↑
enum CryptoKeyType
{
KEY_TYPE_ED25519 = 0,
KEY_TYPE_PRE_AUTH_TX = 1,
KEY_TYPE_HASH_X = 2,
// MUXED enum values for supported type are derived from the enum values
// above by ORing them with 0x100
KEY_TYPE_MUXED_ED25519 = 0x100
};
¶ ↑
xdr source ============================================================¶ ↑
struct Curve25519Public
{
opaque key[32];
};
¶ ↑
xdr source ============================================================¶ ↑
struct Curve25519Secret
{
opaque key[32];
};
¶ ↑
xdr source ============================================================¶ ↑
struct DataEntry
{
AccountID accountID; // account this data belongs to
string64 dataName;
DataValue dataValue;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct DecoratedSignature
{
SignatureHint hint; // last 4 bytes of the public key, used as a hint
Signature signature; // actual signature
};
¶ ↑
xdr source ============================================================¶ ↑
union DigitalBitsMessage switch (MessageType type)
{
case ERROR_MSG:
Error error;
case HELLO:
Hello hello;
case AUTH:
Auth auth;
case DONT_HAVE:
DontHave dontHave;
case GET_PEERS:
void;
case PEERS:
PeerAddress peers<100>;
case GET_TX_SET:
uint256 txSetHash;
case TX_SET:
TransactionSet txSet;
case TRANSACTION:
TransactionEnvelope transaction;
case SURVEY_REQUEST:
SignedSurveyRequestMessage signedSurveyRequestMessage;
case SURVEY_RESPONSE:
SignedSurveyResponseMessage signedSurveyResponseMessage;
// SCP
case GET_SCP_QUORUMSET:
uint256 qSetHash;
case SCP_QUORUMSET:
SCPQuorumSet qSet;
case SCP_MESSAGE:
SCPEnvelope envelope;
case GET_SCP_STATE:
uint32 getSCPLedgerSeq; // ledger seq requested ; if 0, requests the latest
};
¶ ↑
xdr source ============================================================¶ ↑
struct DigitalBitsValue
{
Hash txSetHash; // transaction set to apply to previous ledger
TimePoint closeTime; // network close time
// upgrades to apply to the previous ledger (usually empty)
// this is a vector of encoded 'LedgerUpgrade' so that nodes can drop
// unknown steps during consensus if needed.
// see notes below on 'LedgerUpgrade' for more detail
// max size is dictated by number of upgrade types (+ room for future)
UpgradeType upgrades<6>;
// reserved for future use
union switch (DigitalBitsValueType v)
{
case DIGITALBITS_VALUE_BASIC:
void;
case DIGITALBITS_VALUE_SIGNED:
LedgerCloseValueSignature lcValueSignature;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (DigitalBitsValueType v)
{
case DIGITALBITS_VALUE_BASIC:
void;
case DIGITALBITS_VALUE_SIGNED:
LedgerCloseValueSignature lcValueSignature;
}
¶ ↑
xdr source ============================================================¶ ↑
enum DigitalBitsValueType
{
DIGITALBITS_VALUE_BASIC = 0,
DIGITALBITS_VALUE_SIGNED = 1
};
¶ ↑
xdr source ============================================================¶ ↑
struct DontHave
{
MessageType type;
uint256 reqHash;
};
¶ ↑
xdr source ============================================================¶ ↑
union EndSponsoringFutureReservesResult switch (EndSponsoringFutureReservesResultCode code)
{
case END_SPONSORING_FUTURE_RESERVES_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum EndSponsoringFutureReservesResultCode
{
// codes considered as "success" for the operation
END_SPONSORING_FUTURE_RESERVES_SUCCESS = 0,
// codes considered as "failure" for the operation
END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED = -1
};
¶ ↑
xdr source ============================================================¶ ↑
enum EnvelopeType
{
ENVELOPE_TYPE_TX_V0 = 0,
ENVELOPE_TYPE_SCP = 1,
ENVELOPE_TYPE_TX = 2,
ENVELOPE_TYPE_AUTH = 3,
ENVELOPE_TYPE_SCPVALUE = 4,
ENVELOPE_TYPE_TX_FEE_BUMP = 5,
ENVELOPE_TYPE_OP_ID = 6
};
¶ ↑
xdr source ============================================================¶ ↑
struct Error
{
ErrorCode code;
string msg<100>;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ErrorCode
{
ERR_MISC = 0, // Unspecific error
ERR_DATA = 1, // Malformed data
ERR_CONF = 2, // Misconfiguration error
ERR_AUTH = 3, // Authentication failure
ERR_LOAD = 4 // System overloaded
};
¶ ↑
xdr source ============================================================¶ ↑
struct FeeBumpTransaction
{
MuxedAccount feeSource;
int64 fee;
union switch (EnvelopeType type)
{
case ENVELOPE_TYPE_TX:
TransactionV1Envelope v1;
}
innerTx;
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union switch (EnvelopeType type)
{
case ENVELOPE_TYPE_TX:
TransactionV1Envelope v1;
}
¶ ↑
xdr source ============================================================¶ ↑
struct FeeBumpTransactionEnvelope
{
FeeBumpTransaction tx;
/* Each decorated signature is a signature over the SHA256 hash of
* a TransactionSignaturePayload */
DecoratedSignature signatures<20>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct Hello
{
uint32 ledgerVersion;
uint32 overlayVersion;
uint32 overlayMinVersion;
Hash networkID;
string versionStr<100>;
int listeningPort;
NodeID peerID;
AuthCert cert;
uint256 nonce;
};
¶ ↑
xdr source ============================================================¶ ↑
struct HmacSha256Key
{
opaque key[32];
};
¶ ↑
xdr source ============================================================¶ ↑
struct HmacSha256Mac
{
opaque mac[32];
};
¶ ↑
xdr source ============================================================¶ ↑
struct InflationPayout // or use PaymentResultAtom to limit types?
{
AccountID destination;
int64 amount;
};
¶ ↑
xdr source ============================================================¶ ↑
union InflationResult switch (InflationResultCode code)
{
case INFLATION_SUCCESS:
InflationPayout payouts<>;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum InflationResultCode
{
// codes considered as "success" for the operation
INFLATION_SUCCESS = 0,
// codes considered as "failure" for the operation
INFLATION_NOT_TIME = -1
};
¶ ↑
xdr source ============================================================¶ ↑
struct InnerTransactionResult
{
// Always 0. Here for binary compatibility.
int64 feeCharged;
union switch (TransactionResultCode code)
{
// txFEE_BUMP_INNER_SUCCESS is not included
case txSUCCESS:
case txFAILED:
OperationResult results<>;
case txTOO_EARLY:
case txTOO_LATE:
case txMISSING_OPERATION:
case txBAD_SEQ:
case txBAD_AUTH:
case txINSUFFICIENT_BALANCE:
case txNO_ACCOUNT:
case txINSUFFICIENT_FEE:
case txBAD_AUTH_EXTRA:
case txINTERNAL_ERROR:
case txNOT_SUPPORTED:
// txFEE_BUMP_INNER_FAILED is not included
case txBAD_SPONSORSHIP:
void;
}
result;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union switch (TransactionResultCode code)
{
// txFEE_BUMP_INNER_SUCCESS is not included
case txSUCCESS:
case txFAILED:
OperationResult results<>;
case txTOO_EARLY:
case txTOO_LATE:
case txMISSING_OPERATION:
case txBAD_SEQ:
case txBAD_AUTH:
case txINSUFFICIENT_BALANCE:
case txNO_ACCOUNT:
case txINSUFFICIENT_FEE:
case txBAD_AUTH_EXTRA:
case txINTERNAL_ERROR:
case txNOT_SUPPORTED:
// txFEE_BUMP_INNER_FAILED is not included
case txBAD_SPONSORSHIP:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct InnerTransactionResultPair
{
Hash transactionHash; // hash of the inner transaction
InnerTransactionResult result; // result for the inner transaction
};
¶ ↑
xdr source ============================================================¶ ↑
enum IPAddrType
{
IPv4 = 0,
IPv6 = 1
};
¶ ↑
xdr source ============================================================¶ ↑
union LedgerCloseMeta switch (int v)
{
case 0:
LedgerCloseMetaV0 v0;
};
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerCloseMetaV0
{
LedgerHeaderHistoryEntry ledgerHeader;
// NB: txSet is sorted in "Hash order"
TransactionSet txSet;
// NB: transactions are sorted in apply order here
// fees for all transactions are processed first
// followed by applying transactions
TransactionResultMeta txProcessing<>;
// upgrades are applied last
UpgradeEntryMeta upgradesProcessing<>;
// other misc information attached to the ledger close
SCPHistoryEntry scpInfo<>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerCloseValueSignature
{
NodeID nodeID; // which node introduced the value
Signature signature; // nodeID's signature
};
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerEntry
{
uint32 lastModifiedLedgerSeq; // ledger the LedgerEntry was last changed
union switch (LedgerEntryType type)
{
case ACCOUNT:
AccountEntry account;
case TRUSTLINE:
TrustLineEntry trustLine;
case OFFER:
OfferEntry offer;
case DATA:
DataEntry data;
case CLAIMABLE_BALANCE:
ClaimableBalanceEntry claimableBalance;
}
data;
// reserved for future use
union switch (int v)
{
case 0:
void;
case 1:
LedgerEntryExtensionV1 v1;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (LedgerEntryType type)
{
case ACCOUNT:
AccountEntry account;
case TRUSTLINE:
TrustLineEntry trustLine;
case OFFER:
OfferEntry offer;
case DATA:
DataEntry data;
case CLAIMABLE_BALANCE:
ClaimableBalanceEntry claimableBalance;
}
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
case 1:
LedgerEntryExtensionV1 v1;
}
¶ ↑
xdr source ============================================================¶ ↑
union LedgerEntryChange switch (LedgerEntryChangeType type)
{
case LEDGER_ENTRY_CREATED:
LedgerEntry created;
case LEDGER_ENTRY_UPDATED:
LedgerEntry updated;
case LEDGER_ENTRY_REMOVED:
LedgerKey removed;
case LEDGER_ENTRY_STATE:
LedgerEntry state;
};
¶ ↑
xdr source ============================================================¶ ↑
enum LedgerEntryChangeType
{
LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger
LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger
LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger
LEDGER_ENTRY_STATE = 3 // value of the entry
};
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerEntryExtensionV1
{
SponsorshipDescriptor sponsoringID;
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
enum LedgerEntryType
{
ACCOUNT = 0,
TRUSTLINE = 1,
OFFER = 2,
DATA = 3,
CLAIMABLE_BALANCE = 4
};
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerHeader
{
uint32 ledgerVersion; // the protocol version of the ledger
Hash previousLedgerHash; // hash of the previous ledger header
DigitalBitsValue scpValue; // what consensus agreed to
Hash txSetResultHash; // the TransactionResultSet that led to this ledger
Hash bucketListHash; // hash of the ledger state
uint32 ledgerSeq; // sequence number of this ledger
int64 totalCoins; // total number of nibbs in existence.
// 10,000,000 nibbs in 1 XDB
int64 feePool; // fees burned since last inflation run
uint32 inflationSeq; // inflation sequence number
uint64 idPool; // last used global ID, used for generating objects
uint32 baseFee; // base fee per operation in nibbs
uint32 baseReserve; // account base reserve in nibbs
uint32 maxTxSetSize; // maximum size a transaction set can be
Hash skipList[4]; // hashes of ledgers in the past. allows you to jump back
// in time without walking the chain back ledger by ledger
// each slot contains the oldest ledger that is mod of
// either 50 5000 50000 or 500000 depending on index
// skipList[0] mod(50), skipList[1] mod(5000), etc
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerHeaderHistoryEntry
{
Hash hash;
LedgerHeader header;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union LedgerKey switch (LedgerEntryType type)
{
case ACCOUNT:
struct
{
AccountID accountID;
} account;
case TRUSTLINE:
struct
{
AccountID accountID;
Asset asset;
} trustLine;
case OFFER:
struct
{
AccountID sellerID;
int64 offerID;
} offer;
case DATA:
struct
{
AccountID accountID;
string64 dataName;
} data;
case CLAIMABLE_BALANCE:
struct
{
ClaimableBalanceID balanceID;
} claimableBalance;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID accountID;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
ClaimableBalanceID balanceID;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID accountID;
string64 dataName;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID sellerID;
int64 offerID;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID accountID;
Asset asset;
}
¶ ↑
xdr source ============================================================¶ ↑
struct LedgerSCPMessages
{
uint32 ledgerSeq;
SCPEnvelope messages<>;
};
¶ ↑
xdr source ============================================================¶ ↑
union LedgerUpgrade switch (LedgerUpgradeType type)
{
case LEDGER_UPGRADE_VERSION:
uint32 newLedgerVersion; // update ledgerVersion
case LEDGER_UPGRADE_BASE_FEE:
uint32 newBaseFee; // update baseFee
case LEDGER_UPGRADE_MAX_TX_SET_SIZE:
uint32 newMaxTxSetSize; // update maxTxSetSize
case LEDGER_UPGRADE_BASE_RESERVE:
uint32 newBaseReserve; // update baseReserve
};
¶ ↑
xdr source ============================================================¶ ↑
enum LedgerUpgradeType
{
LEDGER_UPGRADE_VERSION = 1,
LEDGER_UPGRADE_BASE_FEE = 2,
LEDGER_UPGRADE_MAX_TX_SET_SIZE = 3,
LEDGER_UPGRADE_BASE_RESERVE = 4
};
¶ ↑
xdr source ============================================================¶ ↑
struct Liabilities
{
int64 buying;
int64 selling;
};
¶ ↑
xdr source ============================================================¶ ↑
struct ManageBuyOfferOp
{
Asset selling;
Asset buying;
int64 buyAmount; // amount being bought. if set to 0, delete the offer
Price price; // price of thing being bought in terms of what you are
// selling
// 0=create a new offer, otherwise edit an existing offer
int64 offerID;
};
¶ ↑
xdr source ============================================================¶ ↑
union ManageBuyOfferResult switch (ManageBuyOfferResultCode code)
{
case MANAGE_BUY_OFFER_SUCCESS:
ManageOfferSuccessResult success;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ManageBuyOfferResultCode
{
// codes considered as "success" for the operation
MANAGE_BUY_OFFER_SUCCESS = 0,
// codes considered as "failure" for the operation
MANAGE_BUY_OFFER_MALFORMED = -1, // generated offer would be invalid
MANAGE_BUY_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling
MANAGE_BUY_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying
MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell
MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy
MANAGE_BUY_OFFER_LINE_FULL = -6, // can't receive more of what it's buying
MANAGE_BUY_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell
MANAGE_BUY_OFFER_CROSS_SELF = -8, // would cross an offer from the same user
MANAGE_BUY_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling
MANAGE_BUY_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying
// update errors
MANAGE_BUY_OFFER_NOT_FOUND =
-11, // offerID does not match an existing offer
MANAGE_BUY_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer
};
¶ ↑
xdr source ============================================================¶ ↑
struct ManageDataOp
{
string64 dataName;
DataValue* dataValue; // set to null to clear
};
¶ ↑
xdr source ============================================================¶ ↑
union ManageDataResult switch (ManageDataResultCode code)
{
case MANAGE_DATA_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ManageDataResultCode
{
// codes considered as "success" for the operation
MANAGE_DATA_SUCCESS = 0,
// codes considered as "failure" for the operation
MANAGE_DATA_NOT_SUPPORTED_YET =
-1, // The network hasn't moved to this protocol change yet
MANAGE_DATA_NAME_NOT_FOUND =
-2, // Trying to remove a Data Entry that isn't there
MANAGE_DATA_LOW_RESERVE = -3, // not enough funds to create a new Data Entry
MANAGE_DATA_INVALID_NAME = -4 // Name not a valid string
};
¶ ↑
xdr source ============================================================¶ ↑
enum ManageOfferEffect
{
MANAGE_OFFER_CREATED = 0,
MANAGE_OFFER_UPDATED = 1,
MANAGE_OFFER_DELETED = 2
};
¶ ↑
xdr source ============================================================¶ ↑
struct ManageOfferSuccessResult
{
// offers that got claimed while creating this offer
ClaimOfferAtom offersClaimed<>;
union switch (ManageOfferEffect effect)
{
case MANAGE_OFFER_CREATED:
case MANAGE_OFFER_UPDATED:
OfferEntry offer;
default:
void;
}
offer;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (ManageOfferEffect effect)
{
case MANAGE_OFFER_CREATED:
case MANAGE_OFFER_UPDATED:
OfferEntry offer;
default:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct ManageSellOfferOp
{
Asset selling;
Asset buying;
int64 amount; // amount being sold. if set to 0, delete the offer
Price price; // price of thing being sold in terms of what you are buying
// 0=create a new offer, otherwise edit an existing offer
int64 offerID;
};
¶ ↑
xdr source ============================================================¶ ↑
union ManageSellOfferResult switch (ManageSellOfferResultCode code)
{
case MANAGE_SELL_OFFER_SUCCESS:
ManageOfferSuccessResult success;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ManageSellOfferResultCode
{
// codes considered as "success" for the operation
MANAGE_SELL_OFFER_SUCCESS = 0,
// codes considered as "failure" for the operation
MANAGE_SELL_OFFER_MALFORMED = -1, // generated offer would be invalid
MANAGE_SELL_OFFER_SELL_NO_TRUST =
-2, // no trust line for what we're selling
MANAGE_SELL_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying
MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell
MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy
MANAGE_SELL_OFFER_LINE_FULL = -6, // can't receive more of what it's buying
MANAGE_SELL_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell
MANAGE_SELL_OFFER_CROSS_SELF =
-8, // would cross an offer from the same user
MANAGE_SELL_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling
MANAGE_SELL_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying
// update errors
MANAGE_SELL_OFFER_NOT_FOUND =
-11, // offerID does not match an existing offer
MANAGE_SELL_OFFER_LOW_RESERVE =
-12 // not enough funds to create a new Offer
};
¶ ↑
xdr source ============================================================¶ ↑
union Memo switch (MemoType type)
{
case MEMO_NONE:
void;
case MEMO_TEXT:
string text<28>;
case MEMO_ID:
uint64 id;
case MEMO_HASH:
Hash hash; // the hash of what to pull from the content server
case MEMO_RETURN:
Hash retHash; // the hash of the tx you are rejecting
};
¶ ↑
xdr source ============================================================¶ ↑
enum MemoType
{
MEMO_NONE = 0,
MEMO_TEXT = 1,
MEMO_ID = 2,
MEMO_HASH = 3,
MEMO_RETURN = 4
};
¶ ↑
xdr source ============================================================¶ ↑
enum MessageType
{
ERROR_MSG = 0,
AUTH = 2,
DONT_HAVE = 3,
GET_PEERS = 4, // gets a list of peers this guy knows about
PEERS = 5,
GET_TX_SET = 6, // gets a particular txset by hash
TX_SET = 7,
TRANSACTION = 8, // pass on a tx you have heard about
// SCP
GET_SCP_QUORUMSET = 9,
SCP_QUORUMSET = 10,
SCP_MESSAGE = 11,
GET_SCP_STATE = 12,
// new messages
HELLO = 13,
SURVEY_REQUEST = 14,
SURVEY_RESPONSE = 15
};
¶ ↑
xdr source ============================================================¶ ↑
union MuxedAccount switch (CryptoKeyType type)
{
case KEY_TYPE_ED25519:
uint256 ed25519;
case KEY_TYPE_MUXED_ED25519:
struct
{
uint64 id;
uint256 ed25519;
} med25519;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
uint64 id;
uint256 ed25519;
}
¶ ↑
xdr source ============================================================¶ ↑
struct OfferEntry
{
AccountID sellerID;
int64 offerID;
Asset selling; // A
Asset buying; // B
int64 amount; // amount of A
/* price for this offer:
price of A in terms of B
price=AmountB/AmountA=priceNumerator/priceDenominator
price is after fees
*/
Price price;
uint32 flags; // see OfferEntryFlags
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
enum OfferEntryFlags
{
// issuer has authorized account to perform transactions with its credit
PASSIVE_FLAG = 1
};
¶ ↑
xdr source ============================================================¶ ↑
struct Operation
{
// sourceAccount is the account used to run the operation
// if not set, the runtime defaults to "sourceAccount" specified at
// the transaction level
MuxedAccount* sourceAccount;
union switch (OperationType type)
{
case CREATE_ACCOUNT:
CreateAccountOp createAccountOp;
case PAYMENT:
PaymentOp paymentOp;
case PATH_PAYMENT_STRICT_RECEIVE:
PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp;
case MANAGE_SELL_OFFER:
ManageSellOfferOp manageSellOfferOp;
case CREATE_PASSIVE_SELL_OFFER:
CreatePassiveSellOfferOp createPassiveSellOfferOp;
case SET_OPTIONS:
SetOptionsOp setOptionsOp;
case CHANGE_TRUST:
ChangeTrustOp changeTrustOp;
case ALLOW_TRUST:
AllowTrustOp allowTrustOp;
case ACCOUNT_MERGE:
MuxedAccount destination;
case INFLATION:
void;
case MANAGE_DATA:
ManageDataOp manageDataOp;
case BUMP_SEQUENCE:
BumpSequenceOp bumpSequenceOp;
case MANAGE_BUY_OFFER:
ManageBuyOfferOp manageBuyOfferOp;
case PATH_PAYMENT_STRICT_SEND:
PathPaymentStrictSendOp pathPaymentStrictSendOp;
case CREATE_CLAIMABLE_BALANCE:
CreateClaimableBalanceOp createClaimableBalanceOp;
case CLAIM_CLAIMABLE_BALANCE:
ClaimClaimableBalanceOp claimClaimableBalanceOp;
case BEGIN_SPONSORING_FUTURE_RESERVES:
BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp;
case END_SPONSORING_FUTURE_RESERVES:
void;
case REVOKE_SPONSORSHIP:
RevokeSponsorshipOp revokeSponsorshipOp;
}
body;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (OperationType type)
{
case CREATE_ACCOUNT:
CreateAccountOp createAccountOp;
case PAYMENT:
PaymentOp paymentOp;
case PATH_PAYMENT_STRICT_RECEIVE:
PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp;
case MANAGE_SELL_OFFER:
ManageSellOfferOp manageSellOfferOp;
case CREATE_PASSIVE_SELL_OFFER:
CreatePassiveSellOfferOp createPassiveSellOfferOp;
case SET_OPTIONS:
SetOptionsOp setOptionsOp;
case CHANGE_TRUST:
ChangeTrustOp changeTrustOp;
case ALLOW_TRUST:
AllowTrustOp allowTrustOp;
case ACCOUNT_MERGE:
MuxedAccount destination;
case INFLATION:
void;
case MANAGE_DATA:
ManageDataOp manageDataOp;
case BUMP_SEQUENCE:
BumpSequenceOp bumpSequenceOp;
case MANAGE_BUY_OFFER:
ManageBuyOfferOp manageBuyOfferOp;
case PATH_PAYMENT_STRICT_SEND:
PathPaymentStrictSendOp pathPaymentStrictSendOp;
case CREATE_CLAIMABLE_BALANCE:
CreateClaimableBalanceOp createClaimableBalanceOp;
case CLAIM_CLAIMABLE_BALANCE:
ClaimClaimableBalanceOp claimClaimableBalanceOp;
case BEGIN_SPONSORING_FUTURE_RESERVES:
BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp;
case END_SPONSORING_FUTURE_RESERVES:
void;
case REVOKE_SPONSORSHIP:
RevokeSponsorshipOp revokeSponsorshipOp;
}
¶ ↑
xdr source ============================================================¶ ↑
union OperationID switch (EnvelopeType type)
{
case ENVELOPE_TYPE_OP_ID:
struct
{
MuxedAccount sourceAccount;
SequenceNumber seqNum;
uint32 opNum;
} id;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
MuxedAccount sourceAccount;
SequenceNumber seqNum;
uint32 opNum;
}
¶ ↑
xdr source ============================================================¶ ↑
struct OperationMeta
{
LedgerEntryChanges changes;
};
¶ ↑
xdr source ============================================================¶ ↑
union OperationResult switch (OperationResultCode code)
{
case opINNER:
union switch (OperationType type)
{
case CREATE_ACCOUNT:
CreateAccountResult createAccountResult;
case PAYMENT:
PaymentResult paymentResult;
case PATH_PAYMENT_STRICT_RECEIVE:
PathPaymentStrictReceiveResult pathPaymentStrictReceiveResult;
case MANAGE_SELL_OFFER:
ManageSellOfferResult manageSellOfferResult;
case CREATE_PASSIVE_SELL_OFFER:
ManageSellOfferResult createPassiveSellOfferResult;
case SET_OPTIONS:
SetOptionsResult setOptionsResult;
case CHANGE_TRUST:
ChangeTrustResult changeTrustResult;
case ALLOW_TRUST:
AllowTrustResult allowTrustResult;
case ACCOUNT_MERGE:
AccountMergeResult accountMergeResult;
case INFLATION:
InflationResult inflationResult;
case MANAGE_DATA:
ManageDataResult manageDataResult;
case BUMP_SEQUENCE:
BumpSequenceResult bumpSeqResult;
case MANAGE_BUY_OFFER:
ManageBuyOfferResult manageBuyOfferResult;
case PATH_PAYMENT_STRICT_SEND:
PathPaymentStrictSendResult pathPaymentStrictSendResult;
case CREATE_CLAIMABLE_BALANCE:
CreateClaimableBalanceResult createClaimableBalanceResult;
case CLAIM_CLAIMABLE_BALANCE:
ClaimClaimableBalanceResult claimClaimableBalanceResult;
case BEGIN_SPONSORING_FUTURE_RESERVES:
BeginSponsoringFutureReservesResult beginSponsoringFutureReservesResult;
case END_SPONSORING_FUTURE_RESERVES:
EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;
case REVOKE_SPONSORSHIP:
RevokeSponsorshipResult revokeSponsorshipResult;
}
tr;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (OperationType type)
{
case CREATE_ACCOUNT:
CreateAccountResult createAccountResult;
case PAYMENT:
PaymentResult paymentResult;
case PATH_PAYMENT_STRICT_RECEIVE:
PathPaymentStrictReceiveResult pathPaymentStrictReceiveResult;
case MANAGE_SELL_OFFER:
ManageSellOfferResult manageSellOfferResult;
case CREATE_PASSIVE_SELL_OFFER:
ManageSellOfferResult createPassiveSellOfferResult;
case SET_OPTIONS:
SetOptionsResult setOptionsResult;
case CHANGE_TRUST:
ChangeTrustResult changeTrustResult;
case ALLOW_TRUST:
AllowTrustResult allowTrustResult;
case ACCOUNT_MERGE:
AccountMergeResult accountMergeResult;
case INFLATION:
InflationResult inflationResult;
case MANAGE_DATA:
ManageDataResult manageDataResult;
case BUMP_SEQUENCE:
BumpSequenceResult bumpSeqResult;
case MANAGE_BUY_OFFER:
ManageBuyOfferResult manageBuyOfferResult;
case PATH_PAYMENT_STRICT_SEND:
PathPaymentStrictSendResult pathPaymentStrictSendResult;
case CREATE_CLAIMABLE_BALANCE:
CreateClaimableBalanceResult createClaimableBalanceResult;
case CLAIM_CLAIMABLE_BALANCE:
ClaimClaimableBalanceResult claimClaimableBalanceResult;
case BEGIN_SPONSORING_FUTURE_RESERVES:
BeginSponsoringFutureReservesResult beginSponsoringFutureReservesResult;
case END_SPONSORING_FUTURE_RESERVES:
EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;
case REVOKE_SPONSORSHIP:
RevokeSponsorshipResult revokeSponsorshipResult;
}
¶ ↑
xdr source ============================================================¶ ↑
enum OperationResultCode
{
opINNER = 0, // inner object result is valid
opBAD_AUTH = -1, // too few valid signatures / wrong network
opNO_ACCOUNT = -2, // source account was not found
opNOT_SUPPORTED = -3, // operation not supported at this time
opTOO_MANY_SUBENTRIES = -4, // max number of subentries already reached
opEXCEEDED_WORK_LIMIT = -5, // operation did too much work
opTOO_MANY_SPONSORING = -6 // account is sponsoring too many entries
};
¶ ↑
xdr source ============================================================¶ ↑
enum OperationType
{
CREATE_ACCOUNT = 0,
PAYMENT = 1,
PATH_PAYMENT_STRICT_RECEIVE = 2,
MANAGE_SELL_OFFER = 3,
CREATE_PASSIVE_SELL_OFFER = 4,
SET_OPTIONS = 5,
CHANGE_TRUST = 6,
ALLOW_TRUST = 7,
ACCOUNT_MERGE = 8,
INFLATION = 9,
MANAGE_DATA = 10,
BUMP_SEQUENCE = 11,
MANAGE_BUY_OFFER = 12,
PATH_PAYMENT_STRICT_SEND = 13,
CREATE_CLAIMABLE_BALANCE = 14,
CLAIM_CLAIMABLE_BALANCE = 15,
BEGIN_SPONSORING_FUTURE_RESERVES = 16,
END_SPONSORING_FUTURE_RESERVES = 17,
REVOKE_SPONSORSHIP = 18
};
¶ ↑
xdr source ============================================================¶ ↑
struct PathPaymentStrictReceiveOp
{
Asset sendAsset; // asset we pay with
int64 sendMax; // the maximum amount of sendAsset to
// send (excluding fees).
// The operation will fail if can't be met
MuxedAccount destination; // recipient of the payment
Asset destAsset; // what they end up with
int64 destAmount; // amount they end up with
Asset path<5>; // additional hops it must go through to get there
};
¶ ↑
xdr source ============================================================¶ ↑
union PathPaymentStrictReceiveResult switch (
PathPaymentStrictReceiveResultCode code)
{
case PATH_PAYMENT_STRICT_RECEIVE_SUCCESS:
struct
{
ClaimOfferAtom offers<>;
SimplePaymentResult last;
} success;
case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER:
Asset noIssuer; // the asset that caused the error
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
ClaimOfferAtom offers<>;
SimplePaymentResult last;
}
¶ ↑
xdr source ============================================================¶ ↑
enum PathPaymentStrictReceiveResultCode
{
// codes considered as "success" for the operation
PATH_PAYMENT_STRICT_RECEIVE_SUCCESS = 0, // success
// codes considered as "failure" for the operation
PATH_PAYMENT_STRICT_RECEIVE_MALFORMED = -1, // bad input
PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED =
-2, // not enough funds in source account
PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST =
-3, // no trust line on source account
PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED =
-4, // source not authorized to transfer
PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION =
-5, // destination account does not exist
PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST =
-6, // dest missing a trust line for asset
PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED =
-7, // dest not authorized to hold asset
PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL =
-8, // dest would go above their limit
PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER = -9, // missing issuer on one asset
PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS =
-10, // not enough offers to satisfy path
PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF =
-11, // would cross one of its own offers
PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX = -12 // could not satisfy sendmax
};
¶ ↑
xdr source ============================================================¶ ↑
struct PathPaymentStrictSendOp
{
Asset sendAsset; // asset we pay with
int64 sendAmount; // amount of sendAsset to send (excluding fees)
MuxedAccount destination; // recipient of the payment
Asset destAsset; // what they end up with
int64 destMin; // the minimum amount of dest asset to
// be received
// The operation will fail if it can't be met
Asset path<5>; // additional hops it must go through to get there
};
¶ ↑
xdr source ============================================================¶ ↑
union PathPaymentStrictSendResult switch (PathPaymentStrictSendResultCode code)
{
case PATH_PAYMENT_STRICT_SEND_SUCCESS:
struct
{
ClaimOfferAtom offers<>;
SimplePaymentResult last;
} success;
case PATH_PAYMENT_STRICT_SEND_NO_ISSUER:
Asset noIssuer; // the asset that caused the error
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
ClaimOfferAtom offers<>;
SimplePaymentResult last;
}
¶ ↑
xdr source ============================================================¶ ↑
enum PathPaymentStrictSendResultCode
{
// codes considered as "success" for the operation
PATH_PAYMENT_STRICT_SEND_SUCCESS = 0, // success
// codes considered as "failure" for the operation
PATH_PAYMENT_STRICT_SEND_MALFORMED = -1, // bad input
PATH_PAYMENT_STRICT_SEND_UNDERFUNDED =
-2, // not enough funds in source account
PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST =
-3, // no trust line on source account
PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED =
-4, // source not authorized to transfer
PATH_PAYMENT_STRICT_SEND_NO_DESTINATION =
-5, // destination account does not exist
PATH_PAYMENT_STRICT_SEND_NO_TRUST =
-6, // dest missing a trust line for asset
PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED =
-7, // dest not authorized to hold asset
PATH_PAYMENT_STRICT_SEND_LINE_FULL = -8, // dest would go above their limit
PATH_PAYMENT_STRICT_SEND_NO_ISSUER = -9, // missing issuer on one asset
PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS =
-10, // not enough offers to satisfy path
PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF =
-11, // would cross one of its own offers
PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN = -12 // could not satisfy destMin
};
¶ ↑
xdr source ============================================================¶ ↑
struct PaymentOp
{
MuxedAccount destination; // recipient of the payment
Asset asset; // what they end up with
int64 amount; // amount they end up with
};
¶ ↑
xdr source ============================================================¶ ↑
union PaymentResult switch (PaymentResultCode code)
{
case PAYMENT_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum PaymentResultCode
{
// codes considered as "success" for the operation
PAYMENT_SUCCESS = 0, // payment successfuly completed
// codes considered as "failure" for the operation
PAYMENT_MALFORMED = -1, // bad input
PAYMENT_UNDERFUNDED = -2, // not enough funds in source account
PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account
PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer
PAYMENT_NO_DESTINATION = -5, // destination account does not exist
PAYMENT_NO_TRUST = -6, // destination missing a trust line for asset
PAYMENT_NOT_AUTHORIZED = -7, // destination not authorized to hold asset
PAYMENT_LINE_FULL = -8, // destination would go above their limit
PAYMENT_NO_ISSUER = -9 // missing issuer on asset
};
¶ ↑
xdr source ============================================================¶ ↑
struct PeerAddress
{
union switch (IPAddrType type)
{
case IPv4:
opaque ipv4[4];
case IPv6:
opaque ipv6[16];
}
ip;
uint32 port;
uint32 numFailures;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (IPAddrType type)
{
case IPv4:
opaque ipv4[4];
case IPv6:
opaque ipv6[16];
}
¶ ↑
xdr source ============================================================¶ ↑
struct PeerStats
{
NodeID id;
string versionStr<100>;
uint64 messagesRead;
uint64 messagesWritten;
uint64 bytesRead;
uint64 bytesWritten;
uint64 secondsConnected;
uint64 uniqueFloodBytesRecv;
uint64 duplicateFloodBytesRecv;
uint64 uniqueFetchBytesRecv;
uint64 duplicateFetchBytesRecv;
uint64 uniqueFloodMessageRecv;
uint64 duplicateFloodMessageRecv;
uint64 uniqueFetchMessageRecv;
uint64 duplicateFetchMessageRecv;
};
¶ ↑
xdr source ============================================================¶ ↑
struct Price
{
int32 n; // numerator
int32 d; // denominator
};
¶ ↑
xdr source ============================================================¶ ↑
union PublicKey switch (PublicKeyType type)
{
case PUBLIC_KEY_TYPE_ED25519:
uint256 ed25519;
};
¶ ↑
xdr source ============================================================¶ ↑
enum PublicKeyType
{
PUBLIC_KEY_TYPE_ED25519 = KEY_TYPE_ED25519
};
¶ ↑
xdr source ============================================================¶ ↑
union RevokeSponsorshipOp switch (RevokeSponsorshipType type)
{
case REVOKE_SPONSORSHIP_LEDGER_ENTRY:
LedgerKey ledgerKey;
case REVOKE_SPONSORSHIP_SIGNER:
struct
{
AccountID accountID;
SignerKey signerKey;
}
signer;
};
¶ ↑
xdr source ============================================================¶ ↑
struct
{
AccountID accountID;
SignerKey signerKey;
}
¶ ↑
xdr source ============================================================¶ ↑
union RevokeSponsorshipResult switch (RevokeSponsorshipResultCode code)
{
case REVOKE_SPONSORSHIP_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum RevokeSponsorshipResultCode
{
// codes considered as "success" for the operation
REVOKE_SPONSORSHIP_SUCCESS = 0,
// codes considered as "failure" for the operation
REVOKE_SPONSORSHIP_DOES_NOT_EXIST = -1,
REVOKE_SPONSORSHIP_NOT_SPONSOR = -2,
REVOKE_SPONSORSHIP_LOW_RESERVE = -3,
REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE = -4
};
¶ ↑
xdr source ============================================================¶ ↑
enum RevokeSponsorshipType
{
REVOKE_SPONSORSHIP_LEDGER_ENTRY = 0,
REVOKE_SPONSORSHIP_SIGNER = 1
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPBallot
{
uint32 counter; // n
Value value; // x
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPEnvelope
{
SCPStatement statement;
Signature signature;
};
¶ ↑
xdr source ============================================================¶ ↑
union SCPHistoryEntry switch (int v)
{
case 0:
SCPHistoryEntryV0 v0;
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPHistoryEntryV0
{
SCPQuorumSet quorumSets<>; // additional quorum sets used by ledgerMessages
LedgerSCPMessages ledgerMessages;
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPNomination
{
Hash quorumSetHash; // D
Value votes<>; // X
Value accepted<>; // Y
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPQuorumSet
{
uint32 threshold;
PublicKey validators<>;
SCPQuorumSet innerSets<>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct SCPStatement
{
NodeID nodeID; // v
uint64 slotIndex; // i
union switch (SCPStatementType type)
{
case SCP_ST_PREPARE:
struct
{
Hash quorumSetHash; // D
SCPBallot ballot; // b
SCPBallot* prepared; // p
SCPBallot* preparedPrime; // p'
uint32 nC; // c.n
uint32 nH; // h.n
} prepare;
case SCP_ST_CONFIRM:
struct
{
SCPBallot ballot; // b
uint32 nPrepared; // p.n
uint32 nCommit; // c.n
uint32 nH; // h.n
Hash quorumSetHash; // D
} confirm;
case SCP_ST_EXTERNALIZE:
struct
{
SCPBallot commit; // c
uint32 nH; // h.n
Hash commitQuorumSetHash; // D used before EXTERNALIZE
} externalize;
case SCP_ST_NOMINATE:
SCPNomination nominate;
}
pledges;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (SCPStatementType type)
{
case SCP_ST_PREPARE:
struct
{
Hash quorumSetHash; // D
SCPBallot ballot; // b
SCPBallot* prepared; // p
SCPBallot* preparedPrime; // p'
uint32 nC; // c.n
uint32 nH; // h.n
} prepare;
case SCP_ST_CONFIRM:
struct
{
SCPBallot ballot; // b
uint32 nPrepared; // p.n
uint32 nCommit; // c.n
uint32 nH; // h.n
Hash quorumSetHash; // D
} confirm;
case SCP_ST_EXTERNALIZE:
struct
{
SCPBallot commit; // c
uint32 nH; // h.n
Hash commitQuorumSetHash; // D used before EXTERNALIZE
} externalize;
case SCP_ST_NOMINATE:
SCPNomination nominate;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
SCPBallot ballot; // b
uint32 nPrepared; // p.n
uint32 nCommit; // c.n
uint32 nH; // h.n
Hash quorumSetHash; // D
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
SCPBallot commit; // c
uint32 nH; // h.n
Hash commitQuorumSetHash; // D used before EXTERNALIZE
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
Hash quorumSetHash; // D
SCPBallot ballot; // b
SCPBallot* prepared; // p
SCPBallot* preparedPrime; // p'
uint32 nC; // c.n
uint32 nH; // h.n
}
¶ ↑
xdr source ============================================================¶ ↑
enum SCPStatementType
{
SCP_ST_PREPARE = 0,
SCP_ST_CONFIRM = 1,
SCP_ST_EXTERNALIZE = 2,
SCP_ST_NOMINATE = 3
};
¶ ↑
xdr source ============================================================¶ ↑
struct SetOptionsOp
{
AccountID* inflationDest; // sets the inflation destination
uint32* clearFlags; // which flags to clear
uint32* setFlags; // which flags to set
// account threshold manipulation
uint32* masterWeight; // weight of the master account
uint32* lowThreshold;
uint32* medThreshold;
uint32* highThreshold;
string32* homeDomain; // sets the home domain
// Add, update or remove a signer for the account
// signer is deleted if the weight is 0
Signer* signer;
};
¶ ↑
xdr source ============================================================¶ ↑
union SetOptionsResult switch (SetOptionsResultCode code)
{
case SET_OPTIONS_SUCCESS:
void;
default:
void;
};
¶ ↑
xdr source ============================================================¶ ↑
enum SetOptionsResultCode
{
// codes considered as "success" for the operation
SET_OPTIONS_SUCCESS = 0,
// codes considered as "failure" for the operation
SET_OPTIONS_LOW_RESERVE = -1, // not enough funds to add a signer
SET_OPTIONS_TOO_MANY_SIGNERS = -2, // max number of signers already reached
SET_OPTIONS_BAD_FLAGS = -3, // invalid combination of clear/set flags
SET_OPTIONS_INVALID_INFLATION = -4, // inflation account does not exist
SET_OPTIONS_CANT_CHANGE = -5, // can no longer change this option
SET_OPTIONS_UNKNOWN_FLAG = -6, // can't set an unknown flag
SET_OPTIONS_THRESHOLD_OUT_OF_RANGE = -7, // bad value for weight/threshold
SET_OPTIONS_BAD_SIGNER = -8, // signer cannot be masterkey
SET_OPTIONS_INVALID_HOME_DOMAIN = -9 // malformed home domain
};
¶ ↑
xdr source ============================================================¶ ↑
struct SignedSurveyRequestMessage
{
Signature requestSignature;
SurveyRequestMessage request;
};
¶ ↑
xdr source ============================================================¶ ↑
struct SignedSurveyResponseMessage
{
Signature responseSignature;
SurveyResponseMessage response;
};
¶ ↑
xdr source ============================================================¶ ↑
struct Signer
{
SignerKey key;
uint32 weight; // really only need 1 byte
};
¶ ↑
xdr source ============================================================¶ ↑
union SignerKey switch (SignerKeyType type)
{
case SIGNER_KEY_TYPE_ED25519:
uint256 ed25519;
case SIGNER_KEY_TYPE_PRE_AUTH_TX:
/* SHA-256 Hash of TransactionSignaturePayload structure */
uint256 preAuthTx;
case SIGNER_KEY_TYPE_HASH_X:
/* Hash of random 256 bit preimage X */
uint256 hashX;
};
¶ ↑
xdr source ============================================================¶ ↑
enum SignerKeyType
{
SIGNER_KEY_TYPE_ED25519 = KEY_TYPE_ED25519,
SIGNER_KEY_TYPE_PRE_AUTH_TX = KEY_TYPE_PRE_AUTH_TX,
SIGNER_KEY_TYPE_HASH_X = KEY_TYPE_HASH_X
};
¶ ↑
xdr source ============================================================¶ ↑
struct SimplePaymentResult
{
AccountID destination;
Asset asset;
int64 amount;
};
¶ ↑
xdr source ============================================================¶ ↑
enum SurveyMessageCommandType
{
SURVEY_TOPOLOGY = 0
};
¶ ↑
xdr source ============================================================¶ ↑
struct SurveyRequestMessage
{
NodeID surveyorPeerID;
NodeID surveyedPeerID;
uint32 ledgerNum;
Curve25519Public encryptionKey;
SurveyMessageCommandType commandType;
};
¶ ↑
xdr source ============================================================¶ ↑
union SurveyResponseBody switch (SurveyMessageCommandType type)
{
case SURVEY_TOPOLOGY:
TopologyResponseBody topologyResponseBody;
};
¶ ↑
xdr source ============================================================¶ ↑
struct SurveyResponseMessage
{
NodeID surveyorPeerID;
NodeID surveyedPeerID;
uint32 ledgerNum;
SurveyMessageCommandType commandType;
EncryptedBody encryptedBody;
};
¶ ↑
xdr source ============================================================¶ ↑
enum ThresholdIndexes
{
THRESHOLD_MASTER_WEIGHT = 0,
THRESHOLD_LOW = 1,
THRESHOLD_MED = 2,
THRESHOLD_HIGH = 3
};
¶ ↑
xdr source ============================================================¶ ↑
struct TimeBounds
{
TimePoint minTime;
TimePoint maxTime; // 0 here means no maxTime
};
¶ ↑
xdr source ============================================================¶ ↑
struct TopologyResponseBody
{
PeerStatList inboundPeers;
PeerStatList outboundPeers;
uint32 totalInboundPeerCount;
uint32 totalOutboundPeerCount;
};
¶ ↑
xdr source ============================================================¶ ↑
struct Transaction
{
// account used to run the transaction
MuxedAccount sourceAccount;
// the fee the sourceAccount will pay
uint32 fee;
// sequence number to consume in the account
SequenceNumber seqNum;
// validity range (inclusive) for the last ledger close time
TimeBounds* timeBounds;
Memo memo;
Operation operations<MAX_OPS_PER_TX>;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union TransactionEnvelope switch (EnvelopeType type)
{
case ENVELOPE_TYPE_TX_V0:
TransactionV0Envelope v0;
case ENVELOPE_TYPE_TX:
TransactionV1Envelope v1;
case ENVELOPE_TYPE_TX_FEE_BUMP:
FeeBumpTransactionEnvelope feeBump;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionHistoryEntry
{
uint32 ledgerSeq;
TransactionSet txSet;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionHistoryResultEntry
{
uint32 ledgerSeq;
TransactionResultSet txResultSet;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union TransactionMeta switch (int v)
{
case 0:
OperationMeta operations<>;
case 1:
TransactionMetaV1 v1;
case 2:
TransactionMetaV2 v2;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionMetaV1
{
LedgerEntryChanges txChanges; // tx level changes if any
OperationMeta operations<>; // meta for each operation
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionMetaV2
{
LedgerEntryChanges txChangesBefore; // tx level changes before operations
// are applied if any
OperationMeta operations<>; // meta for each operation
LedgerEntryChanges txChangesAfter; // tx level changes after operations are
// applied if any
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionResult
{
int64 feeCharged; // actual fee charged for the transaction
union switch (TransactionResultCode code)
{
case txFEE_BUMP_INNER_SUCCESS:
case txFEE_BUMP_INNER_FAILED:
InnerTransactionResultPair innerResultPair;
case txSUCCESS:
case txFAILED:
OperationResult results<>;
default:
void;
}
result;
// reserved for future use
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
union switch (TransactionResultCode code)
{
case txFEE_BUMP_INNER_SUCCESS:
case txFEE_BUMP_INNER_FAILED:
InnerTransactionResultPair innerResultPair;
case txSUCCESS:
case txFAILED:
OperationResult results<>;
default:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
enum TransactionResultCode
{
txFEE_BUMP_INNER_SUCCESS = 1, // fee bump inner transaction succeeded
txSUCCESS = 0, // all operations succeeded
txFAILED = -1, // one of the operations failed (none were applied)
txTOO_EARLY = -2, // ledger closeTime before minTime
txTOO_LATE = -3, // ledger closeTime after maxTime
txMISSING_OPERATION = -4, // no operation was specified
txBAD_SEQ = -5, // sequence number does not match source account
txBAD_AUTH = -6, // too few valid signatures / wrong network
txINSUFFICIENT_BALANCE = -7, // fee would bring account below reserve
txNO_ACCOUNT = -8, // source account not found
txINSUFFICIENT_FEE = -9, // fee is too small
txBAD_AUTH_EXTRA = -10, // unused signatures attached to transaction
txINTERNAL_ERROR = -11, // an unknown error occured
txNOT_SUPPORTED = -12, // transaction type not supported
txFEE_BUMP_INNER_FAILED = -13, // fee bump inner transaction failed
txBAD_SPONSORSHIP = -14 // sponsorship not confirmed
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionResultMeta
{
TransactionResultPair result;
LedgerEntryChanges feeProcessing;
TransactionMeta txApplyProcessing;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionResultPair
{
Hash transactionHash;
TransactionResult result; // result for the transaction
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionResultSet
{
TransactionResultPair results<>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionSet
{
Hash previousLedgerHash;
TransactionEnvelope txs<>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionSignaturePayload
{
Hash networkId;
union switch (EnvelopeType type)
{
// Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
case ENVELOPE_TYPE_TX:
Transaction tx;
case ENVELOPE_TYPE_TX_FEE_BUMP:
FeeBumpTransaction feeBump;
}
taggedTransaction;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (EnvelopeType type)
{
// Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0
case ENVELOPE_TYPE_TX:
Transaction tx;
case ENVELOPE_TYPE_TX_FEE_BUMP:
FeeBumpTransaction feeBump;
}
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionV0
{
uint256 sourceAccountEd25519;
uint32 fee;
SequenceNumber seqNum;
TimeBounds* timeBounds;
Memo memo;
Operation operations<MAX_OPS_PER_TX>;
union switch (int v)
{
case 0:
void;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionV0Envelope
{
TransactionV0 tx;
/* Each decorated signature is a signature over the SHA256 hash of
* a TransactionSignaturePayload */
DecoratedSignature signatures<20>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TransactionV1Envelope
{
Transaction tx;
/* Each decorated signature is a signature over the SHA256 hash of
* a TransactionSignaturePayload */
DecoratedSignature signatures<20>;
};
¶ ↑
xdr source ============================================================¶ ↑
struct TrustLineEntry
{
AccountID accountID; // account this trustline belongs to
Asset asset; // type of asset (with issuer)
int64 balance; // how much of this asset the user has.
// Asset defines the unit for this;
int64 limit; // balance cannot be above this
uint32 flags; // see TrustLineFlags
// reserved for future use
union switch (int v)
{
case 0:
void;
case 1:
struct
{
Liabilities liabilities;
union switch (int v)
{
case 0:
void;
}
ext;
} v1;
}
ext;
};
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
case 1:
struct
{
Liabilities liabilities;
union switch (int v)
{
case 0:
void;
}
ext;
} v1;
}
¶ ↑
xdr source ============================================================¶ ↑
struct
{
Liabilities liabilities;
union switch (int v)
{
case 0:
void;
}
ext;
}
¶ ↑
xdr source ============================================================¶ ↑
union switch (int v)
{
case 0:
void;
}
¶ ↑
xdr source ============================================================¶ ↑
enum TrustLineFlags
{
// issuer has authorized account to perform transactions with its credit
AUTHORIZED_FLAG = 1,
// issuer has authorized account to maintain and reduce liabilities for its
// credit
AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2
};
¶ ↑
xdr source ============================================================¶ ↑
struct UpgradeEntryMeta
{
LedgerUpgrade upgrade;
LedgerEntryChanges changes;
};
¶ ↑
Constants
- AccountID
- AssetCode12
- AssetCode4
- DataValue
- Deprecation
- EncryptedBody
- Hash
- Int32
- Int64
- LedgerEntryChanges
- MASK_ACCOUNT_FLAGS
- MASK_OFFERENTRY_FLAGS
- MASK_TRUSTLINE_FLAGS
- MASK_TRUSTLINE_FLAGS_V13
- MAX_OPS_PER_TX
- MAX_SIGNERS
- NodeID
- ONE
- PeerStatList
- SequenceNumber
- Signature
- SignatureHint
- SponsorshipDescriptor
- String32
- String64
- Thresholds
- TimePoint
- Uint256
- Uint32
- Uint64
- UpgradeType
- VERSION
- Value
Public Class Methods
current_network()
click to toggle source
Returns the passphrase for the network currently active per-thread with a fallback to `Digitalbits.default_network`
# File lib/digitalbits/networks.rb, line 25 def self.current_network network.presence || default_network end
current_network_id()
click to toggle source
Returns the id for the currently configured network, suitable for use in generating a signature base string or making the root account's keypair.
# File lib/digitalbits/networks.rb, line 31 def self.current_network_id Digest::SHA256.digest(current_network) end
on_network(passphrase, &block)
click to toggle source
Executes the provided block in the context of the provided network.
# File lib/digitalbits/networks.rb, line 36 def self.on_network(passphrase, &block) old = network self.network = passphrase block.call ensure self.network = old end