# Technischer Prüfbericht — Source Release 0.6.0

Prüfdatum: 13. September 2026  
Status: **Release-Kandidat bestanden; nicht on-chain bereitgestellt; kein externes Drittaudit**

## Ergebnis

Der Source-Release ist reproduzierbar gebaut, dynamisch in einer isolierten EVM
ausgeführt, in einer zweiten Sprache statisch auf verbotene Opcodes geprüft und
mit einem vollständigen SHA-256-Dateimanifest versehen. Der öffentliche
BDAG-Vault enthält im ausführbaren Runtime-Code keinen Opcode, mit dem er Wert
nach außen senden, fremden Code aufrufen, neuen Code bereitstellen, Storage
ändern oder sich selbst zerstören kann.

Die Website und der Source-Release können heute veröffentlicht werden. Eine
produktive Burn-Adresse darf noch nicht aktiviert werden, weil reale
Vertragsadressen und Ethereum-Transaktionen bewusst nicht erfunden oder ohne
Wallet-Freigabe erzeugt wurden. Die durch den Engineering-Explorer, RMS
ChainPulse und WelshDAG übereinstimmend belegte `engineering-lineage` ist
ausgewählt; der frische Drei-Quellen-Preflight bleibt Signaturvoraussetzung.
Die abweichende BDAGScan/blockdag.works-Historie ist ausdrücklich gesperrt.

## Reproduzierbarer Build

- Compiler: `solc 0.8.37+commit.f401782d.Emscripten.clang`
- EVM-Ziel: `london` (vor Shanghai, ohne `PUSH0`)
- Optimizer: aktiviert, 200 Runs
- Solidity-Metadaten: CBOR angehängt, IPFS-Hash aktiviert
- Compiler-Warnungen: 0

| Contract | Creation-Code `keccak256` | Runtime-Code `keccak256` |
|---|---|---|
| `BDAGBurnVault` | `0x2ea1159c7e95618bc77878e4687f8e8875b79906e3bb7c777ad7325b0e37b044` | `0x1d4502e416935422ea9898db76e538c8519e190030daa56a7062f5f29a36dd42` |
| `ChainpulsEvidenceAnchor` | `0x41eabd6d1d41dd7980a9cd7af5bbc24fd03366def8c011f1bed24d476aa05784` | `0x2bdbcbd924f65a648e629262f753b2a58557272a7c53d908ea13409b401baf01` (Template) |

Beim Ethereum-Anker ist der Publisher `immutable`; sein konkreter Adresswert
wird in jede bereitgestellte Runtime eingesetzt. Deshalb ist der Tabellenwert
ein Runtime-Template-Hash. `verify:ethereum` bildet aus Publisher und
Immutable-Referenzen den erwarteten Instanz-Bytecode und vergleicht ihn
bytegenau mit `eth_getCode`.

## Voneinander getrennte Prüfverfahren

| Verfahren | Implementierung | Ergebnis |
|---|---|---|
| Solidity Standard JSON | `solc-js 0.8.37`, gepinnte Einstellungen | Bestanden, 0 Warnungen |
| Dynamische Ausführung | EthereumJS VM 10.1.3, London-Hardfork | 11/11 Tests bestanden |
| Reale Deployment-Simulation | `eth_estimateGas` über zwei BlockDAG-RPCs | Beidseitig bestanden |
| Statische ABI-/Opcode-Prüfung A | Node-Testparser | Bestanden |
| Statische ABI-/Opcode-Prüfung B | eigenständiger Python-Parser | Bestanden |
| Dateiintegrität A | Node SHA-256 gegen kanonisches Manifest | Bestanden |
| Dateiintegrität B | POSIX `sha256sum` und OpenSSL | Bestanden |
| Produktionsabhängigkeiten | `npm audit --omit=dev --audit-level=high` | 0 Befunde |

Die beiden Opcode-Parser überspringen PUSH-Daten und den angehängten
Solidity-CBOR-Metadatenblock, damit zufällige Bytes nicht als ausführbare
Opcodes fehlinterpretiert werden.

## Gefundener und behobener Kompatibilitätsfehler

Der zusätzliche reale RPC-Test hat Release-Kandidat 0.4.0 vor einer Signatur
gestoppt: Die damals geprüften BlockDAG-Endpunkte meldeten bei
`eth_estimateGas` den Fehler `invalid opcode: PUSH0`. Der Kandidat wurde nicht
bereitgestellt. Release 0.5.0 setzte deshalb das Compiler-Ziel ausdrücklich auf
`london`, verbot `PUSH0` in beiden unabhängigen Opcode-Prüfern und wurde
ebenfalls nicht bereitgestellt, weil seine Dokumentation die falsche
BDAGScan/blockdag.works-Historie auswählte. Release 0.6.0 übernimmt den
unveränderten, bereits geprüften Contract-Bytecode und korrigiert die Auswahl
auf die Engineering-Historie. RMS ChainPulse und WelshDAG lieferten für den
vollständigen Creation-Bytecode denselben Schätzwert von 139933 Gas und den
Engineering-Referenzhash; der Engineering-Explorer bestätigte den gleichen
Blockhash unabhängig per REST-API. Das maschinenlesbare Protokoll steht in
`evidence/bdag-live-preflight-2026-09-13.json`.

## Dynamisch geprüfte Eigenschaften

1. Compiler-Ziel ist fest auf London gesetzt; Runtime-Bytecode enthält kein
   `PUSH0`.
2. Unsigned Deployment enthält exakt den geprüften Creation-Bytecode, Chain ID
   1404, Wert 0 und keinerlei Signatur.
3. Allgemeine freiwillige native Einzahlung mit leerer Calldata.
4. Referenzgebundener `burn(bytes32)`-Aufruf und vollständiges Event.
5. Ablehnung von Nullbetrag, Nullreferenz, unbekannter Calldata und erfundenem
   `withdraw()`-Selektor.
6. Ablehnung des Vault-Deployments außerhalb Chain ID 1404.
7. Ethereum-Anker nur durch den unveränderlichen Publisher.
8. Append-only Release-Hash, Ablehnung von Duplikaten und ETH-Einzahlungen.
9. Ablehnung des Anker-Deployments außerhalb Ethereum Mainnet.
10. Exakte Dezimalumrechnung der öffentlichen BDAG-Eingabe ohne
   Gleitkommaarithmetik.
11. Öffentliche Oberfläche bleibt ohne vollständige On-Chain-Publikation
   gesperrt.
12. Wallet-Branch-Prüfung erkennt zwei verschiedene Historien trotz gleicher
    Chain ID 1404.
13. Direkte Burn-Transaktion verwendet exakte Zieladresse, Wert und leere
    Calldata.
14. Receipt-Prüfung lehnt abweichenden Absender, Empfänger, Betrag oder
    fehlendes Vault-Event fail-closed ab.

## Lieferkettenprüfung

Der frühere Testaufbau mit Ganache erzeugte 36 npm-Befunde und wurde vollständig
entfernt. Der neue Testaufbau hat keine Produktionsabhängigkeiten und null
Produktionsbefunde. Der vollständige Entwicklungsbaum meldet noch zwei
High-Einträge für `tmp 0.2.6`, transitiv aus dem gepinnten Solidity-Compiler.
Der verwendete Compilerpfad importiert `solc` und kompiliert Standard JSON im
Speicher; er ruft die betroffene Temp-Datei-API nicht auf. Installationsskripte
werden mit `npm ci --ignore-scripts` deaktiviert. Dieser Restbefund betrifft
weder Contract-Runtime noch Website, bleibt aber bis zu einem Upstream-Fix
öffentlich dokumentiert.

## Plausibilitäts- und Dokumentationsprüfung

- Die offiziellen BlockDAG-Netzwerkangaben nennen Chain ID 1404 und BDAG als
  native Währung.
- Die gespeicherte Mehrquellen-Beobachtung weist zwei divergierende Historien unter
  derselben Chain ID nach. Deshalb reicht Chain ID 1404 nicht als
  Deploymentfreigabe.
- „Burn“ ist durchgehend als dauerhaftes Einschließen bzw. wirtschaftliche
  Vernichtung beschrieben; ein protokollweiter `totalSupply`-Zähler wird nicht
  als reduziert behauptet.
- EVM-Wert kann unter Umständen ohne Receive-Aufruf an eine Adresse gelangen.
  Die öffentliche Oberfläche wertet deshalb ausschließlich das passende
  Contract-Event aus, niemals eine bloße Kontostandsdifferenz.
- Der Nutzer-Burn wird vor der Signatur an Chain ID, historischen
  Branch-Fingerprint, exakten Runtime-Bytecode, Vault-Adresse, Absender und
  Betrag gebunden.
- Der Engineering-Explorer, RMS ChainPulse und WelshDAG stimmen für Block
  316002 auf
  `0xcd4d2568e9cba6725329e8cf6d96217ace7acb03d71d9b519c8b2560bb6bb781`
  überein; BDAGScan und blockdag.works liefern dagegen
  `0xe2c7a9b0ff6206e6ac93f2cceead3992e081a4be64f5a5975d6e2158cc02a824`.

Primärquellen:

- Solidity Security Considerations: https://docs.soliditylang.org/en/latest/security-considerations.html
- Ethereum Contract Verification: https://ethereum.org/developers/docs/smart-contracts/verifying
- EIP-6780: https://eips.ethereum.org/EIPS/eip-6780
- BlockDAG Network Details: https://docs.blockdagnetwork.io/mainnet-network/network-details

## Integritätsmodell

`RELEASE-MANIFEST.json` erfasst jede freigegebene Datei mit Größe und SHA-256.
`SHA256SUMS` erlaubt eine zweite Prüfung ohne Node.js. Das endgültige
`PUBLICATION.json` enthält Manifest-, Prüfbericht- und Archiv-Hash und wird auf
Ethereum verankert. Änderungen bleiben technisch möglich, können dann aber
nicht mehr unbemerkt als derselbe Release ausgegeben werden.

## Verbleibende Freigabesperren

- Erneute Live-Prüfung der ausgewählten `engineering-lineage` über RMS
  ChainPulse, WelshDAG und den Engineering-Explorer.
- Festlegung der Deployment- und Ethereum-Publisher-Adresse.
- Reale Deployments, Explorer-Source-Verifikation und Bytecode-Vergleich.
- Externes Smart-Contract-Drittaudit.
- Ausdrückliche Signatur- und Kostenfreigabe für jede On-Chain-Transaktion.

Bis diese Punkte erfüllt sind, bleibt die öffentliche Seite fail-closed und
zeigt keine Burn-Adresse.
