Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Trackers

The Ledger module includes a collection of auxiliary components known as Trackers.

Trackers are state machines that evolve by consuming blocks from the blockchain.

Although logically stateless, meaning Trackers can rebuild their state from scratch by replaying all blocks since the genesis block every time, the reference implementation designs them to persist their state to speed up Ledger reconstruction.

Trackers are widely used in go-algorand to maintain efficient, read-optimized views over different aspects of Ledger state.

Below is an overview of the main Trackers and their responsibilities:

  • Account Tracker
    Maintains account states up to a given round. Key methods include:

    • Lookup(round, address): Retrieves the state of the account (address) at the specified round.

    • AllBalances(round): Returns all account states at the specified round.

    • Totals(round): Returns aggregate account totals for a given round, which is useful when querying for total account balance in the cryptographic sortition. >

  • Recent Transactions Tracker
    Uses the Transaction Tail to efficiently check whether a given transaction ID (txid) was included in a recent block.

  • State Proof Verification Tracker
    Maintains the necessary context to verify State Proofs (see State Proof normative specification.

  • Voters Tracker
    Tracks the vector commitment representing the most recent set of online accounts participating in the State Proofs.

  • Catchpoint Tracker
    Monitors the Catch-Up process used during node synchronization (see the non-normative specification).