Correction 2026-08-19: the anchor SMT model proves K=3-of-9 on anchor blocks since 13,034,000; the 14,050,000 fork height changed no enforcement and the 'blocking quorum' wording is withdrawn; runner entry added

This commit is contained in:
Aere Network 2026-08-19 14:31:57 +03:00
parent f2ab368c36
commit f0fb52862f
2 changed files with 12 additions and 4 deletions

View File

@ -2,11 +2,18 @@
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# anchor_blocking_quorum_smt.py # anchor_blocking_quorum_smt.py
# #
# MACHINE-CHECKED (z3) proof of BLOCKING-QUORUM SAFETY for the AERE post-quantum # MACHINE-CHECKED (z3) proof of ANCHOR-THRESHOLD SAFETY for the AERE post-quantum
# anchor once the blocking fork is active (height >= 14,050,000). # anchor (every 32nd block, minimum K=3 seals since height 13,034,000).
#
# CORRECTION 2026-08-19: this file used to call the property "blocking-quorum safety
# once the blocking fork is active (height >= 14,050,000)". The fork property
# aere.falcon.forkBlock=14050000 arms a per-block rule that the shipped client
# retires at aere.pq.anchorBlock (13,014,000), so it changed no enforcement; the
# invariant below never depended on it and is stated for what the chain enforces:
# K=3 distinct valid seals on anchor blocks (f+1 of 9, not a quorum), none elsewhere.
# #
# INVARIANT (the task target): # INVARIANT (the task target):
# With the blocking fork active, no ANCHOR block can be finalized with fewer # Since height 13,034,000, no ANCHOR block can be finalized with fewer
# than K=3 valid Falcon seals from DISTINCT signers of the registry ACTIVE # than K=3 valid Falcon seals from DISTINCT signers of the registry ACTIVE
# at that height; and a NON-anchor block requires no seals at all. # at that height; and a NON-anchor block requires no seals at all.
# #
@ -17,7 +24,7 @@
# min-seals schedule on heights: 13014000:0, 13034000:3 (so K=3 at the fork) # min-seals schedule on heights: 13014000:0, 13034000:3 (so K=3 at the fork)
# producer write cap maxSeals = 5 # producer write cap maxSeals = 5
# emergency minSealsCeiling can only LOWER the effective K, never raise it # emergency minSealsCeiling can only LOWER the effective K, never raise it
# blocking fork from 14,050,000: no block finalizes without the Falcon quorum # (the fork height 14,050,000 changed no enforcement; see the correction above)
# registry rotation on heights: 13014000 -> 7 keys, 13600000 -> 9 keys, # registry rotation on heights: 13014000 -> 7 keys, 13600000 -> 9 keys,
# every height covered by EXACTLY one registry # every height covered by EXACTLY one registry
# #

View File

@ -27,6 +27,7 @@ CONSENSUS_MODELS = [
("QBFT/IBFT 2.0 SAFETY (agreement)", "qbft_safety_smt.py"), ("QBFT/IBFT 2.0 SAFETY (agreement)", "qbft_safety_smt.py"),
("Falcon LOG-ONLY no-op", "falcon_logonly_noop_smt.py"), ("Falcon LOG-ONLY no-op", "falcon_logonly_noop_smt.py"),
("Falcon BLOCKING safety/liveness/N>=7", "falcon_blocking_smt.py"), ("Falcon BLOCKING safety/liveness/N>=7", "falcon_blocking_smt.py"),
("Anchor THRESHOLD safety (K=3 of 9 on anchor blocks since 13,034,000, registry rotation)", "anchor_blocking_quorum_smt.py"),
("PQC ACTIVATION transition safety (log-only->blocking + contract-anchored registry)", "qbft_pqc_activation_smt.py"), ("PQC ACTIVATION transition safety (log-only->blocking + contract-anchored registry)", "qbft_pqc_activation_smt.py"),
("QBFT LIVENESS (partial synchrony)", "qbft_liveness_smt.py"), ("QBFT LIVENESS (partial synchrony)", "qbft_liveness_smt.py"),
("QBFT explicit-Prepare counting (2026-07-14 2nd-client bug+fix)", "qbft_prepare_counting_smt.py"), ("QBFT explicit-Prepare counting (2026-07-14 2nd-client bug+fix)", "qbft_prepare_counting_smt.py"),