Module transaction_logic

Module transaction_logic 

Source
Expand description

Transaction logic module

This module implements the core logic for applying and validating all transaction types in the Mina protocol. It is a direct port of the OCaml implementation from src/lib/transaction_logic/mina_transaction_logic.ml and maintains identical business logic.

§Transaction Types

The module handles three main categories of transactions:

§User Commands

  • Signed Commands: Payments and stake delegations
  • zkApp Commands: Complex multi-account zero-knowledge operations

§Protocol Transactions

  • Fee Transfers: Distribution of transaction fees to block producers
  • Coinbase: Block rewards for successful block production

§Two-Phase Application

Transaction application follows a two-phase model to enable efficient proof generation:

  1. First Pass (apply_transaction_first_pass): Validates preconditions and begins application. For zkApp commands, applies the fee payer and first phase of account updates.

  2. Second Pass (apply_transaction_second_pass): Completes application. For zkApp commands, applies the second phase of account updates and finalizes state.

§Key Types

§Module Organization

Re-exports§

pub use transaction_partially_applied::apply_transaction_first_pass;
pub use transaction_partially_applied::apply_transaction_second_pass;
pub use transaction_partially_applied::apply_transactions;
pub use transaction_partially_applied::apply_user_command;
pub use transaction_partially_applied::set_with_location;
pub use transaction_partially_applied::AccountState;
pub use transaction_union_payload::account_check_timing;
pub use transaction_union_payload::add_amount;
pub use transaction_union_payload::checked_cons_signed_command_payload;
pub use transaction_union_payload::cons_signed_command_payload;
pub use transaction_union_payload::cons_zkapp_command_commitment;
pub use transaction_union_payload::get_with_location;
pub use transaction_union_payload::sub_amount;
pub use transaction_union_payload::timing_error_to_user_command_status;
pub use transaction_union_payload::validate_nonces;
pub use transaction_union_payload::validate_timing;
pub use transaction_union_payload::Body;
pub use transaction_union_payload::Common;
pub use transaction_union_payload::ExistingOrNew;
pub use transaction_union_payload::Tag;
pub use transaction_union_payload::TimingValidation;
pub use transaction_union_payload::TransactionUnion;
pub use transaction_union_payload::TransactionUnionPayload;

Modules§

for_tests
local_state
protocol_state
signed_command
transaction_applied
transaction_partially_applied
Two-phase transaction application
transaction_union_payload
Unified transaction representation for SNARK circuits
transaction_witness
valid
verifiable
zkapp_command
zkapp_statement

Structs§

Coinbase
OCaml reference: src/lib/mina_base/coinbase.ml L:17-21 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-10
CoinbaseFeeTransfer
FeeTransfer
OCaml reference: src/lib/mina_base/fee_transfer.ml L:68-69 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-10
Memo
0th byte is a tag to distinguish digests from other data 1st byte is length, always 32 for digests bytes 2 to 33 are data, 0-right-padded if length is less than 32
SingleFeeTransfer
OCaml reference: src/lib/mina_base/fee_transfer.ml L:76-80 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-10
WithStatus
OCaml reference: src/lib/mina_base/with_status.ml L:6-10 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-08

Enums§

BinaryTransactionStatus 🔒
Transaction
Top-level transaction type representing all possible transactions in the Mina protocol.
TransactionFailure
OCaml reference: src/lib/mina_base/transaction_status.ml L:9-51 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-08
TransactionStatus
OCaml reference: src/lib/mina_base/transaction_status.ml L:452-454 Commit: 5da42ccd72e791f164d4d200cf1ce300262873b3 Last verified: 2025-10-08
UserCommand
WellFormednessError

Traits§

GenericCommand
GenericTransaction