In brief
Transaction evidence moves through layers: wallet intent, node or mempool response, block inclusion, virtual processing, and accepted UTXO effects.
What this page explains#
A transaction is a structured object interpreted by validation, hashing, signing, mempool, RPC, wallet, and block-template code. This page sits in Transactions, UTXO, Fees, And Mempool. It gives the topic a plain-language handle first, then shows the working idea, the mechanism, the source trail, and any limits that still matter. This category follows a transaction from ownership model to structure, signing, validation, mempool admission, template selection, and accepted-state evidence. The main danger it prevents is collapsing all transaction states into one word.
The writing follows a simple Kaspa documentation pattern: answer the practical question first, then link outward for details. The closest public sources for this page are DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE. Local notes can help choose what to explain, but public-facing references resolve to upstream websites, repositories, papers, release pages, or docs.
How to think about it#
The practical model starts by naming the layer that owns the topic: wallet use, node operation, consensus, transaction validation, Toccata script behavior, tooling, or research. From there, the page shows which public source can support the explanation and where the explanation becomes incomplete.
For Transaction Structure, the model is built around these anchors: version selects rule context; inputs and outputs carry spend and creation data; lock time, subnetwork ID, gas, payload, private storage mass, and finalized ID have field-specific behavior; version-aware serialization means v0 input sigOpCount and v1 computeBudget must not be blurred; v1 outputs carry optional covenant binding that downstream tools must preserve. This model is useful, but it does not encode every constant, branch, error type, or edge case. Those details belong in the source path and the source notes.
How it works#
1. version selects rule context. Transaction structure is the field map other layers depend on. Version, inputs, outputs, lock time, subnetwork ID, gas, payload, storage mass, and serialization all affect how validation, hashing, signing, RPC, wallets, and indexers interpret the object. The page therefore treats each field as a commitment surface rather than a display detail.
2. inputs and outputs carry spend and creation data. Transaction structure is the field map other layers depend on. Version, inputs, outputs, lock time, subnetwork ID, gas, payload, storage mass, and serialization all affect how validation, hashing, signing, RPC, wallets, and indexers interpret the object. The page therefore treats each field as a commitment surface rather than a display detail.
3. lock time, subnetwork ID, gas, payload, private storage mass, and finalized ID have field-specific behavior. Toccata-era transaction fields are application surfaces, so the guide must trace them through structs, serialization, hashing, signing, RPC, wallet tooling, mempool policy, and accepted evidence. The risk is not only invalid construction; it is a tool silently dropping or misunderstanding a field that the application relies on.
4. version-aware serialization means v0 input sigOpCount and v1 computeBudget must not be blurred. Resource accounting needs its own explanation because size, compute, storage, budget, script units, and fee pressure are not the same thing. A transaction may be structurally understandable and still fail admission or validation if the resource rule is violated. The source path for these claims is usually mass, script pricing, validation, and mempool policy together.
5. v1 outputs carry optional covenant binding that downstream tools must preserve. Transaction pages mention covenants only as fields, scripts, signing commitments, or validation context. The transaction layer must preserve or check the relevant data, then route state-machine design to the covenant section and proof binding to the ZK section.
This mechanism section follows a transaction through construction, identity, signing, validation, mempool policy, block templates, and accepted evidence. The stage must be named before the claim is reused.
How to check it#
| Step | Check | Evidence gate |
|---|---|---|
| 1 | Check version selects rule context. | Use DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE; name the stage: built, signed, validated, admitted, templated, mined, or accepted. |
| 2 | Check inputs and outputs carry spend and creation data. | Use DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE; name the stage: built, signed, validated, admitted, templated, mined, or accepted. |
| 3 | Check lock time, subnetwork ID, gas, payload, private storage mass, and finalized ID have field-specific behavior. | Use DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE; name the stage: built, signed, validated, admitted, templated, mined, or accepted. |
| 4 | Check version-aware serialization means v0 input sigOpCount and v1 computeBudget must not be blurred. | Use DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE; name the stage: built, signed, validated, admitted, templated, mined, or accepted. |
| 5 | Check v1 outputs carry optional covenant binding that downstream tools must preserve. | Use DOC-TOCCATA-TX-V1, RK-TX, RK-TX-SERDE; name the stage: built, signed, validated, admitted, templated, mined, or accepted. |
When using this page for a transaction claim, name the stage precisely: built, signed, validated, admitted to a mempool, included in a template, mined, accepted, or reflected in a UTXO change. Each stage has a different evidence surface and should not be collapsed into a single success word.
Related Pages#
- 01-utxo-model
- transactions-utxo-mempool
- 03-inputs-outputs-and-outpoints