ZYCORD Doku
Deutsch
ZycordDokuInstallation

Installation

Die Dateien auf einen Rechner bringen und wissen, was man bekommen hat. Einen Node im Ernst zu betreiben, ist Einen Node betreiben; auf dieser Seite geht es um die Installation.

Zycord besteht aus zwei Kommandozeilenprogrammen und einer Desktop-Anwendung:

NameWas es ist
zcdDas Kommandozeilenwerkzeug: Schlüssel, Wallets, Genesis, die Golden Vectors und zcd ui.
zycorddDer Node: validiert, mint, bedient Peers, beantwortet eine schreibgeschützte RPC.
Zycord WalletEin Desktop-Fenster um dieselbe Wallet-Oberfläche, die zcd ui ausliefert.
Wo das Projekt heute steht

Das erste getaggte Release ist nicht veröffentlicht, das Bauen aus dem Quellcode ist derzeit also der Weg hinein, und der Abschnitt unten ist der zu lesende. Die Wege über Paketmanager und die weiter unten beschriebenen Release-Archive sind die Form, in der das Projekt ausgeliefert wird, sobald das Taggen beginnt; sie sind hier dokumentiert, weil die Manifeste im Repository liegen und jetzt prüfbar sind, nicht weil es schon etwas herunterzuladen gäbe. Die Releases-Seite ist der Ort, an dem sie erscheinen werden.

Aus dem Quellcode bauen#

Die Go-Version ist go1.26.2, und sie ist Teil des Quellcodes. Zwei Go- Releases übersetzen dasselbe Paket in unterschiedlichen Maschinencode, eine Binärdatei ist also ebenso das Ergebnis eines Compilers wie eines Repositorys — ein Nachbau mit einem anderen Go ist eine andere Datei aus einem identischen Baum. make build fixiert sie daher (GOTOOLCHAIN=go1.26.2 im Makefile) und verweigert den Build unter allem anderen, statt Ihnen eine Binärdatei zu reichen, deren Hash nicht passt, ohne dass ein Grund ersichtlich wäre.

git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
make build

Wenn Sie go1.26.2 nicht haben, müssen Sie es nicht suchen gehen: die Fixierung lässt den go-Befehl genau diese Toolchain bei der ersten Verwendung holen und gegen Gos eigene Prüfsummendatenbank prüfen. Das ist das Einzige an diesem Build, das das Netzwerk berührt.

Welche Binärdatei einem Netzwerk beitreten kann#

Das ist der wichtigste Absatz auf dieser Seite. RandomX wird hinter einem Build-Tag übersetzt, es gibt also zwei Builds, und nur einer von beiden kann mit einem RandomX-Netzwerk sprechen — und das sind sowohl das Mainnet als auch das öffentliche Testnet.

# Default: no cgo, no C toolchain, development engine only.
# Byte-for-byte reproducible. Runs a local devnet and nothing else.
make build           #  -> bin/zcd, bin/zycordd

# The network binary. cgo, so not reproducible.
make build-randomx   #  -> bin/zcd-randomx, bin/zycordd-randomx

Die beiden Builds schreiben absichtlich unterschiedliche Dateien. Früher schrieben sie dieselben zwei Pfade, sodass der zweite Lauf den anderen ersetzte und der Name Ihnen nichts darüber sagte, welche Engine darin steckte. Führen Sie zcd-randomx aus, wo das Netzwerk RandomX nutzt, und zcd, wo nicht; beide liegen vor, wenn Sie beide gebaut haben.

Eine ohne das Tag gebaute Binärdatei verweigert den Start in einem Netzwerk, dessen pow_engine sie nicht berechnen kann. Genau darum geht es bei dieser Weigerung: ohne eine Engine, auf die sie zurückfallen könnte, außer der Entwicklungs-Engine, würde ein solcher Node einen einzelnen BLAKE3-Durchlauf als Proof of Work für jeden je gesehenen Header akzeptieren — jede Fälschung gültig, jeder Fork gewichtslos, und nichts protokolliert. Umgekehrt ist es nicht symmetrisch: die getaggte Binärdatei trägt beide Engines und betreibt ein Devnet korrekt.

Fragen Sie eine Binärdatei, welche Sie in der Hand halten:

zcd version
Für dieses Projekt gibt es kein go install

Und das ist kein Versehen. go install löst einen Modulpfad über den Modul- Proxy auf, und das Wurzelmodul heißt zycord — kein Host, kein Punkt im ersten Pfad- Element, was die Toolchain rundweg ablehnt. Der Name ist Absicht: go.mod beansprucht keinen Host, denn ein Host ist eine Identitätsfläche. Der Klon oben ist der Weg über die Go-Toolchain, und er ist ohnehin der stärkere — Sie bauen das Tag, das Sie ausgecheckt haben, statt dessen, was ein Proxy ausgeliefert hat.

Zwei Stufen der Zusicherung, gesagt statt angedeutet#

Sobald es Releases gibt, wird es zwei Sätze von Archiven geben, und es sind disjunkte Sätze. Das ist die Tabelle, die man liest, bevor man entscheidet, welchen man nimmt.

ArtefaktReproduzierbar?Tritt dem Mainnet bei?Warum
zcd, zycordd — aus dem Quellcode mit make build gebautJa, byteidentischNeinReines Go, CGO_ENABLED=0, -trimpath, keine Build-ID — und daher keine RandomX-Engine. Wird nicht mehr als Download ausgeliefert; SHA256SUMS.binaries wird veröffentlicht, damit Sie es bauen und vergleichen können.
zcd, zycordd — -randomx-ArchivNeinJacgo: RandomX ist C++, also landet eine System-C-Toolchain in der Ausgabe
Zycord Wallet, Linux und macOSNeinentfälltcgo: eine System-C-Toolchain und ein Plattform-SDK landen in der Ausgabe
Zycord Wallet, WindowsJa, byteidentischentfälltKein cgo: Wails spricht WebView2 über reines Go an

Releases liefern nur die -randomx-Archive aus — ein Release, das ein Archiv herausgibt, das keinem Netzwerk beitreten kann, ist ein Release, das eine Fußangel herausgibt. Sie sind durch SHA256SUMS.randomx prüfsummiert und bewusst nicht in SHA256SUMS.binaries enthalten, denn einen cgo-Build kann niemand Byte für Byte nachbauen. SHA256SUMS.binaries führt auf, worauf ein selbst gemachter Build hashen sollte. Der Sinn dieser Angabe ist, dass es Ihre Entscheidung ist statt einer Annahme, die für Sie getroffen wurde.

Warum Ihr Betriebssystem Sie warnen wird und warum es kein Zertifikat gibt#

Eine unsignierte ausführbare Datei wird unter Windows von SmartScreen und unter macOS von Gatekeeper blockiert. Die übliche Abhilfe ist ein Zertifikat zur Codesignatur. Diese Abhilfe steht hier aus Konstruktionsgründen und nicht aus Budgetgründen nicht zur Verfügung, und der Grund ist es wert, verstanden zu werden, bevor Sie irgendetwas installieren — ein Nutzer, der weiß, warum die Warnung erscheint, ist mit einem gefälschten Installer viel schwerer zu phishen.

Ein Authenticode-Zertifikat ist eine Zertifizierungsstelle, die eine geprüfte Rechts- identität bezeugt. Das ist seine gesamte Funktion; es gibt keine Variante davon ohne einen bürgerlichen Namen darin. Die Apple Developer ID ist dasselbe Problem mit einem anderen Anbieter. Zycord wird pseudonym veröffentlicht, und ein Zertifikat zu kaufen würde das auf einen Schlag zunichtemachen.

Also wird das Pseudonym beibehalten. Das ist kein Loch in der Vertrauensgeschichte; es wählt eine andere, und für dieses Projekt eine stärkere:

Ein Zertifikat behauptet “dies kam von Entität X.”
Ein reproduzierbarer Build behauptet “dies kam aus diesem Quellcode, und jeder kann das prüfen.”

Für ein anonymes Netzwerk ist das zweite das tragende Argument, und es ist kein Slogan: die CI baut zcd bei jedem Push auf main und bei jedem Tag zweimal und schlägt fehl, wenn die beiden Binärdateien sich um ein Byte unterscheiden. Sie müssen demjenigen, der die heruntergeladene Binärdatei gebaut hat, nicht vertrauen. Sie können sie selbst bauen und Hashes vergleichen — und stimmen sie überein, hört die Frage, wer sie gebaut hat, auf zu zählen. Dieses Verfahren ist Einen Download verifizieren.

Paketmanager#

Statt gegen SmartScreen und Gatekeeper zu kämpfen, geht das Projekt durch die Tür, die sie offen lassen. Ein Paketmanager installiert aus einer URL und einem Hash, verlangt keine Signatur und löst keine der beiden Warnungen aus. Die Manifeste liegen im Repository (packaging/) und sind jetzt prüfbar; die Taps, die sie ausliefern, werden mit dem ersten Release veröffentlicht.

Windows — Scoop#

Scoop entfernt das Mark of the Web nicht; das Mark wird von vornherein nie angehängt. Mark-of-the-Web wird von Browsern und von der Windows-Shell-API zur Ausführung von Anhängen gesetzt, nicht von rohen HTTP-Clients, und Scoop lädt über [Net.HttpWebRequest] oder aria2 herunter. Die Anwendungsreputationsprüfung von SmartScreen greift bei markierten Dateien, die aus dem Explorer gestartet werden; eine Datei, die nie markiert wurde und über einen Shim aus einem Terminal gestartet wird, erreicht diesen Pfad gar nicht. Das Manifest fixiert die Release-URL und den SHA-256, Scoop prüft den Download also, bevor es ihn installiert.

Was Scoop installiert, läuft mit --devnet und weist das Mainnet und das öffentliche Testnet ab — siehe die Zwei-Stufen-Tabelle oben. Um unter Windows einem Netzwerk beizutreten, nehmen Sie das -randomx-ZIP für x86-64 von der Download-Seite; für Windows auf ARM gibt es keinen solchen Build, dort ist nur Devnet möglich. zcd version gibt aus, welche Engine die Binärdatei trägt.

Windows ohne Scoop

Ein portables ZIP ist Absicht: es gibt keinen .exe-Installer und kein MSI, denn ein unsignierter Installer ist genau das, was den schlimmsten SmartScreen-Pfad auslöst — die bildschirmfüllende Blockade “Der Computer wurde durch Windows geschützt”. Entpackte Dateien laufen aus einem Terminal ohne das. Die Desktop-Wallet braucht die WebView2-Laufzeitumgebung, die auf Windows 11 und aktuellem Windows 10 vorinstalliert ist; fehlt sie, öffnet sich das Fenster nicht, und zcd ui in einem Browser ist der Weg drumherum.

macOS — Homebrew#

Beide Pakete sind Formulae, keine Casks, und das ist der ganze Kniff: eine Formula baut auf Ihrem Rechner aus dem Quellcode, die Binärdatei ist also keine heruntergeladene Datei und hat kein Quarantäne- Attribut. Gatekeeper bekommt sie nie zu sehen. Es heißt auch, dass Sie dem Build des Projekts überhaupt nicht vertrauen — Homebrew holt das Quell-Tarball, prüft dessen SHA-256 und übersetzt es mit Ihrer eigenen Toolchain.

Die Formula baut die reinen Go-Binärdateien, was sie installiert, läuft also mit --devnet und weist das Mainnet und das öffentliche Testnet ab. Um unter macOS einem Netzwerk beizutreten, nehmen Sie das -randomx-Archiv für Ihre Architektur oder bauen Sie es selbst mit make build-randomx.

Ein Cask ist das Gegenteil, und dieses Projekt liefert keines aus: ein heruntergeladenes, unter Quarantäne gestelltes .app ohne Signatur, das nur funktioniert, indem man Leute bittet, eine Sicherheitsfunktion abzuschalten. Homebrew schließt diesen Weg bewusst — --no-quarantine ist in Homebrew 5.x veraltet.

macOS aus einem Release-ZIP

Das .app darin steht unter Quarantäne, und macOS wird sich weigern, es zu öffnen. Um es dennoch zu öffnen: doppelklicken Sie es und schließen Sie die Ablehnung; gehen Sie zu Systemeinstellungen → Datenschutz & Sicherheit, scrollen Sie zu Sicherheit; klicken Sie neben “Zycord Wallet wurde blockiert” auf Trotzdem öffnen; bestätigen und authentifizieren Sie sich.

Folgen Sie nicht älteren Ratschlägen, mit Control-Klick “

macOS 15 (Sequoia) hat diese Abkürzung entfernt. Ein Control-Klick übergeht Gatekeeper nicht mehr, und die Systemeinstellungen sind jetzt der einzige Weg.

Das Kommandozeilen-Tarball hat dieses Problem nicht: zcd und zycordd werden aus einem Terminal ausgeführt, wo xattr -d com.apple.quarantine die Prüfung beim ersten Start in einem Befehl aufhebt.

Linux#

Überhaupt kein Türsteher. Prüfen Sie zuerst die Prüfsumme und die Signatur — siehe Einen Download verifizieren —, dann:

tar xzf zycord-<version>-linux-amd64-randomx.tar.gz
sudo install -m755 zycord-<version>-linux-amd64-randomx/zcd      /usr/local/bin/
sudo install -m755 zycord-<version>-linux-amd64-randomx/zycordd  /usr/local/bin/
zcd version    # must name randomx-v1

Das ist das einzige Node-Archiv, das ein Release ausliefert; es gibt kein schlichtes mehr, das man versehentlich nehmen könnte. Unter Debian und Ubuntu tut das .deb mehr, als Dateien zu verschieben — es bringt eine systemd-Unit und ein unprivilegiertes Konto mit —, und beide Wege sind zusammen mit dem Installer-Skript auf der Download-Seite dargelegt. Die Desktop- Wallet wird unter Linux als AppImage ausgeliefert, weil libwebkit2gtk auf jeder Distribution einen anderen Paketnamen trägt.

Auf einem Server#

Niemals curl | sh

Ein ungeprüftes Skript in eine Shell zu pipen ist die falsche Haltung für Software, die Geld hält, und es ist die falsche Haltung auch dann, wenn das Skript von diesem Projekt stammt — das ganze Argument dieser Seite ist, dass Sie dem Herausgeber nicht vertrauen müssen sollten. packaging/install.sh lädt herunter, prüft die Prüfsumme und die Signatur und installiert erst dann. Holen Sie es, lesen Sie es, dann führen Sie es aus.

install.sh installiert das attestierte Archiv — das reine Go- Archiv —, weil sich sein Gang durch Prüfsumme und Signatur auf diese Stufe bezieht, und ein Skript, das eine Signatur prüft und dann etwas anderes installiert, wäre Theater. Die Binärdateien, die es in /usr/local/bin legt, weisen das Mainnet und das öffentliche Testnet also ab, und das Skript sagt das als Letztes, was es ausgibt. Für einen Server, der einem Netzwerk beitreten soll, entpacken Sie das -randomx- Archiv von Hand.

Um die Wallet-Oberfläche auf einem Server zu nutzen, geben Sie keinen Port frei. zcd ui bindet an Loopback und weist alles andere ab; leiten Sie sie über ssh weiter. Das Verfahren steht unter Einen Node betreiben.

Wovor Sie das alles nicht schützt#

Klar gesagt, denn eine Sicherheitsseite, die nur ihre Stärken aufzählt, ist eine Werbeanzeige.

  • Ein bösartiges Repository. Reproduzierbare Builds belegen, dass eine Binärdatei zu ihrem Quellcode passt. Sie sagen nichts darüber, ob der Quellcode ehrlich ist. Lesen Sie ihn — und lassen Sie die Golden Vectors gegen die Binärdatei laufen, der Sie gleich vertrauen wollen.
  • Eine gefälschte Release-Seite. Wenn jemand einen überzeugenden Klon aufstellt und Sie nie eine Signatur prüfen, beweisen Hashes, die zur eigenen Prüfsummendatei dieser Seite passen, nichts. Der Schlüssel-Fingerabdruck des Projekts E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29 ist der Anker.
  • Ein kompromittierter Rechner. Eine Wallet kann keinen Host verteidigen, der bereits verloren ist.
  • Ein lügender Node. zcd und die Wallet sind keine Full Nodes; sie glauben, was ein Node ihnen sagt. Deshalb weist die Wallet einen Node ab, dessen Chain-ID dem von Ihnen behaupteten Netzwerk widerspricht, und deshalb gibt es --confirm-rpc — siehe Wallet.
  • Wer Ihnen ZCD verkaufen will. Es gibt noch keinen Mainnet-Coin. Die Genesis hat nicht stattgefunden.