Tests und Verifikation

Die Ebenen

Ebene Was sie findet
Foundry-Unit-Tests Erwartetes Verhalten, Contract für Contract
Fuzzing Eingaben, die sich niemand vorgestellt hat
Invarianten Eigenschaften, die nach jeder beliebigen Sequenz gelten müssen
Fork-Tests Verhalten gegenüber den echten Contracts, auf echtem Zustand
Formale Verifikation Eigenschaften, auf allen Pfaden bewiesen, nicht stichprobenartig
Statische Analyse Bekannte gefährliche Muster
Copy-Audit Verbotenes Vokabular und visuelle Verbote

Die ökonomischen Invarianten

Das sind die Gleichheiten, die immer gelten müssen:

  1. Die vier Anteile summieren sich auf exakt die erhobene Tax, standardmäßig 500 Basispunkte, ohne verlorenes Wei
  2. Niemand kann die Assets eines Vaults an eine Adresse seiner Wahl abheben; die einzigen möglichen Abnahmen sind die Konvertierung, der Airdrop an die Holder und der Notfall-Transfer des Owners
  3. Die Gewichtungen eines Baskets summieren sich auf 100 % und ändern sich nie
  4. Beide Positionen werden bei der Erstellung eingezahlt und können nur durch den Endmodus entfernt werden, 30 Tage nach seiner Ankündigung
  5. Die Liquidität ist gesperrt; ihr einziger Ausgang ist der Endmodus, den der Owner 30 Tage im Voraus ankündigt
  6. Der $STOCKFUN-Buyback kann gekaufte Tokens nirgendwohin senden außer in den Burn
  7. Die Creator-Supply ist auf jedem Markt null
  8. Ein Vault kann nur die Assets seines Baskets kaufen
  9. Ein Vault erwirbt nur ETH, USDC, USDG und die Aktien seines Baskets, dazu Erstattungen in USDon auf der optionalen Ondo-Rail
  10. Ein Airdrop-Zyklus zahlt nie mehr aus, als er hält, Aktie für Aktie, und kein Holder erhält mehr als seinen Pro-rata-Anteil; was der Airdrop-Contract schuldet, über Zyklen und beiseitegelegte Aktien hinweg, übersteigt nie seinen Saldo — seit dem 2026-09-27 verlangt, seit dem 2026-10-04 durch eine zustandsbehaftete Invariante getestet. Seit dem 2026-10-05 besteht, auch über Notfälle hinweg, das, was diese Bücher deckt, immer aus Tokens, die der Contract tatsächlich hält, nie aus noch nicht gutgeschriebenen Tokens, getestet durch eine zweite zustandsbehaftete Invariante
  11. Nur der Liquiditäts-Lock fügt einem StockFun-Pool Liquidität hinzu
  12. Ein Trade zahlt an niemanden außer an den Vault des Marktes; die anderen Anteile warten auf dem Hook, bis sie geclaimt werden. Seit dem 2026-10-05 wird einem Vault, der seinen Anteil ablehnt, dieser auf dem Hook geschuldet, und der Trade läuft weiter
  13. Jede Aktie eines Baskets gibt nur das für sie reservierte Cash aus

Sie werden auf den aktuellen Implementierungen geprüft; ein Upgrade ersetzt den Code, auf dem sie geprüft werden.

Die Größenbeschränkung

Das Limit von EIP-170 liegt bei 24.576 Bytes Runtime-Code. Es wird durch einen Test durchgesetzt, der die Testsuite fehlschlagen lässt, nicht durch manuelle Inspektion.

Es ist hier eine echte Beschränkung: Die Factory musste aufgeteilt werden. Bis zum 2026-10-02 war der Vault-Deployer, der den Creation Code eines TreasuryVault einbettete, der Contract, der der Obergrenze am nächsten war, und jede Zeile, die dem Vault hinzugefügt wurde, ging von diesem Spielraum ab. Die Entfernung des Creator-Buybacks am 2026-09-28 hat ihn von 23.055 auf 14.965 Bytes verkleinert; die Korrekturen vom 2026-10-01, die das Cash Aktie für Aktie reservieren, haben ihn auf 15.954 gebracht. Seit dem 2026-10-02 deployt er einen Proxy, und was unter das Limit passen muss, ist die Implementierung jedes Moduls.

Am 2026-10-05 wurde der Airdrop-Contract zu dem, der der Obergrenze am nächsten ist. Die Claims der vierten Audit-Schleife brachten ihn über die Grenze; einige seiner Views privat zu machen und seine einem einzelnen Zyklus angelasteten Notfall-Transfers zu streichen brachte ihn auf 24.432 Bytes zurück, 144 unter der Obergrenze.

Nach dem Audit vom 2026-09-29

Jedes nach dem Security-Audit vom 2026-09-29 behobene Finding hat Regressionstests, die auf dem auditierten Code fehlschlagen; die meisten sind die Proofs of Concept des Audits, umgekehrt, um das korrigierte Verhalten zu prüfen.

Die Security-Pipeline vom 2026-10-01

Eine zweite Audit-Runde, durchgeführt von zwei unabhängigen Auditoren, dann jede Prüfung erneut auf dem korrigierten Code. Jede ihrer Korrekturen an den Contracts und am Keeper hat Regressionstests. Am 2026-10-01, nach diesen Korrekturen:

  • Foundry. Die 421 Tests außerhalb der Fork-Suites bestehen, ebenso das tiefe Profil: 20.000 Fuzz-Runs, Invarianten mit 512 Runs der Tiefe 128. Die Fork-Suites liefen nicht: Es war keine RPC-URL verfügbar.
  • Mutationstests. slither-mutate lief auf fünf Contracts: dem Gebührenverteiler, der Bestandsaufzeichnung, dem Vault der Treasury, dem Aktien-Router auf Robinhood Chain und dem Remote-Hub. Es erzeugte 1.301 Mutanten, kleine absichtliche Änderungen am Code, und die Tests erkannten 1.118 davon. Von den 183 überlebenden sind 107 äquivalent zum ursprünglichen Code: Keine Eingabe kann sie unterscheiden. Die übrigen 76 zeigten Prüfungen, die die Tests nicht machten; die Tests decken sie inzwischen alle ab. Kein Mutant hat einen Bug aufgedeckt.
  • Formale Verifikation. Jeder Certora-Job wurde erneut auf dem Prover ausgeführt, auf dem korrigierten Code (certora-cli 8.8.1, grundlegende Sanity-Checks). Keine Regel wurde verletzt. Sieben Regeln des LiquidityLock bleiben für eine Methode, lockProtocolLiquidity, unentschieden: Sie überschritten das Zeitlimit, und ein erneuter Lauf mit einem längeren Limit endete ohne Ergebnis. Auf allen anderen Methoden gelten sie; diese eine ist dem Owner vorbehalten, läuft nur einmal, für $STOCKFUN, und Foundry-Tests decken ihren Zugriff, ihre einmalige Nutzung und die Form ihres Locks ab. Die übrigen nicht verifizierten Ergebnisse sind bekannte Fälle von Vakuität: eine Regel, die für jede Methode ausgeführt wird, bei einer Methode, die im verifizierten Setup nie erfolgreich sein kann. Die Fehlschläge des ersten Laufs von TreasuryVault gingen auf zwei Artefakte der Spezifikation zurück, keines davon ein Bug; die Spezifikation wurde korrigiert.
  • Fuzzing und symbolische Ausführung. Medusa ließ fünf Eigenschaften der Bestandsaufzeichnung zehn Minuten lang ohne Fehlschlag laufen. Sein erster Lauf ergab, dass auf einer Chain, deren Uhr in Stunde 0 beginnt, einer Test-Chain, die erste Stundenmarke der aufgezeichneten Supply fehlte; keine echte Chain war betroffen, und der Token zeichnet diese Marke jetzt beim Deployment auf. Halmos besteht drei symbolische Prüfungen für jede Eingabe innerhalb der Schranken: Die Gebührenaufteilung ist exakt, die aufgezeichnete Supply folgt zwei beliebigen Transfers, und ihr Integral zur nächsten Stunde ist korrekt. Mythril kann die Contracts des Protokolls außerhalb eines Deployments nicht erkunden, etwa 14 % Abdeckung; bei der eigenständigen Bestandsaufzeichnung erreichte es 31 % in 15 Minuten und meldete nichts.
  • Statische Analyse. Slither, Aderyn und Solhint fanden nichts Neues.
  • Auf einer frischen lokalen Chain. Ein vollständiges Deployment, ein echter Keeper-Zyklus und zehn Anwendungsfälle bestehen. Die Generalprobe des Deployments, bei der die Produktionsskripte in der Reihenfolge des Runbooks laufen, besteht nach der Korrektur eines Skripts: Das Skript der Mock-Rail mintete seine Startgelder an den Standard-Absender von forge statt an den deployenden Key.
Certora-Job Verifiziert
BuybackBurner 12
Fees 5
LiquidityLock 13
StockFunFactory 23
StockFunHook 36
StockFunProtocolToken 9
StockFunSwapRouter 8
StockFunToken 11
TreasuryOracle 8
TreasuryVault 32
UniswapV4StockRouter 12

Dieser Lauf verifizierte außerdem 11 Regeln von TeamVesting, einem Contract, der am 2026-10-05 mit seiner Spezifikation gelöscht wurde. Der Prover deckt die Seite von Robinhood Chain nicht ab: den Remote-Hub, die Spiegel-Vaults und den Aktien-Router.

Die upgradebare Neugestaltung vom 2026-10-02

Die Neugestaltung, die die Module upgradebar gemacht hat, kam nach allen obigen Prüfungen. Am 2026-10-02, auf dem neuen Code:

  • Foundry. Die 458 Tests außerhalb der Fork-Suites bestehen. Neue Suites decken die Upgrades ab, auf Ethereum und auf Robinhood Chain — wer upgraden darf, die Autorität und den PoolManager, die eine neue Implementierung behalten muss, die Vaults einzeln — sowie den Endmodus. Die Suite der Bestandsaufzeichnung ist mit der Aufzeichnung zum Bestandsaufzeichner umgezogen.
  • Storage-Layouts. Das Storage-Layout jedes upgradebaren Moduls ist in contracts/storage-layouts/ festgehalten, und contracts/script/check-storage-layouts.sh schlägt bei jeder Änderung fehl, die keine Erweiterung am Ende ist. Es ist dafür gedacht, vor jedem Upgrade zu laufen. Seit dem 2026-10-05 prüft es jede Ebene jedes Structs: siehe Deployment.
  • Auf einer frischen lokalen Chain. Das Skript LocalRun besteht.
  • Formale Verifikation. Die Certora-Spezifikationen werden für den neuen Code aktualisiert. Ihr letzter vollständiger Lauf auf dem Prover, am 2026-10-01, liegt vor der Neugestaltung: Die Tabelle oben beschreibt diesen Lauf.

Das tiefe Profil, die Mutationstests, das Fuzzing und die symbolische Ausführung sowie die statische Analyse, die oben beschrieben sind, liefen am 2026-10-01, auf dem Code vor der Neugestaltung.

Der Airdrop vom 2026-10-04

Der Airdrop-Contract und die zwei Wege über sendToAirdrop, programmiert am 2026-10-04, nicht deployt. An diesem Tag, auf dem neuen Code:

  • Foundry. Die 514 Tests außerhalb der Fork-Suites bestehen, gegenüber 459 vor dem Airdrop. Drei neue Suites: AirdropDistributorTest, 38 Tests; AirdropCrossChainTest, 15, mit LayerZero als Mock; AirdropInvariantsTest, 2, rund um eine zustandsbehaftete Invariante: Erhaltung und Solvenz über zwei Märkte hinweg, unter zufälligen Sendungen, Claims, Zuweisungen, Eröffnungen und Änderungen der Ausschlüsse und der Zyklus-Uhrzeit, 128 Runs mit 64 Aufrufen. Ein Fuzz der Anteilsberechnung läuft 512 Mal.
  • Gas. Ein Claim eines Zyklus mit zwei oder drei Aktien kostet in den Tests grob 120.000 bis 210.000 Gas; die Tests laufen mit warmem Storage, eine echte Transaktion kostet etwas mehr. Eine Zustellung von Robinhood Chain kostet auf Ethereum etwa 85.000 bis 1.016.000 Gas, kalt gemessen: siehe Deployment.
  • Auf einer lokalen Chain. Auf Anvil, LocalRun dann LocalAirdrop: zwei Holder, vor 13:00 UTC beiseitegelegte Aktien, danach zugewiesen und geclaimt. Jeder Claim ist exakt der abgerundete Wert seines Anteils, mit 1 Wei Dust pro Aktie.
  • Formale Verifikation. Die fünf Certora-Spezifikationen, die die geänderten Contracts betreffen, bestehen die Typprüfung. Der Prover wurde nicht ausgeführt, und keine Spezifikation deckt den Airdrop-Contract ab.
  • Offchain. Die 93 Tests des Keepers, die 43 des Shared-Pakets, die 9 des Backends und die 58 des Workers bestehen.
  • Reviews. Codex (gpt-6-astra) hat das Design und dann den Code geprüft: ein Medium, zum Timing beiseitegelegter Aktien, und ein Low, zum lokalen Skript, beide behoben. Ein erneutes Review der Korrekturen fand ein Medium, zum Timing von Änderungen der Ausschlüsse, und ein Low, zur Reihenfolge des lokalen Skripts, beide behoben: Ein Zeitfenster wird an der Ausschlussliste gemessen, die bei seinem Schließen galt, und das Skript weist beiseitegelegte Aktien zuerst zu. Eine abschließende Prüfung dieser zwei Korrekturen fand keinen Bug, unter der genannten Garantie: Beiseitegelegte Aktien gehen an das erste Zeitfenster mit berechtigten Beständen, wer auch immer aufruft und wann auch immer, solange sich die Zyklus-Uhrzeit in der Zwischenzeit nicht ändert und der Bestandsaufzeichner des Tokens nicht ersetzt wird. Die Berichte liegen in projet/docs/audit-2026-10-04/.

Die Änderungen vom 2026-10-05

Keine Team-Allokation, ein sofortiger Notfallmodus und jede Zahl eine Einstellung des Owners, programmiert am 2026-10-05, nicht deployt. An diesem Tag, auf dem neuen Code:

  • Foundry. Die Suite besteht, 520 Tests. Zwei neue Suites, Settings und SettingsCrossChain, decken jede Einstellung ab: wer sie setzen darf, welche Werte sie ablehnt und die nächste Operation nach einer Änderung — darunter die Tax und das Anti-Snipe, die Launch-Form, dass jeder Pool seinen Key behält, und die Anteile an dem, was die gesperrten Positionen einsammeln. Die Eigenschaften der Gebühren, per Fuzzing und symbolisch geprüft, gelten für jede akzeptierte Einstellung. Die Notfall-Tests folgen dem sofortigen Transfer, und die Tests des Vesting-Contracts sind mit ihm verschwunden.
  • Gas. Das Lesen der Tax-Einstellungen kostet einen Swap etwa 1.200 Gas mehr, bei warmem Storage.
  • Formale Verifikation. Die Spezifikationen der Gebühren, des Hooks, des Locks, der Factory, der Tokens und des Oracles folgen den Einstellungen und bestehen lokal die Typprüfung. Der Prover wurde nicht ausgeführt.

Die Audit-Schleifen vom 2026-10-05

Am selben Tag gingen fünf Review-Schleifen über den Code, nicht deployt; ab der vierten zählt ein Verstoß gegen die Regel des Gründers, dass ein Fehler nie den Rest blockiert, als Defekt (siehe Architektur). Jede Korrektur hat einen Regressionstest. Auf dem Code jeder Schleife:

  • Foundry. 602 Tests bestehen nach der vierten Schleife und 613 nach der fünften; am Ende des Tages bestehen 614, drei Fork-Suites ohne RPC übersprungen. Jeder Contract passt unter EIP-170, und die Storage-Layouts wuchsen nur dort, wo eine Korrektur Zustand angehängt hat.
  • Invarianten. Die Invarianten des Airdrops bestehen 512 Läufe der Tiefe 128 im tiefen Profil, nach der dritten Schleife. Eine zweite zustandsbehaftete Invariante führt den Airdrop durch Notfälle: Zustellungen, deren letzter Schritt verspätet läuft, verirrte Tokens, Transfers nach außen, Rückgaben, Abschreibungen und Pausen und, seit der fünften Schleife, von ihrem Emittenten eingefrorene Aktien und claimMany.
  • Formale Verifikation. Die Schleifen fügten Regeln zum Hook (seine Schulden gegenüber den Vaults, seine verirrten Beträge), zum Lock (die Anteile, die er behält, seine Rescues), zum Burner und zu den Tokens (ihre Rescues) hinzu, sowie eine Regel, dass nur der Protokoll-Owner auf den Routern, dem Oracle und der Factory Rescues ausführt: 213 Regeln und Invarianten in 11 Spezifikationen nach der vierten Schleife, eine weitere zu den Rescues der Tokens nach der fünften. Jede berührte Spezifikation besteht lokal die Typprüfung; nichts wurde an den Prover gesendet, dessen letzter Lauf weiterhin der vom 2026-10-01 ist.
  • Offchain. Nach dem Airdrop-Schritt des Keepers, der Claim-Ansicht der Dapp und dem Offchain-Durchgang der vierten Schleife: Die 191 Tests des Keepers, die 51 des Shared-Pakets, die 9 des Backends und die 90 des Workers bestehen, und die App besteht ihre Typprüfung und ihren Lint.
  • Auf einer lokalen Chain. Auf Anvil LocalRun, dann der Keeper, die Engine des Workers und die Claim-Vorbereitung der App: Im Zeitfenster des Deployments sendete der Keeper nichts; im nächsten eröffnete er zwei Zyklen und sendete die Aktien zweier Vaults, und ein claimMany zahlte fünf Aktien über die zwei Zyklen aus, für etwa 421.000 Gas, wonach claimable null anzeigte.

Der Offchain-Durchgang der fünften Schleife, 2026-10-06

Das Review des Keepers, des Workers, der App und der Skripte in der fünften Schleife fand drei Probleme mittlerer und sechzehn geringer Schwere, jedes mit einem Regressionstest behoben, nicht deployt. Ausgeführt am 2026-10-06:

  • Foundry. 619 Tests bestehen auf dem Code dieses Tages, drei Fork-Suites ohne RPC übersprungen: Die neuen Felder der Lens, die Obergrenze von fünf Aktien pro Basket und der fortgesetzte $STOCKFUN-Launch haben ihre Tests. Die Storage-Layouts haben sich nicht geändert.
  • Offchain. Die 210 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 111 des Workers bestehen; die Tests jeder Keeper-Korrektur schlagen fehl, wenn die Korrektur entfernt wird. Die App besteht ihren Typecheck und ihr Lint; sie hat keinen Test-Runner, und ihre Claim-Vorbereitung ist in die Engine des Workers gewandert, deren Tests sie abdecken.
  • Auf einer lokalen Chain. Eine Generalprobe auf einem privaten Anvil bestand ihre sechs Szenarien: LocalRun, dessen Dry Run keine Deployment-Datei schreibt; der Keeper über zwei Zeitfenster, der das ETH jedes Vaults einmal pro Zeitfenster konvertiert und dann den Airdrop einmal zuweist, eröffnet und sendet, jeder Claim auf das Wei genau; ein Vault, der ETH ablehnt, mit seinen Schulden auf dem Hook und dem Lock, die nach seiner Wiederherstellung bezahlt wurden; Abbrüche mitten im Ablauf mit der Zustandsdatei und ihrer Sperre, nichts zweimal gesendet, eine ersetzte und eine fallen gelassene Transaktion korrekt behandelt; die Rescues und eine tägliche Einsammlung der LP-Gebühren. Die Bridge-Rail, die App und der Worker waren nicht Teil davon.

Nach der Generalprobe, 2026-10-06

Die Befunde der Generalprobe wurden am selben Tag behoben, nicht deployt. Der Keeper weist die Aktien zu, die der Airdrop-Contract für einen Markt beiseitelegt, auch wenn dessen Vault nichts Neues zu senden hat, und hält einen Vault, der unter der Schwelle gefunden wurde, nach dem Zeitfenster fest, für das er geprüft wurde, nie nach seiner eigenen Uhr; er zählt eine beiseitegelegte Sendung gesondert, lässt die wenigen Einheiten USDC in Ruhe, die das letzte Kauf-Leg eines Vaults nie ausgeben kann, und zeigt Pool-IDs in seinem Log. Der erste Bereich der sechsten Review-Schleife fand nichts in den Contracts und ein Problem geringer Schwere in einem lokalen Skript, behoben: Die lokale Deployment-Datei wird gegen die Chain geprüft, bevor der Keeper, die App oder der Worker sie verwenden. Auf diesem Code:

  • Foundry. 620 Tests bestehen, drei Fork-Suites ohne RPC übersprungen: einer mehr, ein fortgesetzter $STOCKFUN-Launch, der einen Vault ablehnte, der die Aktien eines anderen Baskets hält
  • Offchain. Die 218 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 111 des Workers bestehen; die Tests jeder Keeper-Korrektur schlagen auf dem Keeper vor ihr fehl. Die Prüfung der lokalen Deployment-Datei hat keinen automatisierten Test: Sie wurde von Hand auf einem privaten Anvil ausgeführt, wo sie ein frisches Deployment akzeptierte und eine Datei ablehnte, in der die Rollen zweier Contracts vertauscht waren

Nach der sechsten und siebten Audit-Schleife, 2026-10-06

Die Keeper- und Worker-Korrekturen der sechsten Schleife und die der siebten wurden am selben Tag vorgenommen, nicht deployt; in keiner der beiden hat sich der Code eines Contracts geändert, nur ein Kommentar eines Contracts wurde korrigiert. Ausgeführt am 2026-10-06, auf Commit 415dcae (die Contracts aus einer sauberen Kopie dieses Commits, da andere Arbeit an den Contracts im Gange war):

  • Foundry. 620 Tests bestehen: 615 außerhalb der Fork-Dateien und die fünf der Robinhood-Chain-Fork-Suite gegen ihren öffentlichen RPC; die drei Ethereum-Fork-Suites werden ohne RPC übersprungen. Dieselbe Zahl wie nach der Generalprobe: Kein Contract-Test hat sich geändert
  • Offchain. Die 277 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 137 des Workers, in 11 Dateien, bestehen. Jeder Proof of Concept der siebten Schleife ist ein Regressionstest, und die neuen Tests jeder Korrektur schlagen auf dem Code vor ihr fehl, außer den wenigen, die festhalten, was der alte Code bereits tat (eine Sendung, die der Keeper nicht bewerten kann, geht wie zuvor; eine alte Zustandsdatei wird geladen), und denen des Charts, dessen Funktionen neu sind. Eine Zustandsdatei, die der Keeper vor der sechsten Schleife geschrieben hat, wird als Test-Fixture behalten und lädt unter dem neuen Keeper
  • Die App. Sie besteht ihren Typecheck, ihr Lint und ihren Build, und ihr vorgerenderter Demo-Chart füllt die Zeichenfläche aus; sie hat keinen Test-Runner, und es wurde kein Browser-Test ausgeführt. Die Platzierung des Charts führt Code aus der Engine des Workers aus, den die Tests des Workers abdecken

Die Preisfeed-Schutzmechanismen und die achte Audit-Schleife, 2026-10-06

Die zwei Preisfeed-Schutzmechanismen des Oracles für Robinhood Chain wurden am 2026-10-06 geschrieben, und die Keeper-, Worker- und App-Korrekturen der achten Schleife am selben Tag, nicht deployt. Die Contracts haben sich mit den Schutzmechanismen geändert, nicht mit der Schleife. Ausgeführt am 2026-10-06, auf Commit 6586d40 (die Contracts aus einer sauberen Kopie dieses Commits, da andere Arbeit an den Contracts im Gange war):

  • Foundry. 640 Tests bestehen: 633 außerhalb der Fork-Dateien, in 82 Suites, und die sieben der Robinhood-Chain-Fork-Datei gegen ihren öffentlichen RPC; die drei Ethereum-Fork-Suites werden ohne RPC übersprungen. Die Schutzmechanismen haben 18 Tests außerhalb der Fork-Dateien hinzugefügt: 16 allein auf dem Oracle, mit Mock-Feeds und -Tokens (jeder Schutzmechanismus aus, dann an, jede Art, auf die ein Feed oder ein Token nicht antworten kann, jede Antwort, die als pausiert zählt, ein Lesen ohne genug Gas, die Einstellungen des Owners und die Ablehnungen des Deployment-Skripts), und 2 auf der Cross-Chain-Rail (das Leg einer pausierten Aktie schlägt allein fehl und kauft, sobald die Pause aufgehoben ist; ein Sequencer-Ausfall stoppt jedes Leg, bis seine Karenzzeit endet). Die zwei neuen Fork-Tests lesen die echten Aktien-Tokens: Jeder der zwanzig beantwortet das Pause-Signal so, wie das Oracle es liest, das teuerste Lesen brauchte 13.288 Gas, und ein Token, pausiert dort, wo sein echter Code das Flag hält, hält nur seinen eigenen Preis zurück
  • Storage und Spezifikationen. Die Storage-Layouts der 17 upgradebaren Module sind unverändert, bis auf die Anfügung des Oracles; die formale Spezifikation des Oracles, 25 Regeln und Invarianten, besteht die Typprüfung, ohne Lauf auf dem Prover
  • Offchain. Die 306 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 155 des Workers, in 12 Dateien, bestehen. Jeder Proof of Concept der achten Schleife ist ein Regressionstest, und die neuen Tests jeder Korrektur schlagen auf dem Code vor ihr fehl, außer denen von Funktionen, die neu sind
  • Die App. Sie besteht ihren Typecheck, ihr Lint, ihre Engine-Prüfung und ihren Build; sie hat keinen Test-Runner, und es wurde kein Browser-Test ausgeführt. Die Basket-Prüfung ihres Launch-Formulars und die Tax ihres Trade-Panels führen Code aus der Engine des Workers aus, den die Tests des Workers abdecken

Die neunte Audit-Schleife, Glamsterdam und der LayerZero-Testnet-Lauf, 2026-10-06

Die Korrekturen der neunten Schleife, das Gas der Airdrop-Zustellung unter dem Glamsterdam-Upgrade von Ethereum und die erneute Ausführung einer festhängenden Zustellung durch den Keeper wurden am 2026-10-06 vorgenommen, nicht auf dem Mainnet deployt. Eine Contract-Änderung (die Gas-Richtlinien des Remote-Hubs und die Sendung und Preisabfrage des Spiegel-Vaults mit drei Argumenten) kam mit ihnen, getestet durch neun neue Tests der Cross-Chain-Rail (die Standardwerte gegen die Messungen, die Begrenzung an beiden Enden, die Optionen der Sendung und die dazu passende Preisabfrage, die Formen mit einem Argument, die Ablehnungen der Setter, eine Zustellung, die schwerer ist als das Gas, das ihr OFT erzwingt, ein Hub ohne Richtlinien, der die Aktien zu Hause behält, die Optionen Byte für Byte) und vier des Deployment-Skripts. Der Aktien-OFT-Mock addiert jetzt die Gas-Optionen und lässt eine Zustellung, der das Gas ausgeht, auf einen Lauf mit mehr Gas warten, wie es der Endpoint von LayerZero tut. Seit dieser Schleife prüft ein zweiter Agent die Änderung jeder Korrektur, bevor sie gepusht wird (das Verifier-Gate), und seine Befunde werden auf dieselbe Weise behoben und getestet. Ausgeführt am 2026-10-06, auf Commit 92a1904 (die Contracts aus einer sauberen Kopie dieses Commits, da andere Arbeit im Gange war):

  • Foundry. 653 Tests bestehen: 646 außerhalb der Fork-Dateien, in 83 Suites, und die sieben der Robinhood-Chain-Fork-Datei gegen ihren öffentlichen RPC; die drei Ethereum-Fork-Suites werden ohne RPC übersprungen. Foundry nutzt den Gas-Zeitplan von Cancun: Seine Gas-Zahlen sind die alten Preise, und die neuen kommen von Sepolia
  • Storage. Die Storage-Layouts der 17 upgradebaren Module sind unverändert, bis auf die Anfügung des Remote-Hubs (seine Gas-Richtlinien, Slots 21 bis 23)
  • Offchain. Die 370 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 189 des Workers, in 14 Dateien, bestehen (die 372 des Keepers bei e1dd5f6, nach der letzten Korrektur des Gates, die anderen unverändert); der Keeper und der Worker bestehen ihren Typecheck. Die neuen Tests jeder Korrektur schlagen auf dem Code vor ihr fehl, außer denen von Funktionen, die neu sind. Das neue Gas-Limit pro Schreibvorgang der App führt Code aus der Engine des Workers aus, den die Tests des Workers abdecken
  • Die App. Sie besteht ihren Typecheck, ihr Lint und ihre Engine-Prüfung; sie hat keinen Test-Runner. Ihre zwei anderen Korrekturen, der als Schätzung markierte Topf und die Freigabe, die nicht gelesen werden konnte, wurden geprüft, indem ihr eigener Code in einer Arbeitskopie ausgeführt wurde
  • Auf Sepolia, nach Glamsterdam. Jede feste Gas-Zahl der Contracts und der Skripte wurde auf der Live-Chain erneut gemessen: Alle halten, mit Spielraum, außer den zwei der Airdrop-Zustellung, behoben durch die Gas-Richtlinien. Die zehnte Audit-Schleife fand zwei weitere: das eigene Gas der Deployment-Skripte, das forge seiner eigenen Simulation zu den alten Preisen entnimmt (jedes Senden nimmt jetzt die Schätzung des Nodes), und das des Bridge-Compose, bemessen für einen Markt und nicht für einen Batch. Der Preflight des Keepers, nur lesend auf dem Deployment des LayerZero-Testnet-Laufs ausgeführt, besteht seine 68 Prüfungen
  • Der LayerZero-Testnet-Lauf. Das Protokoll lief durchgängig auf Sepolia und dem Testnet von Robinhood Chain über die echten Testnet-Endpoints, das DVN und den Executor von LayerZero, sieben stündliche Zeitfenster und sechs Airdrop-Zyklen, jeder Claim genau der aus dem Bestandsaufzeichner berechnete Anteil: siehe Die Robinhood-Rail. Sein letztes Zeitfenster lief auf dem Keeper der neunten Schleife, mit dem aus seinen Simulationen gewählten Zustellungs-Gas

Die zehnte Audit-Schleife, 2026-10-06

Die Korrekturen der zehnten Schleife wurden am 2026-10-06 vorgenommen, nicht auf dem Mainnet deployt, jede von einem zweiten Agenten geprüft, bevor sie gemergt wurde. Ein Contract hat sich geändert, der USDG-Bridge-Adapter: Der letzte Schritt eines Bridge-Batches auf Robinhood Chain bekommt jetzt einen Grundbetrag plus einen Anteil pro Markt, und ein Batch trägt höchstens 17 Märkte. Neun neue Tests decken es ab: vier neue Märkte mit fünf Aktien, ein voller Batch mit 17 und dreißig Märkte, gesendet als zwei Batches, jeder kalt mit genau seinem Gas ausgeführt; 18 Märkte, abgelehnt wegen der Größe ihrer Nachricht; die Gebühr, die mit dem Batch wächst; ein Batch über der Obergrenze, als Ganzes abgelehnt, während der nächste durchgeht; ein vor den neuen Einstellungen eingerichteter Adapter, der nichts über die Bridge schickt, bis sie gesetzt sind; und die Grenzen der Einstellungen. Der Mock der Bridge des USDG-Tokens lehnt jetzt eine Nachricht über der Größengrenze von LayerZero ab und bepreist das Gas, wie LayerZero es tut. Das Deployment-Verfahren hat keinen Test: Seine Änderung wurde auf Sepolia durchgespielt, wo einer Erstellung, die mit dem eigenen Gas des Deployment-Tools gesendet wurde, das Gas ausging, und dieselben Erstellungen, mit der Schätzung des Nodes gesendet, durchgingen. Ausgeführt am 2026-10-07, auf Commit 5ea8bf0 (die Contracts aus einer sauberen Kopie dieses Commits):

  • Foundry. 662 Tests bestehen: 655 außerhalb der Fork-Dateien, in 84 Suites, und die sieben der Robinhood-Chain-Fork-Datei gegen ihren öffentlichen RPC; die drei Ethereum-Fork-Suites werden ohne RPC übersprungen. Die 2 Tests des Projekts des LayerZero-Testnet-Laufs bestehen, auf den eigenen Contracts von LayerZero
  • Storage. Die Storage-Layouts der 17 upgradebaren Module sind unverändert, bis auf die Anfügung des Bridge-Adapters (seine zwei Batch-Einstellungen)
  • Offchain. Die 400 Tests des Keepers, die 51 des gemeinsamen Pakets, die 9 des Back Ends und die 210 des Workers, in 15 Dateien, bestehen; der Keeper und der Worker bestehen ihren Typecheck. Der Proof of Concept jedes Reviewers ist ein Regressionstest, und die neuen Tests jeder Korrektur schlagen auf dem Code vor ihr fehl, außer denen von Funktionen, die neu sind. Das Verfolgen einer Transaktion, die die Wallet abbricht oder ersetzt, durch die App und ihre Lesevorgänge an einem Block, der nicht vor dem ihrer eigenen letzten Transaktion liegt, führen Code aus der Engine des Workers aus, den die Tests des Workers abdecken
  • Die App. Sie besteht ihren Typecheck, ihr Lint und ihre Engine-Prüfung; sie hat keinen Test-Runner
  • Auf den Testnets. Der Bridge-Adapter des LayerZero-Testnet-Laufs wurde am 2026-10-06 auf Sepolia upgegradet, und sein nächster Batch, ein Markt, wurde vom Executor von LayerZero mit seinem neuen Gas zugestellt und per Compose ausgeführt, 600.000, wovon 115.990 verbraucht wurden

Was die Tests nicht beweisen

Das ist wichtig, und die eigenen Berichte des Projekts sagen es klar.

Lokale Tests simulieren die Cross-Chain-Zustellung. Diese beweisen keine echte LayerZero-Zustellung. Die Cross-Chain-Tests des Airdrops laufen gegen Mocks von LayerZero und der Aktien-Adapter, die für das Mainnet nicht im Repository sind. Fork-Suites wurden von mindestens einem Lauf ausgeschlossen, weil die öffentlichen Endpoints HTTP-Fehler zurückgaben — und dieser Bericht sagt das, statt die Suites als bestanden darzustellen.

Der LayerZero-Testnet-Lauf vom 2026-10-06 trug echte LayerZero-Nachrichten zwischen zwei Testnets, mit Test-Aktien, Test-Adaptern, einem Test-USDG und Mock-Feeds: Er beweist den Code von StockFun über den Transport von LayerZero, nicht das USDG-Paar von Paxos, die Aktien von Robinhood und ihre Adapter, echte Feeds und Liquidität oder Gas, Gebühren und Finalität des Mainnets.

Kein Lauf beweist: einen LayerZero-Transport auf dem Mainnet, ein externes Review oder einen formalen Beweis, der die aktuelle Rail abdeckt. Der Testnet-Lauf signierte mit echten Wallets, drei seiner Claims über die App.

Lokal

Das vollständige Szenario läuft in vier Terminals: die Chain, das Deployment und die Simulation, der Preisservice, die Dapp. Dann der Keeper und das Browser-Harness.

Das genaue Vorgehen steht in projet/docs/LOCAL_TESTING.md.