Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate ouroboros-network and cardano-ledger #1314

Draft
wants to merge 37 commits into
base: main
Choose a base branch
from

Add an srp for ouroboros-network

038f9d6
Select commit
Loading
Failed to load commit list.
Draft

Integrate ouroboros-network and cardano-ledger #1314

Add an srp for ouroboros-network
038f9d6
Select commit
Loading
Failed to load commit list.
IOG Hydra / ci/hydra-build:aarch64-darwin.native.haskell96.checks.ouroboros-consensus-diffusion.consensus-test failed Dec 18, 2024 in 10m 46s

Build failed

1 failed steps

Details

Failed Steps

Step 1

Derivation

/nix/store/vsl1xpqzq6pncpvd56wmkndbrfdvrfzp-ouroboros-consensus-diffusion-test-consensus-test-0.18.0.0-check.drv

Log

Running phase: unpackPhase
unpacking source archive /nix/store/3lxsaqd1pkrkfq22hdjj5rxf70hx1lij-source-root-ouroboros-consensus-diffusion-test-consensus-test-root
source root is source-root-ouroboros-consensus-diffusion-test-consensus-test-root
Running phase: patchPhase
Running phase: buildPhase
/nix/store/235vskillgvrva3r40yry505myhk9kr6-ouroboros-consensus-diffusion-test-consensus-test-0.18.0.0/bin:
patching script interpreter paths in /private/tmp/nix-build-ouroboros-consensus-diffusion-test-consensus-test-0.18.0.0-check.drv-0/tmp.tMlz1Hb6LN/bin
ouroboros-consensus
  Node
    checkDbMarker
      match:                                                     OK
      mismatch:                                                  OK
      empty folder:                                              OK
      missing:                                                   OK
      corrupt:                                                   OK
      empty:                                                     OK
    lockDb
      reacquire a released lock:                                 OK
        +++ OK, passed 100 tests (61% timed out).
      acquire a held lock:                                       OK
      wait to acquire a held lock:                               OK
        +++ OK, passed 100 tests.
  HardFork
    Combinator
      Consensus
        simple convergence:                                      OK (34.05s)
          +++ OK, passed 100 tests.
          
          average #txs/block (100 in total):
          100% R_Btwn (0.0,1.0)
          
          consensus expected (100 in total):
          100% True
          
          epochs in era A (100 in total):
          26% 2
          20% 3
          14% >=10
          13% 4
          10% 5
           6% 6
           4% 8
           3% 1
           3% 7
           1% 9
          
          floor(4 * lastJoinSlot / numSlots) (100 in total):
          100% Just 0
          
          involves >=1 re-delegation (100 in total):
          100% False
          
          k (100 in total):
          18% 6
          13% 3
          12% 9
          10% 10
          10% 4
          10% 7
          10% 8
           9% 2
           8% 5
          
          minimumDegreeNodeTopology (100 in total):
          100% Just 1
          
          shortestLength (k = 10) (10 in total):
          90% ≈ (k = 10) << 42
          10% ≈ (k = 10) << 74
          
          shortestLength (k = 2) (9 in total):
          67% ≈ (k = 2) << 18
          33% ≈ (k = 2) << 34
          
          shortestLength (k = 3) (13 in total):
          54% ≈ (k = 3) << 35
          38% ≈ (k = 3) << 19
           8% ≈ (k = 3) << 11
          
          shortestLength (k = 4) (10 in total):
          50% ≈ (k = 4) << 20
          50% ≈ (k = 4) << 36
          
          shortestLength (k = 5) (8 in total):
          62% ≈ (k = 5) << 37
          38% ≈ (k = 5) << 21
          
          shortestLength (k = 6) (18 in total):
          78% ≈ (k = 6) << 38
          22% ≈ (k = 6) << 22
          
          shortestLength (k = 7) (10 in total):
          70% ≈ (k = 7) << 39
          20% ≈ (k = 7) << 23
          10% ≈ (k = 7) << 71
          
          shortestLength (k = 8) (10 in total):
          80% ≈ (k = 8) << 40
          20% ≈ (k = 8) << 24
          
          shortestLength (k = 9) (12 in total):
          100% ≈ (k = 9) << 41
          
          updates (100 in total):
          26% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,2),done (A,B,2)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,2),done (A,B,2)])
          
          20% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,3),done (A,B,3)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,3),done (A,B,3)])
          
          13% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,4),done (A,B,4)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,4),done (A,B,4)])
          
          10% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,5),done (A,B,5)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,5),done (A,B,5)])
          
           6% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,6),done (A,B,6)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,6),done (A,B,6)])
          
           4% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,10),done (A,B,10)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,10),done (A,B,10)])
          
           4% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,8),done (A,B,8)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,8),done (A,B,8)])
          
           3% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,1),done (A,B,1)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,1),done (A,B,1)])
          
           3% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,11),done (A,B,11)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,11),done (A,B,11)])
          
           3% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,7),done (A,B,7)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,7),done (A,B,7)])
          
           2% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,18),done (A,B,18)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,18),done (A,B,18)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,12),done (A,B,12)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,12),done (A,B,12)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,13),done (A,B,13)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,13),done (A,B,13)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,19),done (A,B,19)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,19),done (A,B,19)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,21),done (A,B,21)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,21),done (A,B,21)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,28),done (A,B,28)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,28),done (A,B,28)])
          
           1% 
            (c0,[ProposalSubmitted,ProposalStable,confirmed (A,B,9),done (A,B,9)])
            (c1,[ProposalSubmitted,ProposalStable,confirmed (A,B,9),done (A,B,9)])
  Genesis tests
    CSJ
      Happy Path
        honest peers are synchronised:                           OK (47.55s)
          +++ OK, passed 1000 tests:
          100.0% All adversaries have at least 1 forecastable block after intersection
          100.0% All adversaries have empty schedules
          100.0% All adversaries have k+1 blocks in forecast window after intersection
          100.0% All adversaries have more than k blocks after intersection
          100.0% All adversaries have trivial schedules
           0.0% An adversary did a rollback
           0.0% Full genesis window after intersection
           0.0% The honest peer did a rollback
          
           (1000 in total):
          99.5% There exist headers that have to be downloaded exactly once
           0.5% All headers are within the last jump window
          
          Adversaries killed by GDD (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by LoP (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by Timeout (1000 in total):
          100.0% 0.0%
          
          Surviving adversaries (1000 in total):
          100.0% 0.0%
        honest peers do their own thing:                         OK (67.36s)
          +++ OK, passed 1000 tests:
          100.0% All adversaries have at least 1 forecastable block after intersection
          100.0% All adversaries have empty schedules
          100.0% All adversaries have k+1 blocks in forecast window after intersection
          100.0% All adversaries have more than k blocks after intersection
          100.0% All adversaries have trivial schedules
           0.0% An adversary did a rollback
           0.0% Full genesis window after intersection
           0.0% The honest peer did a rollback
          
           (1000 in total):
          99.1% There exist headers that have to be downloaded exactly once
           0.9% All headers are within the last jump window
          
          Adversaries killed by GDD (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by LoP (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by Timeout (1000 in total):
          100.0% 0.0%
          
          Surviving adversaries (1000 in total):
          100.0% 0.0%
      With some adversaries
        honest peers are synchronised:                           OK (59.85s)
          +++ OK, passed 1000 tests:
          100.0% All adversaries have more than k blocks after intersection
          99.8% Full genesis window after intersection
          67.4% All adversaries have at least 1 forecastable block after intersection
          33.3% An adversary did a rollback
          13.9% All adversaries have k+1 blocks in forecast window after intersection
           0.0% All adversaries have empty schedules
           0.0% All adversaries have trivial schedules
           0.0% The honest peer did a rollback
          
           (1000 in total):
          98.6% There exist headers that have to be downloaded exactly once
           1.4% All headers are within the last jump window
          
          Adversaries killed by GDD (1000 in total):
          84.7% 100.0%
           5.5% 66.7%
           5.0% 50.0%
           3.0% 75.0%
           1.2% 0.0%
           0.6% 33.3%
          
          Adversaries killed by LoP (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by Timeout (1000 in total):
          100.0% 0.0%
          
          Surviving adversaries (1000 in total):
          100.0% 0.0%
        honest peers do their own thing:                         OK (92.16s)
          +++ OK, passed 1000 tests:
          100.0% All adversaries have more than k blocks after intersection
          99.5% Full genesis window after intersection
          68.8% All adversaries have at least 1 forecastable block after intersection
          33.5% An adversary did a rollback
          15.7% All adversaries have k+1 blocks in forecast window after intersection
           0.0% All adversaries have empty schedules
           0.0% All adversaries have trivial schedules
           0.0% The honest peer did a rollback
          
           (1000 in total):
          99.3% There exist headers that have to be downloaded exactly once
           0.7% All headers are within the last jump window
          
          Adversaries killed by GDD (1000 in total):
          81.5% 100.0%
           6.4% 50.0%
           5.6% 66.7%
           4.0% 75.0%
           1.3% 33.3%
           1.0% 0.0%
           0.2% 25.0%
          
          Adversaries killed by LoP (1000 in total):
          100.0% 0.0%
          
          Adversaries killed by Timeout (1000 in total):
          100.0% 0.0%
          
          Surviving adversaries (1000 in total):
          100.0% 0.0%
    gdd
      basic:                                                     OK (0.47s)
        +++ OK, passed 1000 tests.
      monotonicity:                                              OK (2.22s)
        +++ OK, passed 1000 tests.
      re-triggers chain selection on disconnection:              OK (28.39s)
        +++ OK, passed 1000 tests; 13 discarded:
        100.0% All adversaries have more than k blocks after intersection
        100.0% Full genesis window after intersection
        84.9% All adversaries have at least 1 forecastable block after intersection
        27.4% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        70.6% 0.0%
        29.4% 100.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
    long range attack
      one adversary:                                             OK (1.73s)
        +++ OK, passed 10 tests:
        100% All adversaries have at least 1 forecastable block after intersection
        100% All adversaries have more than k blocks after intersection
        100% Full genesis window after intersection
        60% All adversaries have k+1 blocks in forecast window after intersection
         0% All adversaries have empty schedules
         0% All adversaries have trivial schedules
         0% An adversary did a rollback
         0% The honest peer did a rollback
        
        Adversaries killed by GDD (10 in total):
        100% 0.0%
        
        Adversaries killed by LoP (10 in total):
        100% 0.0%
        
        Adversaries killed by Timeout (10 in total):
        90% 0.0%
        10% 100.0%
        
        Surviving adversaries (10 in total):
        90% 100.0%
        10% 0.0%
    LoE
      adversary does not hit timeouts:                           OK (17.19s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
        99.3% Full genesis window after intersection
        85.7% All adversaries have at least 1 forecastable block after intersection
        28.0% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% An adversary did a rollback
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 100.0%
      adversary hits timeouts:                                   OK (19.78s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
        98.7% Full genesis window after intersection
        84.6% All adversaries have at least 1 forecastable block after intersection
        28.3% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% An adversary did a rollback
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 100.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
    LoP
      wait just enough:                                          OK (1.02s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have empty schedules
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      wait too much:                                             OK (1.21s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
         0.0% All adversaries have empty schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 100.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      wait behind forecast horizon:                              OK (2.71s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have empty schedules
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      serve just fast enough:                                    OK (33.52s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have empty schedules
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      serve too slow:                                            OK (16.69s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 100.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      delaying attack succeeds without LoP:                      OK (13.29s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
        99.8% Full genesis window after intersection
        83.5% All adversaries have at least 1 forecastable block after intersection
        25.3% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% An adversary did a rollback
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 100.0%
      delaying attack fails with LoP:                            OK (17.47s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        100.0% All adversaries have trivial schedules
        99.0% Full genesis window after intersection
        85.3% All adversaries have at least 1 forecastable block after intersection
        28.6% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% An adversary did a rollback
         0.0% The honest peer did a rollback
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 100.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
    uniform
      stalling leashing attack:                                  OK (32.08s)
        +++ OK, passed 1000 tests; 3 discarded:
        100.0% All adversaries have more than k blocks after intersection
        99.7% Full genesis window after intersection
        70.5% All adversaries have at least 1 forecastable block after intersection
        25.6% Some adversaries performed rollbacks
        25.4% An adversary did a rollback
        16.9% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% Immutable tip is Origin
         0.0% The honest peer did a rollback
        
        100.0% disconnected 100.0% of adversaries
        
        Adversaries killed by GDD (1000 in total):
        81.9% 100.0%
         5.9% 66.7%
         5.2% 50.0%
         3.1% 0.0%
         2.9% 75.0%
         0.9% 33.3%
         0.1% 25.0%
        
        Adversaries killed by LoP (1000 in total):
        96.0% 0.0%
         1.1% 25.0%
         1.1% 33.3%
         0.8% 100.0%
         0.8% 50.0%
         0.2% 66.7%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      time limited leashing attack:                              FAIL (3.48s)
        *** Failed! Falsified (after 83 tests and 22 shrinks):
        GenesisTest:
          gtSecurityParam: 2
          gtGenesisWindow: 8
          gtForecastRange: 8
          gtDelay: 0
          gtSlotLength: SlotLength 20s
          gtCSJParams: CSJParams {csjpJumpSize = SlotNo 8}
          gtChainSyncTimeouts: 
            canAwait = Nothing
            intersect = Just 10s
            mustReply = Nothing
            idle = Nothing
          gtBlockFetchTimeouts: 
            busy = Just 60s
            streaming = Just 60s
          gtLoPBucketParams: 
            lbpCapacity = 50 tokens
            lbpRate = 10 % 1 ≅ 10.00 tokens per second
          gtBlockTree:
            G | 1-1 2-5 3-7 4-9 5-13 6-14 7-17 8-21 9-22 10-23
            G | 1-1 2-5 3-7 4-9 5-13 6-14[1] 7-18 8-22 9-24 10-25
            slots:    0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
            trunk:  ─────1───────────2─────3─────4───────────5──6────────7───────────8──9─10
                                                             ╰──6───────────7───────────8─────9─10
          gtSchedule:
            psSchedule =
              0: honest   : TP 10-23            | HP G             | BP G     @ 0.000000
              1: honest   : TP 10-23            | HP 10-23         | BP G     @ 0.023778
              2: honest   : TP 10-23            | HP 10-23         | BP 10-23 @ 0.070434
              3: adversary: TP 10-25[5x0,1,4x0] | HP G             | BP G     @ 4.859018
              4: adversary: TP 10-25[5x0,1,4x0] | HP 7-18[5x0,1,0] | BP G     @ 4.918406
            psStartOrder = []
            psMinEndTime = Time 32s
        SelectedChain: 5-13 | 6-14 7-17
        TipBlock: 7-17
        PeerSimulatorResults:
        
        
        No peers were disconnected
        The immutable tip is too old: 10
        10 > 9
        Use --quickcheck-replay="(SMGen 17670168689226985155 16504008571739013505,2)" to reproduce.
        Use -p '/time limited leashing attack/' to rerun this test only.
      serve adversarial branches:                                OK (32.07s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        99.3% Full genesis window after intersection
        71.0% All adversaries have at least 1 forecastable block after intersection
        26.3% An adversary did a rollback
        26.3% Some adversaries performed rollbacks
        18.6% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% Immutable tip is Origin
         0.0% The honest peer did a rollback
        
        100.0% disconnected 100.0% of adversaries
        
        Adversaries killed by GDD (1000 in total):
        87.0% 100.0%
         4.2% 66.7%
         4.0% 50.0%
         2.1% 0.0%
         1.9% 75.0%
         0.7% 33.3%
         0.1% 25.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      the LoE stalls the chain, but the immutable tip is honest: OK (34.18s)
        +++ OK, passed 1000 tests:
        100.0% All adversaries have more than k blocks after intersection
        100.0% The selection is at a branch tip
        99.6% Full genesis window after intersection
        70.6% All adversaries have at least 1 forecastable block after intersection
        27.5% An adversary did a rollback
        17.7% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% The honest peer did a rollback
         0.0% The immutable tip is at a fork intersection
        
        Adversaries killed by GDD (1000 in total):
        85.7% 100.0%
         5.3% 66.7%
         2.9% 50.0%
         2.8% 75.0%
         2.4% 0.0%
         0.9% 33.3%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      the node is shut down and restarted after some time:       OK (35.37s)
        +++ OK, passed 1000 tests; 1 discarded:
        100.0% All adversaries have more than k blocks after intersection
        99.5% Full genesis window after intersection
        60.9% All adversaries have at least 1 forecastable block after intersection
        25.0% An adversary did a rollback
        25.0% Some adversaries performed rollbacks
        11.8% All adversaries have k+1 blocks in forecast window after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% Immutable tip is Origin
         0.0% The honest peer did a rollback
        
        100.0% disconnected 100.0% of adversaries
        
        Adversaries killed by GDD (1000 in total):
        78.7% 100.0%
         6.3% 50.0%
         5.8% 66.7%
         3.9% 75.0%
         3.6% 0.0%
         1.5% 33.3%
         0.2% 25.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 0.0%
      block fetch leashing attack:                               OK (23.00s)
        +++ OK, passed 1000 tests; 4 discarded:
        100.0% All adversaries have at least 1 forecastable block after intersection
        100.0% All adversaries have k+1 blocks in forecast window after intersection
        100.0% All adversaries have more than k blocks after intersection
         0.0% All adversaries have empty schedules
         0.0% All adversaries have trivial schedules
         0.0% An adversary did a rollback
         0.0% Full genesis window after intersection
         0.0% Immutable tip is Origin
         0.0% Some adversaries performed rollbacks
         0.0% The honest peer did a rollback
        
        100.0% disconnected 0.0% of adversaries
        
        Adversaries killed by GDD (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by LoP (1000 in total):
        100.0% 0.0%
        
        Adversaries killed by Timeout (1000 in total):
        100.0% 0.0%
        
        Surviving adversaries (1000 in total):
        100.0% 100.0%
  GSM
    GSM yield regression:                                        OK
      +++ OK, passed 1 test.
      
      Commands (5 in total):
      20% ExtendSelection
      20% NewCandidate
      20% ReadMarker
      20% StartIdling
      20% TimePasses
      
      Notables (2 in total):
      50% FlickerN
      50% TooOldN
    GSM (no peers):                                              OK (0.36s)
      +++ OK, passed 1000 tests.
      
      Commands (3000 in total):
      33.33% ReadGsmState
      33.33% ReadMarker
      33.33% TimePasses
      
      Notables (1410 in total):
      36.38% FellBehindN
      34.54% <none>
      18.44% PreSyncingToSyncingN
      10.64% BigDurN
    GSM (at most 1 peer):                                        OK (0.46s)
      +++ OK, passed 1000 tests.
      
      Commands (7347 in total):
      13.61% NewCandidate
      13.61% StartIdling
      13.61% TimePasses
      13.47% ReadGsmState
      13.46% ReadMarker
      13.39% ModifyCandidate
      10.43% Disconnect
       8.41% ExtendSelection
      
      Notables (3425 in total):
      20.79% FellBehindN
      19.50% PreSyncingToSyncingN
      13.66% TooOldN
      13.17% CaughtUpN
      10.16% BigDurN
       9.81% FlickerN
       9.64% SyncingToPreSyncingN
       3.27% <none>
    GSM (at most 2 peers):                                       OK (0.44s)
      +++ OK, passed 1000 tests.
      
      Commands (7438 in total):
      13.44% NewCandidate
      13.44% TimePasses
      13.43% StartIdling
      13.24% ModifyCandidate
      13.23% ReadGsmState
      13.20% ReadMarker
      10.16% ExtendSelection
       9.84% Disconnect
      
      Notables (3351 in total):
      21.07% FellBehindN
      20.89% PreSyncingToSyncingN
      14.50% TooOldN
      14.41% CaughtUpN
      12.56% SyncingToPreSyncingN
       8.06% BigDurN
       6.45% FlickerN
       2.03% <none>
       0.03% NotThrashingN
    GSM (at most 3 peers):                                       OK (0.52s)
      +++ OK, passed 1000 tests.
      
      Commands (7396 in total):
      13.52% NewCandidate
      13.52% StartIdling
      13.52% TimePasses
      13.29% ReadMarker
      13.24% ModifyCandidate
      13.21% ReadGsmState
      10.44% ExtendSelection
       9.26% Disconnect
      
      Notables (3062 in total):
      24.72% PreSyncingToSyncingN
      20.90% FellBehindN
      17.15% SyncingToPreSyncingN
      11.82% CaughtUpN
      11.63% TooOldN
       7.74% BigDurN
       4.70% FlickerN
       1.34% <none>
    GSM (at most 4 peers):                                       OK (0.44s)
      +++ OK, passed 1000 tests.
      
      Commands (7354 in total):
      13.60% NewCandidate
      13.60% TimePasses
      13.58% StartIdling
      13.30% ReadGsmState
      13.30% ReadMarker
      13.20% ModifyCandidate
      10.76% ExtendSelection
       8.66% Disconnect
      
      Notables (2924 in total):
      28.56% PreSyncingToSyncingN
      22.06% SyncingToPreSyncingN
      20.38% FellBehindN
       9.20% CaughtUpN
       8.99% TooOldN
       7.39% BigDurN
       2.67% FlickerN
       0.75% <none>
    GSM (at most 5 peers):                                       OK (0.58s)
      +++ OK, passed 1000 tests.
      
      Commands (7316 in total):
      13.67% NewCandidate
      13.67% TimePasses
      13.63% StartIdling
      13.26% ReadMarker
      13.11% ReadGsmState
      13.07% ModifyCandidate
      10.72% ExtendSelection
       8.88% Disconnect
      
      Notables (2849 in total):
      30.50% PreSyncingToSyncingN
      24.29% SyncingToPreSyncingN
      20.78% FellBehindN
       7.97% BigDurN
       7.16% CaughtUpN
       7.16% TooOldN
       1.72% FlickerN
       0.39% <none>
       0.04% NotThrashingN
  PeerSimulator
    rollback
      can rollback:                                              OK (7.59s)
        +++ OK, passed 50 tests; 54 discarded:
        100% All adversaries have at least 1 forecastable block after intersection
        100% All adversaries have empty schedules
        100% All adversaries have k+1 blocks in forecast window after intersection
        100% All adversaries have more than k blocks after intersection
        100% All adversaries have trivial schedules
        100% The honest peer did a rollback
        98% Full genesis window after intersection
         0% An adversary did a rollback
        
        Adversaries killed by GDD (50 in total):
        100% 0.0%
        
        Adversaries killed by LoP (50 in total):
        100% 0.0%
        
        Adversaries killed by Timeout (50 in total):
        100% 0.0%
        
        Surviving adversaries (50 in total):
        100% 0.0%
      cannot rollback:                                           OK (2.33s)
        +++ OK, passed 50 tests:
        100% All adversaries have empty schedules
        100% All adversaries have more than k blocks after intersection
        100% All adversaries have trivial schedules
        100% The honest peer did a rollback
        98% Full genesis window after intersection
        94% All adversaries have at least 1 forecastable block after intersection
        26% All adversaries have k+1 blocks in forecast window after intersection
         0% An adversary did a rollback
        
        Adversaries killed by GDD (50 in total):
        100% 0.0%
        
        Adversaries killed by LoP (50 in total):
        100% 0.0%
        
        Adversaries killed by Timeout (50 in total):
        100% 0.0%
        
        Surviving adversaries (50 in total):
        100% 0.0%
    timeouts
      does time out:                                             OK (0.59s)
        +++ OK, passed 10 tests:
        100% All adversaries have at least 1 forecastable block after intersection
        100% All adversaries have k+1 blocks in forecast window after intersection
        100% All adversaries have more than k blocks after intersection
        100% All adversaries have trivial schedules
         0% All adversaries have empty schedules
         0% An adversary did a rollback
         0% Full genesis window after intersection
         0% The honest peer did a rollback
        
        Adversaries killed by GDD (10 in total):
        100% 0.0%
        
        Adversaries killed by LoP (10 in total):
        100% 0.0%
        
        Adversaries killed by Timeout (10 in total):
        100% 100.0%
        
        Surviving adversaries (10 in total):
        100% 0.0%
      does not time out:                                         OK (0.51s)
        +++ OK, passed 10 tests:
        100% All adversaries have at least 1 forecastable block after intersection
        100% All adversaries have empty schedules
        100% All adversaries have k+1 blocks in forecast window after intersection
        100% All adversaries have more than k blocks after intersection
        100% All adversaries have trivial schedules
         0% An adversary did a rollback
         0% Full genesis window after intersection
         0% The honest peer did a rollback
        
        Adversaries killed by GDD (10 in total):
        100% 0.0%
        
        Adversaries killed by LoP (10 in total):
        100% 0.0%
        
        Adversaries killed by Timeout (10 in total):
        100% 0.0%
        
        Surviving adversaries (10 in total):
        100% 0.0%
    ChainSync kills BlockFetch:                                  OK (0.23s)
      +++ OK, passed 100 tests:
      100% All adversaries have at least 1 forecastable block after intersection
      100% All adversaries have empty schedules
      100% All adversaries have k+1 blocks in forecast window after intersection
      100% All adversaries have more than k blocks after intersection
      100% All adversaries have trivial schedules
       0% An adversary did a rollback
       0% Full genesis window after intersection
       0% The honest peer did a rollback
      
      Adversaries killed by GDD (100 in total):
      100% 0.0%
      
      Adversaries killed by LoP (100 in total):
      100% 0.0%
      
      Adversaries killed by Timeout (100 in total):
      100% 0.0%
      
      Surviving adversaries (100 in total):
      100% 0.0%
  shrinking functions
    honest peer shrinking
      actually shortens the schedule:                            OK (1.94s)
        +++ OK, passed 100 tests.
      preserves the final state all peers:                       OK (4.66s)
        +++ OK, passed 100 tests.
  PointSchedule
    zipMany:                                                     OK
      +++ OK, passed 10000 tests.
    singleJumpTipPoints:                                         OK (0.03s)
      +++ OK, passed 10000 tests.
    tipPointSchedule:                                            OK (0.07s)
      +++ OK, passed 10000 tests.
    headerPointSchedule:                                         OK (0.35s)
      +++ OK, passed 10000 tests.
    peerScheduleFromTipPoints:                                   OK (2.21s)
      +++ OK, passed 10000 tests.

1 out of 52 tests failed (640.46s)