aere-node/IMPORT-PROOF-STARE-2026-08-15.md
Aere Network d96ae52430 The 13,267,729 boundary explained: a historical window where anchoring was deliberately disarmed fleet-wide
Measured on the live chain by reading vanityData block by block: the last
anchor carrying a digest before the window is 13,267,792; heights 13,267,824
through 13,268,944 (37 anchor heights) carry the ordinary client string instead
of a digest; the digest resumes at 13,268,976. All 37 still carry an attached
seal certificate (2,620 to 3,282 byte headers), which is direct on-chain proof
that seal attachment and digest anchoring are two independent switches and were
in different states here.

What happened: several validators restarted inside a short window and were all
left holding no heard seals at the same time, while the next height was an
anchor height with a seal threshold, so no node could propose. Unblocking meant
disarming the anchor fleet-wide, which restarted block production immediately.
Blocks produced while disarmed also carry signer indices that are not strictly
increasing, because canonical ordering is applied on the anchoring path.

Why it matters to anyone running a node: those 37 heights are real, immutable
chain history. A node syncing from genesis meets them and correctly refuses
them if it carries a single anchoring configuration; nodes that were already
running do not stumble because the blocks are already in their database and are
not revalidated. So the package needs the historical disarmed windows, named
with exact bounds, in which the anchoring rules accept the header as given,
exactly like the base-fee lapse windows the second client already carries. The
fix is in progress; until it is proven by import past the window, this section
states the limit rather than hiding it.
2026-08-16 00:14:32 +03:00

7.2 KiB

Dovada de import a pachetului public: cat s-a dovedit si unde s-a oprit, 15 august 2026

Un nod construit DOAR din pachetul public (petice 0001+0003+0004+0005 pe amonte pristin d2032017, build verde JDK 21) a fost pus sa sincronizeze chain 2800 de la blocul 0, pe laptop, in timpul zilei lui H. Ce s-a dovedit, masurat, si unde s-a oprit, scris cinstit.

DOVEDIT

  • Sincronizare de la geneza pana in era ancorei. Nodul a importat de la blocul 0, a traversat fork-ul precompilelor (9.189.161, reparat de peticul 0005: izolarea Osaka + EIP-2935) si fork-ul pragului de taxa (10.141.734, peticul 0004), fara divergenta, ~13 milioane de blocuri.
  • Garda registrului fail-closed, exact cum promite. La 13.014.000 nodul FARA registre a refuzat sa importe (AERE-PQC-REG-BLOCK-01), cu mesajul care spune operatorului sa instaleze registrul numit LA ACEA inaltime, nu mai devreme. Instalate registrele publice (aduse intern, amprente verificate), nodul le-a legat: 7 chei la 13.014.000, 9 la 13.600.000, fiecare rand cu dovada de posesie Falcon verificata, "correctly staged for the activation".

UNDE S-A OPRIT, si e o CONSTATARE, nu un simplu esec

  • La blocul 13.014.000, prima ancora reala (extraData 2515 octeti, certificat cu index 0), regula PqAnchorSealsRule din binarul PUBLIC respinge blocul: "certificate carries index 0, which the registry does not bind to any validator address".
  • Dar registrul pe care nodul insusi l-a legat (manifest-13014000.json) CONTINE cheia 0 (campuri "0".."6", 7 chei, bindHeight 13014000, hash canonic 0xa96ac96d... care e chiar hash-ul cerut de lant). Si productia (binarul de productie) valideaza acest bloc perfect, de doua luni.
  • Deci binarul PUBLIC leaga registrul intr-un fel si il CITESTE in regula de sigilii in alt fel: legarea vede cheia 0, regula spune ca indexul 0 e nelegat. Aceeasi clasa de defect: doua implementari ale aceleiasi idei care diverg. Peticul 0003 public difera de sursa de productie in maparea index -> adresa la validare.

CE INSEAMNA

Aceasta e o piesa de dovada, nu o rusine: pachetul public inca NU reproduce validarea ancorei bit cu bit fata de productie, si o stim fiindca am incercat pe bune, nu fiindca am presupus. Sute de teste unitare verzi nu au prins-o; un import de la geneza a prins-o intr-o seara, a doua oara cand aceeasi metoda ne salveaza (prima data: binarul care ingheta nodul, gasit tot prin import real). Reparatia (alinierea maparii index din peticul 0003 cu sursa de productie) e o sesiune de binar dedicata, cu control negativ, nu o carpeala in focul serii.

RUN-A-NODE.md poarta deja avertismentul corect: aplica 0001+0003+0004+0005 si trateaza build-ul ca urmaritor pana la o dovada de import completa. Aceasta dovada de import a ajuns pana la prima ancora si a gasit exact veriga care lipseste. Constatarea intra in registru.

Adus la zi 15 august, noaptea

  • Cauza, gasita si dovedita in aceeasi seara: un decalaj de un bloc la granita orarului. Regula sigiliilor judeca certificatul purtat de blocul primei ancore H intreband registrul la inaltimea PARINTELUI, H-1, fiindca aceea e inaltimea peste care se semneaza sigiliile. Orarul registrelor leaga insa INCLUSIV de la H, deci la H-1 nu leaga nimic, si ambele cautari pe inaltime cadeau pe registrul de cap, care pe un nod sincronizat de la geneza e gol. Nu era o divergenta de continut a maparii index catre adresa, cum banuia sectiunea de mai sus: era intrebarea pusa cu un bloc mai jos decat singura intrare care putea raspunde.
  • Reparatia minima, in FalconSealSupport, pe amandoua drumurile (cheie si adresa): cand orarul are o intrare la EXACT blockNumber+1, raspunsul vine din registrul legat si verificat al acelei intrari, nu din fisierul de cap neverificat. Granita e exact un bloc: cu doua sau mai multe blocuri sub orar nu se schimba nimic.
  • Dovada, masurata, nu presupusa: nodul construit din pachete a trecut de 13.014.000 si a mers peste 25.000 de blocuri fara nicio respingere, trecand si de treapta cu prag 3 de la 13.034.000. Suitele modulelor de consens: 608 teste, zero esecuri, inclusiv testul nou PqParentHeightAlignmentTest, construit pe forma nodului public (cap gol, registrul doar ca istorie). Control negativ facut: cu conditia dezarmata, exact proba granitei iese rosie; cu ea la loc, verde.
  • Peticul 0003 publicat poarta acum reparatia, regenerat din amonte pristin, cu aceeasi lista de fisiere plus testul nou, si se aplica curat in seria 0001, 0003, 0004, 0005. Avertismentul din RUN-A-NODE.md ramane pana la o dovada de import completa pana la varf.
  • Unde a ajuns rularea dupa reparatie, scris cinstit: nodul a mers de la 13.014.000 pana la 13.267.729, adica 253.729 de blocuri prin era ancorei, cu zero respingeri de certificat, si s-a oprit acolo la o granita NOUA, separata de cea reparata: blocuri din banda urmatoare poarta certificat atasat dar vanityData e sirul obisnuit al clientului, nu digestul, la inaltimi pe care configuratia statica a nodului le considera inaltimi de ancora, si regula digestului le refuza. Productia a acceptat acele blocuri la vremea lor, deci pachetul public inca nu reproduce si acest interval; e urmatoarea veriga de investigat, cu aceeasi metoda.

Cauza granitei de la 13.267.729, gasita 16 august (masurata pe lantul viu)

Nu e un defect al regulii si nu e alt interval de ancorare. Intervalul e acelasi, 32 de blocuri aliniate pe prima ancora. Ce e diferit e o fereastra istorica in care ancorarea a fost dezarmata intentionat pe intreaga flota, ca sa se deblocheze lantul dupa un incident.

Masurat pe lantul public, citind vanityData bloc cu bloc:

ultima ancora CU digest inainte de fereastra   13.267.792
ancore FARA digest (poarta sirul clientului)   13.267.824 .. 13.268.944, 37 de inaltimi
prima ancora CU digest dupa fereastra          13.268.976

Toate cele 37 poarta certificat de sigilii atasat (anteturi de 2620-3282 de octeti), deci atasarea sigiliilor mergea; numai ancorarea digestului era oprita. Cele doua sunt comutatoare diferite, si aceasta fereastra e dovada pe lantul viu ca se pot afla in stari diferite.

Ce s-a intamplat, pe scurt: o repornire a mai multor validatori intr-o fereastra scurta i-a lasat pe toti fara sigilii auzite in acelasi timp, iar urmatoarea inaltime era chiar o inaltime de ancora cu prag, deci niciun nod nu putea propune. Deblocarea a fost dezarmarea ancorei pe toata flota, ceea ce a repornit lantul imediat. Blocurile produse cat timp ancora era dezarmata poarta, in plus, indici de semnatari care nu cresc strict, fiindca ordonarea canonica se aplica pe calea de ancorare.

De ce conteaza pentru cine ruleaza un nod: aceste 37 de inaltimi sunt istorie reala si imuabila a lantului. Un nod care sincronizeaza de la geneza le intalneste si le refuza, corect, daca poarta o singura configuratie de ancorare. Nodurile care rulau atunci nu se impiedica fiindca au deja blocurile in baza si nu le revalideaza. Deci pachetul public are nevoie de ferestrele istorice de ancorare dezarmata, numite cu margini exacte, in care regulile de ancorare accepta antetul asa cum e, exact ca ferestrele de exceptie ale pragului de taxa pe care al doilea client le poarta deja. Reparatia e in lucru; pana e dovedita prin import dincolo de fereastra, aceasta sectiune spune limita in loc sa o ascunda.