Skip to content

Conversation

@ksn6
Copy link
Contributor

@ksn6 ksn6 commented Jul 1, 2025

Problem

Test to validate Alpenglow's ability to maintain liveness when nodes issue both NotarizeFallback and SkipFallback votes in an intertwined manner.

This test simulates a consensus scenario with four nodes having specific stake distributions:

  • Node A: 40% + epsilon stake
  • Node B: 40% - epsilon stake
  • Node C: 20% - epsilon stake
  • Node D: epsilon stake (minimal, acts as perpetual leader)

The test proceeds through two main stages:

Stage 1: Stable Network Operation

All nodes are voting normally for leader D's proposals, with notarization votes going through successfully and the network maintaining consensus.

Stage 2: Network Partition and Fallback Scenario

At slot 50, Node A's turbine is disabled, creating a network partition. This triggers the following sequence:

  1. Node D (leader) proposes a block b1
  2. Nodes B, C, and D can communicate and vote to notarize b1
  3. Node A is partitioned and cannot receive b1, so it issues a skip vote
  4. The vote distribution creates a complex fallback scenario:
    • Nodes B, C, D: Issue notarize votes initially, then skip fallback votes
    • Node A: Issues skip vote initially, then notarize fallback vote
  5. This creates the specific vote pattern:
    • B, C, D: notarize + skip_fallback
    • A: skip + notarize_fallback

The test validates that:

  • The network can handle intertwined fallback scenarios
  • Consensus is maintained despite complex vote patterns
  • The network continues to make progress and create new roots after the partition is resolved
  • At least 10 new roots are created post-experiment to ensure sustained liveness

@ksn6 ksn6 changed the title Local cluster ensure liveness after skip fallback test(local-cluster): liveness after intertwined skip-fallback and notar-fallback Jul 1, 2025
Copy link
Contributor

@bw-solana bw-solana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great test with awesome documentation. Thank you!

Left a handful of nits and a couple suggestions

@ksn6 ksn6 force-pushed the local-cluster-ensure-liveness-after-skip-fallback branch 2 times, most recently from 2b53e68 to 4324b7d Compare July 5, 2025 08:01
Copy link
Contributor

@bw-solana bw-solana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ksn6 ksn6 force-pushed the local-cluster-ensure-liveness-after-skip-fallback branch 2 times, most recently from d78291c to 0e1cbec Compare July 10, 2025 00:25
@ksn6 ksn6 force-pushed the local-cluster-ensure-liveness-after-skip-fallback branch from 2222568 to 51576b5 Compare July 23, 2025 20:44
@ksn6 ksn6 force-pushed the local-cluster-ensure-liveness-after-skip-fallback branch from 4b5f1c7 to a6039bc Compare July 23, 2025 21:57
@ksn6 ksn6 merged commit 34865f1 into anza-xyz:master Jul 24, 2025
7 checks passed
@ksn6 ksn6 deleted the local-cluster-ensure-liveness-after-skip-fallback branch July 24, 2025 01:57
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants