---
title: "Transaction execution"
description: "Follow a GenLayer transaction through activation, leader execution, commit-reveal voting, appeals, and finalization."
source: https://docs.genlayer.com/understand-genlayer-protocol/core-concepts/transactions/transaction-execution
last_updated: 2026-08-19
---

# Transaction execution

After an EVM submission creates a GenLayer transaction, the consensus contracts coordinate execution as an onchain state machine. Validator nodes observe the current phase, perform work in GenVM, and submit the next signed consensus action.

```mermaid
%%{init: {"flowchart": {"curve": "basis", "nodeSpacing": 40, "rankSpacing": 44, "htmlLabels": true}}}%%
flowchart TD
    Pending(["Pending"]) -->|"activate and select committee"| Propose["Proposing"]
    Propose -->|"leader submits receipt"| Vote["Committing → LeaderRevealing → Revealing"]
    Vote --> Decision{"Decided<br/>outcome"}
    Decision --> Window["Appeal window"]
    Window -->|"window elapses"| Ready["ReadyToFinalize"]
    Ready --> Final(["Finalized"])
    Pending -. "cancel or expire" .-> Canceled(["Canceled"])

    classDef phase fill:#EFEDFF,stroke:#6D5DF5,color:#251E63,stroke-width:2px;
    classDef success fill:#E9F8F0,stroke:#23966B,color:#123F30,stroke-width:2px;
    classDef inactive fill:#F3F4F6,stroke:#9CA3AF,color:#374151,stroke-width:1.5px;
    class Pending,Propose,Vote,Decision,Window phase;
    class Ready,Final success;
    class Canceled inactive;
    linkStyle default stroke:#7C879C,stroke-width:1.8px;
```

## Pending and activation

Transactions enter the recipient Intelligent Contract's pending queue. The assigned activator advances the transaction when it reaches the queue head. Activation fixes the selection seed, locks applicable fee prices, selects the stake-weighted committee, and chooses a leader.

## Proposal

The leader executes the call in GenVM and submits a receipt with the proposed execution result and state changes. It also executes the validator path so it can vote with the committee.

If the leader cannot finish within its allocated execution time, it can report a leader timeout. If the leader is idle, a permissionless timeout action can rotate it when the transaction has funded rotations available.

## Commit, leader reveal, and vote reveal

Committee members validate deterministic execution and apply the contract's equivalence rules to non-deterministic outputs. They commit encrypted votes and result hashes before seeing the other revealed votes.

The leader reveals its execution data and decryption keys in `LeaderRevealing`. Committee members then reveal their votes in `Revealing`. The consensus contracts calculate the majority from the revealed votes.

## Decision and appeals

Accepted, ValidatorsTimeout, Undetermined, and LeaderTimeout are decided outcomes that enter an appeal window. Validator appeals use a fresh committee to check the existing proposal. Leader appeals begin another proposal round. See [appeals](/understand-genlayer-protocol/core-concepts/optimistic-democracy/appeal-process).

```mermaid
%%{init: {"flowchart": {"curve": "basis", "nodeSpacing": 40, "rankSpacing": 46, "htmlLabels": true}}}%%
flowchart TB
    Decision["Decided outcome"] --> Window["Appeal window"]
    Window -->|"no appeal"| Ready["Ready to finalize"]
    Window -->|"validator appeal"| Review["Fresh committee review"]
    Review -->|"confirmed"| Window
    Review -->|"overturned"| Round["New proposal round"]
    Window -->|"leader appeal"| Round

    classDef phase fill:#EFEDFF,stroke:#6D5DF5,color:#251E63,stroke-width:2px;
    classDef challenge fill:#FFF4E5,stroke:#D58A16,color:#583705,stroke-width:2px;
    classDef success fill:#E9F8F0,stroke:#23966B,color:#123F30,stroke-width:2px;
    class Decision,Window,Round phase;
    class Review challenge;
    class Ready success;
    linkStyle default stroke:#7C879C,stroke-width:1.8px;
```

## Finalization

When the effective appeal window has elapsed, the transaction is ready to finalize. The finalization call records the terminal status, settles remaining fees and refunds, emits finalization messages, and advances the recipient's queues.

An EVM submission receipt is not a substitute for this lifecycle. Poll [`gen_getTransactionStatus`](/api-references/genlayer-node/gen/gen_getTransactionStatus) or retrieve the full [`gen_getTransactionReceipt`](/api-references/genlayer-node/gen/gen_getTransactionReceipt).
