Skip to content

Latest commit

 

History

History
396 lines (347 loc) · 7.2 KB

File metadata and controls

396 lines (347 loc) · 7.2 KB

API Reference

Runtime API Types

This document covers the core API primitives available in tetcore-primitives.

Account Module

AccountId

pub type AccountId = Address;

AccountData

pub struct AccountData {
    pub balance: TokenBalance,
    pub nonce: u64,
    pub storage: Vec<u8>,
    pub code_hash: Option<Hash32>,
}

Transaction Types

TransactionV1

pub struct TransactionV1 {
    pub sender: Address,
    pub nonce: u64,
    pub action: TransactionAction,
    pub payload: Vec<u8>,
    pub gas_limit: u64,
    pub gas_price: u128,
    pub value: u128,
    pub signature: Option<Signature>,
}

TransactionAction Variants

  • Call(Address) - Standard call
  • CallReadOnly(Address) - View call
  • Create - Deploy contract
  • Create2 { code_hash, salt } - Deterministic deploy
  • Invoke { module, method } - Module dispatch
  • SubmitPrompt { model_id, version, prompt_commitment } - Inference request
  • SubmitReceipt { prompt_id, inference_output } - Inference response
  • RegisterModel { shard_root, shard_count } - Model registration
  • Transfer(Address) - Token transfer
  • StakeVault { vault_id, amount } - Vault staking
  • SubmitProposal { proposal_type, payload } - Governance
  • Batch(Vec<TransactionAction>) - Batched calls

Inference Types

Model

pub struct Model {
    pub model_id: Hash32,
    pub owner: Address,
    pub version: u32,
    pub shard_root: Hash32,
    pub shard_count: u32,
    pub state: ModelState,
    pub pricing_policy: PricingPolicy,
    pub revenue_split: RevenueSplit,
}

ModelState

pub enum ModelState {
    Registered,
    Active,
    Paused,
    Deprecated,
    Disabled,
}

Prompt & Receipt

pub struct Prompt { ... }
pub struct Receipt { ... }

Economics Types

TokenBalance

pub type TokenBalance = u128;
pub const DECIMALS: u8 = 18;

GasSchedule

pub struct GasSchedule {
    pub static_gas: u64,
    pub per_byte_gas: u64,
    // ... more fields
}

Vault & Escrow

pub struct Vault { ... }
pub struct Escrow { ... }

Governance Types

Proposal

pub struct Proposal {
    pub id: Hash32,
    pub proposer: Address,
    pub proposal_type: ProposalType,
    pub payload: Vec<u8>,
    pub status: ProposalStatus,
    pub votes: Vec<Vote>,
    pub created_at: u64,
}

ProposalType

pub enum ProposalType {
    ParameterChange,
    RuntimeUpgrade,
    Treasury,
    Emergency,
}

Consensus Types

Header

pub struct Header {
    pub parent_hash: Hash32,
    pub number: u64,
    pub state_root: Hash32,
    pub transaction_root: Hash32,
    pub receipts_root: Hash32,
    pub validator_set_id: u64,
    pub timestamp: u64,
}

ValidatorSet

pub struct ValidatorSet {
    pub validators: Vec<Validator>,
    pub total_stake: u128,
}

Events

Event Enum

pub enum Event {
    System(SystemEvent),
    Balances(BalanceEvent),
    Inference(InferenceEvent),
    Contracts(ContractEvent),
    Governance(GovernanceEvent),
    Vault(VaultEvent),
}

Arithmetic Types

FixedU128

pub struct FixedU128 {
    raw: u128,
    decimals: u8,
}
// 18-decimal fixed point
// Use for precise token calculations

Perbill / PerU16

pub struct Perbill(u32);    // Parts per billion
pub struct PerU16(u16);     // Parts per 65535

Gas

pub struct Gas { gas: u64 }
// Metered resource tracking

Validator Discovery Types

ValidatorInfo

pub struct ValidatorInfo {
    pub account_id: Address,
    pub stake: u128,
    pub commission: u8,
    pub active: bool,
    pub discovered_at: u64,
    pub last_heartbeat: u64,
    pub peer_id: Option<String>,
    pub listen_addresses: Vec<String>,
    pub endpoint: Option<ValidatorEndpoint>,
}

ValidatorEndpoint

pub struct ValidatorEndpoint {
    pub rpc_address: String,
    pub p2p_address: String,
    pub wasm_runtime: Option<String>,
    pub api_versions: Vec<ApiVersion>,
}

DiscoveryRequest & Response

pub struct DiscoveryRequest {
    pub requester: Address,
    pub request_type: DiscoveryRequestType,
    pub max_results: u32,
    pub filter: Option<DiscoveryFilter>,
}

pub struct DiscoveryResponse {
    pub request_id: Hash32,
    pub validators: Vec<ValidatorInfo>,
    pub total_found: u32,
    pub block_number: u64,
}

ValidatorPerformance

pub struct ValidatorPerformance {
    pub account_id: Address,
    pub blocks_proposed: u64,
    pub blocks_authored: u64,
    pub votes_cast: u64,
    pub missed_blocks: u64,
    pub uptime_percentage: u32,
    pub last_evaluated: u64,
}

ValidatorRegistry

pub struct ValidatorRegistry {
    pub entries: Vec<ValidatorInfo>,
    pub next_set_id: u64,
}

Block Building Types

BlockBuilder

pub struct BlockBuilder {
    pub parent_hash: Hash32,
    pub number: u64,
    pub timestamp: u64,
    pub transactions: Vec<Transaction>,
    pub receipts: Vec<Receipt>,
    pub gas_used: u64,
    pub size_bytes: u32,
    pub digest: Digest,
    pub config: BlockBuilderConfig,
}

BlockBuilderConfig

pub struct BlockBuilderConfig {
    pub max_gas: u64,
    pub max_transactions: u32,
    pub max_size_bytes: u32,
    pub min_timestamp: Option<u64>,
}

BlockBuilderError

pub enum BlockBuilderError {
    TooManyTransactions,
    BlockTooBig,
    GasExceeded,
    InvalidTransaction,
    SealAlreadySet,
}

BuildableBlock

pub struct BuildableBlock {
    pub header: Header,
    pub transactions: Vec<Transaction>,
    pub receipts: Vec<Receipt>,
}

SealedBlock

pub struct SealedBlock {
    pub header: Header,
    pub transactions: Vec<Transaction>,
    pub receipts: Vec<Receipt>,
    pub signature: Option<Signature>,
}

BlockStats

pub struct BlockStats {
    pub transaction_count: u32,
    pub gas_used: u64,
    pub storage_read_count: u64,
    pub storage_write_count: u64,
    pub event_count: u32,
    pub size_bytes: u32,
}

Blockchain Types

ChainConfig

pub struct ChainConfig {
    pub chain_id: u32,
    pub chain_name: String,
    pub chain_type: ChainType,
    pub genesis_hash: Hash32,
    pub fork_config: ForkConfig,
}

ChainStorage

pub struct ChainStorage {
    pub blocks: HashMap<Hash32, ChainBlock>,
    pub block_by_number: HashMap<u64, Hash32>,
    pub best_hash: Hash32,
    pub best_number: u64,
    pub genesis_hash: Hash32,
}

ForkChoice

pub struct ForkChoice {
    pub latest_finalized_hash: Hash32,
    pub latest_finalized_number: u64,
    pub best_chain: Vec<Hash32>,
}

ImportResult & ImportError

pub struct ImportResult {
    pub hash: Hash32,
    pub number: u64,
    pub is_new_best: bool,
    pub is_finalized: bool,
}

pub enum ImportErrorKind {
    UnknownBlock,
    MissingParent,
    BlockInFuture,
    InvalidStateRoot,
    InvalidTransactionsRoot,
    InvalidReceiptsRoot,
    InvalidSignature,
    BadNonce,
    InsufficientBalance,
    GasLimitExceeded,
    FullBlock,
    ForkChoiceChanged,
}

SyncState

pub struct SyncState {
    pub starting_block: u64,
    pub current_block: u64,
    pub highest_block: Option<u64>,
    pub sync_type: SyncType,
}