Quellcode
Ein Repository, unter MIT-Lizenz: der Node, die Wallet, die Kommandozeile, die Parametersätze und die Golden Vectors, die das Protokoll definieren. Alles, worauf das Netzwerk läuft, steckt darin.
Nichts auf dieser Seite ist mehr wert als das, was Sie prüfen können, ohne jemanden zu fragen — und hier fängt das Prüfen an. Ein anonymer Autor kann Ihnen keinen Ruf anbieten; angeboten wird stattdessen ein Baum, den Sie lesen, bauen und mit den Binärdateien vergleichen können, die man Ihnen gegeben hat.
Klonen#
git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
Oder lesen Sie ihn zuerst im Browser: gitlab.com/zycord-group/zycord-node.
Die kanonischen Orte dieses Projekts — dieser eingeschlossen — sind in der signierten Attestierung im Ankündigungs-Thread festgeschrieben, unter dem Projektschlüssel E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29. Ein anderswo gehosteter Baum ist eine Kopie: er kann ehrlich sein, veraltet oder feindselig, und nichts auf dieser Seite kann Ihnen sagen, welches davon. Prüfen Sie die signierte Liste, bevor Sie einem Spiegel trauen, und bauen Sie von einem Tag, dessen Hash Sie selbst geprüft haben.
Was darin steckt#
| Verzeichnis | Was es enthält |
|---|---|
spec/ | Das Protokoll. Die Parametersätze, die Golden Vectors und die vorab bereitgestellten Bibliotheks-Images. Eine Implementierung, die die Vektoren besteht, ist ein Peer und kein Fork. |
core/ | Konsenskritischer Code, nur Standardbibliothek: das Zellenmodell, zustandslose Gültigkeit, der Fold, die an Zertifikate angepasste EVM und RandomX hinter einem Build-Tag. |
node/ | Der Node um diesen Kern — Storage, Mempool, Miner, Peer-Schicht, Sync, Read-only-RPC, Stratum. |
wallet/ | Schlüsselverwaltung und Zertifikatsbauer. Eine Referenz, kein Konsens. |
cmd/ | zycordd, der Node; zcd, die Kommandozeile und die Wallet. |
sim/ | Der Simulator und die Fuzz-Harnesses, ein zweiter, bewusst naiver Fold, der gegen den echten gefuzzt wird, und der Chaos-Soak, der echte Nodes über echte Sockets laufen lässt. |
contracts/ | Die Referenz-Contracts, in Solidity. |
packaging/ | Das Installationsskript und die Plattformpakete, prüfbar, bevor Sie sie ausführen. |
docs/ | Die Architektur, die Protokollreferenz, der Betriebsleitfaden und das Whitepaper. |
Das Protokoll sind die Vektoren#
Der Go-Code in diesem Baum ist eine Referenzimplementierung und bewusst nicht die
Definition. Was das Netzwerk definiert, sind
die Parametersätze und die
Golden Vectors: jede Fold-, Block- und Gültigkeitsregel als Fall
(Vorzustand, Block) → (Nachzustand, Gebühren), positiv wie negativ. Schreiben Sie Ihren
eigenen Node in welcher Sprache Sie wollen — besteht er das Korpus, ist er ein Peer, und diese Implementierung hat keinen Vorrang vor ihm.
Die Aktivierungshöhen liegen am selben Ort. h1_bond und h1_vm sind
bei Genesis eingefrorene Parameter und kein Release: die Maschine ist in jede Binärdatei einkompiliert und wird
unterhalb ihrer Höhe abgelehnt, eine Ära kommt also, weil die Chain eine Zahl erreicht hat, und nie, weil
Betreiber zum Upgrade aufgefordert wurden.
Bauen#
make build # no cgo, reproducible, development engine only
make build-randomx # the network binary: mainnet and the public testnet
Nur der RandomX-Build kann einem Netzwerk beitreten. Der Standard-Build ist Byte für Byte
reproduzierbar und betreibt ein lokales Devnet; beide schreiben absichtlich verschiedene Dateien, damit eine Binärdatei, die
nicht mit dem Mainnet sprechen kann, nie mit einer verwechselt wird, die es kann. Die Go-Toolchain ist auf
go1.26.2 festgenagelt und der Build verweigert sich unter allem anderen, weil derselbe Quellcode,
von zwei Go-Releases kompiliert, zwei verschiedene Binärdateien sind.
Einen veröffentlichten Tag nachzubauen und Hashes zu vergleichen ist die Prüfung, die Vertrauen in den Herausgeber ersetzt — Einen Download prüfen enthält das vollständige Verfahren, und Installation behandelt das Bauen für den normalen Gebrauch.
Issues und Sicherheit#
Fehler, Fragen und Patches gehen an den Issue-Tracker, und CONTRIBUTING.md sagt, was eine Änderung braucht, bevor sie gemergt werden kann.
Eine Schwachstelle geht in den Offenlegungsprozess in SECURITY.md und nicht in den Tracker. Dem Projekt ist der Bericht lieber als der Vertrauensvorschuss, und ein vor Mainnet gefundener Mangel kostet niemanden etwas.
Lizenz#
MIT, für den gesamten Baum. Forken Sie ihn, liefern Sie ihn aus, verkaufen Sie ihn, benennen Sie ihn um — die Lizenz verlangt einen
Copyright-Hinweis und sonst nichts. Das Einzige, was sie Ihnen nicht geben kann, ist das Netzwerk: darüber entscheiden
die Nodes, die Ihre Blöcke annehmen, und sie nehmen sie nach den Regeln in
spec/ an.