Developer's Hub
v1.0
API Reference
Powered By

Title
Message
Create new category
What is the title of your new category?
Edit page index title
What is the title of the page index?
Edit category
What is the new title of your category?
Edit link
What is the new title and URL of your link?
Data structures
Copy Markdown
Open in ChatGPT
Open in Claude
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
}
›
Last updated on
Next to read:
Using of CREDITS API in Visual C++ (demo)null
Discard Changes
Do you want to discard your current changes and overwrite with the template?
Archive Synced Block
Message
Create new Template
What is this template's title?
Delete Template
Message