Skip to content

Resources

Koinos limits blockchain work through Resource Credits (RC) rather than a conventional per-transaction gas fee. Transactions consume measurable resources, and the protocol checks both the payer's available RC and the remaining capacity of the block.

On mainnet, wallets commonly present an account's available RC as mana. Mana is recoverable transaction capacity associated with KOIN; spending it does not transfer KOIN to a block producer as a gas payment.

Resource types

Koinos accounts for three resources:

Resource What it measures Why it is limited
Compute bandwidth Contract execution, authorization, system calls, and other processing Prevents unbounded execution
Network bandwidth Canonically encoded transaction data carried by the network Keeps blocks and peer traffic bounded
Disk storage Persistent state created or changed by execution Limits long-term node storage growth

A transaction can use all three in different proportions.

Account Resource Credits

Before committing a transaction, Chain determines the account responsible for its resources and reads that account's available RC. Authorization and payer semantics can make the payer different from the account that submitted or signed another part of the transaction.

The transaction must remain within the available RC calculated for its execution. The exact mana regeneration rules and payer behavior are implemented by system contracts and can evolve through governance.

Block resource limits

Each block also has compute, network, and disk limits. These bounds protect the network even when an individual payer has enough RC.

The resources system contract maintains resource markets used to calculate the current limits and RC cost for each resource. Usage changes the market state from block to block, so applications should query current limits instead of embedding fixed values.

Block processing also has resource costs outside ordinary transactions. A block producer must satisfy the production and resource requirements for its block; having VHP alone is not the complete readiness condition.

flowchart TB
    Transaction --> Meter["Measure compute, network, disk"]
    Meter --> Account{"Enough payer RC?"}
    Account -- "No" --> Reject["Execution cannot succeed"]
    Account -- "Yes" --> Block{"Within block limits?"}
    Block -- "No" --> Reject
    Block -- "Yes" --> Apply["Apply transaction state"]

Architecture versus operation

This page describes the accounting boundary. Current values, monitoring, capacity planning, and producer checks belong in Node Operators. Privileged resource-contract behavior belongs in System Contracts.

Versioned sources