Data structures

Below are the data structures used by the Thrift protocol when communicating with the node

struct AmountCommission { 1: required i16 commission = 0; } struct CumulativeAmount { 1: required i64 integral = 0; 2: required i64 fraction = 0; } typedef map<Currency, general.Amount> Balance; typedef map<Currency, CumulativeAmount> Total; struct SmartContractDeploy { 1: string sourceCode 2: list<general.ByteCodeObject> byteCodeObjects 3: string hashState 4: i32 tokenStandard } // Smart contract info struct SmartContract { 1: required general.Address address 2: general.Address deployer 3: SmartContractDeploy smartContractDeploy 4: binary objectState 5: Time createTime 6: i32 transactionsCount } struct SmartContractInvocation { 1: string method // Empty on deploy, method params stringified Java-side with conversion to string on execute 2: list<general.Variant> params //general.Variant+ // If true, do not emit any transactions to blockchain (execute smart contract and forget state change if any) 3: list<general.Address> usedContracts 4: bool forgetNewState 5: optional SmartContractDeploy smartContractDeploy 6: i16 version = 1; // must be on this place! Position number cannot be changed } // // Transactions // typedef i64 TransactionInnerId struct TransactionId { 1: i64 poolSeq // Position inside of block 2: i32 index } enum TransactionType { // 0 | CS transfer, former TT_Normal TT_Transfer, // 1 | contract deployment, former TT_SmartDeploy TT_ContractDeploy, // 2 | Contract execution, former TT_SmartExecute TT_ContractCall, // 3 | Contract new state, TT_SmartState TT_ContractState, // 4 | Contract replenish (indirect payable() invocation) TT_ContractReplenish, // 5 | Token deployment TT_TokenDeploy, // 6 | Token transfer TT_TokenTransfer, // 7 | Stake delegation to node address TT_Delegation, // 8 | Cancel stake delegation TT_RevokeDelegation, // 9 | Put some transfer on hold until some codition to release or cancel TT_Hold, // 10 | Release previously hold sum to complete transfer TT_Release, // 11 | Revoke hold to cancel the transfer TT_CancelHold, // 12 | Transfer delayed until some moment TT_DelayedTransfer, // 13 | Service: update current boostrap node list with new one TT_UpdateBootstrapList, // 14 | Service: update current settings TT_UpdateSettings, // 15 | Malformed (invalid) transaction TT_Malformed, // 16 | Contract emitted transaction TT_ContractEmitted, // 17 | Utility transaction TT_Utility, // 18 | Any other type TT_Other, } enum SmartOperationState { SOS_Pending, SOS_Success, SOS_Failed } struct TokenDeployTransInfo { 1: string name 2: TokenCode code 3: i32 tokenStandard 4: SmartOperationState state 5: optional TransactionId stateTransaction } struct TokenTransferTransInfo { 1: TokenCode code 2: general.Address sender 3: general.Address receiver 4: TokenAmount amount 5: SmartOperationState state 6: optional TransactionId stateTransaction 7: optional bool transferSuccess } struct SmartDeployTransInfo { 1: SmartOperationState state 2: optional TransactionId stateTransaction } struct SmartExecutionTransInfo { 1: string method; 2: list<general.Variant> params; 3: SmartOperationState state 4: optional TransactionId stateTransaction } struct ExtraFee { 1: general.Amount sum 2: string comment 3: TransactionId transactionId } struct SmartStateTransInfo { 1: bool success 2: general.Amount executionFee 3: optional general.Variant returnValue 4: TransactionId startTransaction } union SmartTransInfo { 1: TokenDeployTransInfo v_tokenDeploy 2: TokenTransferTransInfo v_tokenTransfer 3: SmartDeployTransInfo v_smartDeploy 4: SmartExecutionTransInfo v_smartExecution 5: SmartStateTransInfo v_smartState } struct Transaction { // Inner transaction ID for protection against replay attack 1: TransactionInnerId id // Giver if no smart contract invokation is present, otherwise deployer. // Generally, public key against of which signature is validated 2: general.Address source // Smart contract address if one's invokation is present, otherwise acceptor's address 3: general.Address target // Transfer amount for payment transaction 4: general.Amount amount // Wallet's view on it's balance 5: general.Amount balance 6: Currency currency // Signature is formed against node's custom binary serialization format, // see other docs for description 7: binary signature 8: optional SmartContractInvocation smartContract // Max fee acceptable for donor to be subtracted 9: AmountCommission fee 10: Time timeCreation // user fields 11: optional binary userFields 12: TransactionType type 13: optional SmartTransInfo smartInfo 14: optional list<ExtraFee> extraFee 15: i64 poolNumber 16: optional list<general.Address> usedContracts } // Structure for tranactions that have been emplaced to the blockchain struct SealedTransaction { 1: TransactionId id 2: Transaction trxn } // Structure for transaction in short form struct ShortTransaction { 1: TransactionId id 2: general.Address source 3: general.Address target 4: general.Amount amount 5: AmountCommission fee 6: Time timeCreation 7: Currency currency 8: TransactionType type 10: optional binary userFields } // // Pools // typedef binary PoolHash // Sequential index of block, starting with zero typedef i64 PoolNumber struct Pool { 1: PoolHash hash // Previous block hash 2: PoolHash prevHash // Timestamp from writer (?) 3: Time time // general.Amount of transactions in this block 4: i32 transactionsCount 5: PoolNumber poolNumber 6: general.Address writer 7: general.Amount totalFee 8: list <general.Address> confidants 9: i64 realTrusted 10: i8 numberTrusted } // // Wallets // struct DelegatedItem { // partner address 1: general.Address wallet // delegated sum 2: general.Amount sum // Unix time in seconds 3: optional Time validUntil } struct Delegated { // delegated to this wallet by other one 1: general.Amount incoming // total sum delegated by this wallet to others 2: general.Amount outgoing // list of incoming delegations 3: optional list<DelegatedItem> donors // list of outgoing delegations 4: optional list<DelegatedItem> recipients } typedef i32 WalletId struct WalletData { 1: WalletId walletId 2: general.Amount balance 3: TransactionInnerId lastTransactionId 4: optional Delegated delegated } // // Stats // typedef i32 Count struct PeriodStats { // Amount of milliseconds over which following aggregated results are reported 1: Time periodDuration // general.Amount of pools 2: Count poolsCount // Amount of transactionss 3: Count transactionsCount // Cumulative volume of each currency transferred 4: Total balancePerCurrency // Amount of smart contracts transactions 5: Count smartContractsCount 6: Count transactionsSmartCount } // Periods are 24h, 1 month, 1 year, and cover-all period typedef list StatsPerPeriod // Wallets data struct WalletDataGetResult { 1: general.APIResponse status 2: WalletData walletData } struct WalletIdGetResult { 1: general.APIResponse status 2: WalletId walletId } struct WalletTransactionsCountGetResult { 1: general.APIResponse status 2: TransactionInnerId lastTransactionInnerId } struct WalletBalanceGetResult { 1: general.APIResponse status 2: general.Amount balance 3: optional Delegated delegated } enum TransactionState { INVALID = 0, VALID, INPROGRESS } // TransactionGet struct TransactionGetResult { 1: general.APIResponse status 2: bool found 3: TransactionState state 4: i32 roundNum 5: SealedTransaction transaction } struct TransactionsGetResult { 1: general.APIResponse status 2: bool result 3: i32 total_trxns_count 4: list<SealedTransaction> transactions } struct TransactionFlowResult { 1: general.APIResponse status 2: optional general.Variant smart_contract_result //general.Variant 3: i32 roundNum 4: TransactionId id 5: general.Amount fee 6: optional list<ExtraFee> extraFee } struct SingleTokenQuery { 1: general.Address tokenAddress 2: TransactionId fromId } struct SingleQuery { 1: general.Address requestedAddress 2: TransactionId fromId 3: optional list<SingleTokenQuery> tokensList } struct TransactionsQuery { 1: i16 flag 2: list<SingleQuery> queries } struct SelectedTokenTransfers { 1: general.Address tokenAddress 2: string tokenName 3: string tokenTiker 4: list<TokenTransfer> transfers } struct PublicKeyTransactions { 1: general.Address requestedAddress 2: list<ShortTransaction> transactions 3: optional list<SelectedTokenTransfers> transfersList } struct FilteredTransactionsListResult { 1: general.APIResponse status 2: list<PublicKeyTransactions> queryResponse } // PoolListGet struct PoolListGetResult { 1: general.APIResponse status 2: bool result 3: i32 count 4: list<Pool> pools } // PoolInfoGet struct PoolInfoGetResult { 1: general.APIResponse status 2: bool isFound 3: Pool pool } // PoolTransactionGet struct PoolTransactionsGetResult { 1: general.APIResponse status 2: list<SealedTransaction> transactions } // StatsGet struct StatsGetResult { 1: general.APIResponse status 2: StatsPerPeriod stats } typedef string NodeHash // SmartContractGetResult struct SmartContractGetResult { 1: general.APIResponse status 2: SmartContract smartContract } // SmartContractAddressListGetResult struct SmartContractAddressesListGetResult { 1: general.APIResponse status 2: list<general.Address> addressesList } // SmartContractsListGetResult struct SmartContractsListGetResult { 1: general.APIResponse status 2: i32 count 3: list<SmartContract> smartContractsList } struct TransactionsStateGetResult { 1: general.APIResponse status 2: map<TransactionInnerId, TransactionState> states 3: i32 roundNum } struct SmartMethodParamsGetResult { 1: general.APIResponse status 2: string method; 3: list<general.Variant> params; //general.Variant+ } struct ContractAllMethodsGetResult { 1: i8 code 2: string message 3: list<general.MethodDescription> methods } // Smart contracts struct SmartContractMethodArgument { 1: string type 2: string name } struct SmartContractMethod { 1: string returnType 2: string name 3: list<SmartContractMethodArgument> arguments } struct SmartContractDataResult { 1: general.APIResponse status; 2: list<SmartContractMethod> methods; 3: map<string, general.Variant> variables //general.Variant } struct SmartContractCompileResult { 1: general.APIResponse status; 2: list<general.ByteCodeObject> byteCodeObjects; 3: i32 tokenStandard } // Tokens struct TokenInfo { 1: general.Address address 2: TokenCode code 3: string name 4: TokenAmount totalSupply 5: general.Address owner 6: i32 transfersCount 7: i32 transactionsCount 8: i32 holdersCount 9: i32 tokenStandard } struct TokenTransaction { 1: general.Address token 2: TransactionId transaction 3: Time time 4: general.Address initiator 5: string method 6: list<general.Variant> params 7: SmartOperationState state } struct TokenHolder { 1: general.Address holder 2: general.Address token 3: TokenAmount balance 4: i32 transfersCount } // Token requests results enum TokensListSortField { TL_Code, TL_Name, TL_Address, TL_TotalSupply, TL_HoldersCount, TL_TransfersCount, TL_TransactionsCount } enum TokenHoldersSortField { TH_Balance, TH_TransfersCount } struct TokenBalance { 1: general.Address token 2: TokenCode code 3: string name 4: TokenAmount balance } struct TokenBalancesResult { 1: general.APIResponse status; 2: list<TokenBalance> balances; } struct TokenTransfer { 1: general.Address token 2: TokenCode code 3: general.Address sender // This may be zeros if transfer() and not transferFrom() was called 4: general.Address receiver 5: TokenAmount amount 6: general.Address initiator 7: TransactionId transaction 8: Time time 9: SmartOperationState state 10: optional binary userFields 11: AmountCommission fee 14: list<ExtraFee> extraFee } struct TokenTransfersResult { 1: general.APIResponse status 2: i32 count 3: list<TokenTransfer> transfers } struct TokenTransactionsResult { 1: general.APIResponse status; 2: i32 count; 3: list<TokenTransaction> transactions; } struct TokenInfoResult { 1: general.APIResponse status; 2: TokenInfo token; } struct TokenHoldersResult { 1: general.APIResponse status; 2: i32 count; 3: list<TokenHolder> holders; } struct TokensListResult { 1: general.APIResponse status; 2: i32 count; 3: list<TokenInfo> tokens; } // Wallets enum WalletsListSort { WL_CurrentSum, WL_CreationTime, WL_TransactionsCount } struct WalletInfo { 1: general.Address address; 2: general.Amount balance; 3: i64 transactionsNumber; 4: Time firstTransactionTime; // delegations info 5: optional Delegated delegated } struct ActualFeeGetResult { 1: AmountCommission fee; } struct WalletsGetResult { 1: general.APIResponse status; 2: i32 count; 3: list<WalletInfo> wallets; } struct TrustedInfo { 1: general.Address address; 2: i32 timesWriter; 3: i32 timesTrusted 4: general.Amount feeCollected; } struct TrustedGetResult { 1: general.APIResponse status; 2: i32 pages; 3: list<TrustedInfo> writers; } //////// struct SyncStateResult { 1: general.APIResponse status; 2: i64 currRound; 3: i64 lastBlock } struct ExecuteCountGetResult { 1: general.APIResponse status; 2: i64 executeCount; } struct TokenFilters{ 1: string name 2: string code 3: i32 tokenStandard }


On This Page
Data structures