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