Installation
Mettre les fichiers sur une machine et savoir ce que l'on a obtenu. Faire tourner un nœud pour de bon, c'est Faire tourner un nœud ; cette page traite de l'installation.
Zycord, ce sont deux programmes en ligne de commande et une application de bureau :
| Nom | Ce que c'est |
|---|---|
zcd | L'outil en ligne de commande : clés, portefeuilles, genèse, vecteurs de référence, et zcd ui. |
zycordd | Le nœud : il valide, mine, sert les pairs et répond à un RPC en lecture seule. |
| Zycord Wallet | Une fenêtre de bureau autour de la même interface de portefeuille que sert zcd ui. |
La première version taggée n'a pas été publiée, si bien que construire depuis les sources est actuellement la voie d'entrée, et que la section ci-dessous est celle à lire. Les voies par gestionnaire de paquets et les archives de version décrites plus bas sont la forme sous laquelle le projet sera livré une fois le taggage commencé ; elles sont documentées ici parce que les manifestes sont dans le dépôt et relisibles dès maintenant, non parce qu'il y aurait déjà quelque chose à télécharger. La page des versions est l'endroit où elles apparaîtront.
Construire depuis les sources#
La version de Go est go1.26.2, et elle fait partie des sources. Deux versions
de Go compilent le même paquet en un code machine différent, si bien qu'un binaire est autant le produit d'un
compilateur que d'un dépôt — une reconstruction avec un autre Go est un fichier différent à partir
d'un arbre identique. make build la fixe donc (GOTOOLCHAIN=go1.26.2 dans le
Makefile) et refuse de construire sous toute autre, plutôt que de
vous remettre un binaire dont le hachage ne correspondra pas sans aucune raison apparente.
git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
make build
Si vous n'avez pas go1.26.2, vous n'avez pas à aller la chercher : l'épinglage fait que la
commande go récupère exactement cette chaîne d'outils à la première utilisation et la vérifie contre la base de
sommes de contrôle propre à Go. C'est la seule chose dans cette construction qui touche au réseau.
Quel binaire peut rejoindre un réseau#
C'est le paragraphe le plus important de la page. RandomX est compilé derrière un tag de compilation, si bien qu'il existe deux constructions et que l'une d'elles seulement peut parler à un réseau RandomX — ce qui vaut aussi bien pour le mainnet que pour le testnet public.
# 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
Les deux constructions écrivent des fichiers différents à dessein. Elles écrivaient auparavant les deux mêmes
chemins, si bien que celle qui s'exécutait en second remplaçait l'autre et que le nom ne vous disait rien du
moteur qui s'y trouvait. Exécutez zcd-randomx là où le réseau est en RandomX et zcd
là où il ne l'est pas ; les deux sont présents après avoir construit les deux.
Un binaire construit sans le tag refuse de démarrer sur un réseau dont il ne peut pas calculer le
pow_engine. Ce refus est tout l'enjeu : n'ayant d'autre moteur de repli que celui
de développement, un tel nœud accepterait une seule passe BLAKE3 comme preuve de travail pour
chaque en-tête rencontré — toute contrefaçon valide, tout fork sans poids, et rien de journalisé.
L'inverse n'est pas symétrique : le binaire taggé porte les deux moteurs et fait tourner un devnet correctement.
Demandez à un binaire lequel vous tenez :
zcd version
go install pour ce projetEt ce n'est pas un oubli. go install résout un chemin de module par le proxy de
modules, et le module racine s'appelle zycord — pas d'hôte, pas de point dans le premier élément
du chemin, ce que la chaîne d'outils rejette d'emblée. Ce nom est délibéré : go.mod ne revendique
aucun hôte, car un hôte est une surface d'identité. Le clone ci-dessus est la voie de la chaîne d'outils Go, et c'est
de toute façon la plus forte — vous construisez le tag que vous avez récupéré plutôt que ce qu'un proxy
a servi.
Deux paliers d'assurance, énoncés plutôt que sous-entendus#
Une fois les versions publiées, il y aura deux jeux d'archives, et ce sont des jeux disjoints. Voici la table à lire avant de décider lequel prendre.
| Artefact | Reproductible ? | Rejoint le mainnet ? | Pourquoi |
|---|---|---|---|
zcd, zycordd — construits depuis les sources avec make build | Oui, identiques octet pour octet | Non | Go pur, CGO_ENABLED=0, -trimpath, pas d'identifiant de build — et donc pas de moteur RandomX. Plus livrés en téléchargement ; SHA256SUMS.binaries est publié pour que vous puissiez les construire et comparer. |
zcd, zycordd — archive -randomx | Non | Oui | cgo : RandomX est en C++, une chaîne d'outils C du système se retrouve donc dans la sortie |
| Zycord Wallet, Linux et macOS | Non | sans objet | cgo : une chaîne d'outils C du système et un SDK de plateforme se retrouvent dans la sortie |
| Zycord Wallet, Windows | Oui, identiques octet pour octet | sans objet | Pas de cgo : Wails atteint WebView2 en Go pur |
Les versions ne livrent que les archives -randomx — une version qui
distribue une archive incapable de rejoindre un réseau est une version qui distribue un piège. Elles sont
couvertes par SHA256SUMS.randomx et ne figurent délibérément pas dans
SHA256SUMS.binaries, parce qu'une compilation cgo est une compilation que personne ne peut reconstruire octet pour octet.
SHA256SUMS.binaries liste ce à quoi doit correspondre le hachage d'une compilation que vous faites vous-même. L'intérêt de l'énoncer est que c'est votre décision plutôt
qu'une hypothèse prise pour vous.
Pourquoi votre système d'exploitation vous avertira, et pourquoi il n'y a pas de certificat#
Un exécutable non signé est bloqué par SmartScreen sous Windows et par Gatekeeper sous macOS. La solution habituelle est un certificat de signature de code. Cette solution est indisponible ici par construction, non par budget, et la raison mérite d'être comprise avant d'installer quoi que ce soit — un utilisateur qui sait pourquoi l'avertissement apparaît est bien plus difficile à hameçonner avec un faux installeur.
Un certificat Authenticode est une autorité de certification attestant d'une identité légale vérifiée. C'est toute sa fonction ; il n'en existe aucune version sans un nom légal dedans. L'Apple Developer ID pose le même problème avec un autre fournisseur. Zycord est publié sous pseudonyme, et acheter un certificat annulerait cela sur-le-champ.
Le pseudonyme est donc conservé. Ce n'est pas un trou dans l'argument de confiance ; cela en sélectionne un autre, et pour ce projet un plus solide :
Un certificat affirme « ceci vient de l'entité X ».
Une compilation reproductible affirme « ceci vient de ces sources, et n'importe qui peut le vérifier ».
Pour un réseau anonyme, c'est le second argument qui porte, et ce n'est pas un slogan : la CI
reconstruit zcd deux fois à chaque push sur main et à chaque tag, et échoue si les
deux binaires diffèrent d'un octet. Vous n'avez pas à faire confiance à qui a construit le binaire que vous avez téléchargé.
Vous pouvez le construire vous-même et comparer les hachages — et s'ils correspondent, la question de savoir qui l'a
construit cesse d'avoir de l'importance. Cette procédure est Vérifier un téléchargement.
Gestionnaires de paquets#
Plutôt que de lutter contre SmartScreen et Gatekeeper, le projet passe par la porte qu'ils laissent ouverte. Un gestionnaire de paquets installe depuis une URL et un hachage, n'exige aucune signature, et ne déclenche ni l'un ni l'autre avertissement. Les manifestes sont dans le dépôt (packaging/) et relisibles dès maintenant ; les dépôts qui les servent seront publiés avec la première version.
Windows — Scoop#
Scoop ne retire pas la marque du web ; la marque n'est tout simplement jamais
apposée. La marque du web est appliquée par les navigateurs et par l'API shell d'exécution des pièces jointes de Windows,
non par des clients HTTP bruts, et Scoop télécharge par [Net.HttpWebRequest] ou
aria2. La vérification de réputation d'application de SmartScreen se déclenche sur les fichiers marqués lancés depuis l'Explorateur ; un
fichier qui n'a jamais été marqué, lancé par un shim depuis un terminal, n'emprunte pas du tout ce chemin.
Le manifeste fixe l'URL de version et le SHA-256, si bien que Scoop vérifie le téléchargement avant de
l'installer.
Ce que Scoop installe tourne en --devnet et refuse le mainnet et le testnet
public — voyez la table des deux paliers ci-dessus. Pour rejoindre un réseau sous Windows, prenez le
zip -randomx pour x86-64 sur la page des téléchargements ; Windows sur
ARM n'a pas de telle version et est limité au devnet. zcd version imprime quel moteur le binaire
porte.
Windows sans Scoop
Un zip portable est délibéré : il n'y a pas d'installeur .exe ni de
MSI, parce qu'un installeur non signé est précisément ce qui déclenche le pire chemin SmartScreen —
le blocage plein écran « Windows a protégé votre ordinateur ». Les fichiers extraits s'exécutent depuis un terminal sans
lui. Le portefeuille de bureau a besoin du runtime WebView2, préinstallé sur Windows 11 et
les Windows 10 à jour ; s'il manque, la fenêtre ne s'ouvrira pas et zcd ui dans un navigateur
est le moyen de contourner cela.
macOS — Homebrew#
Les deux paquets sont des formulae, non des casks, et c'est là toute l'astuce : une formula construit depuis les sources sur votre machine, si bien que le binaire n'est pas un fichier téléchargé et n'a aucun attribut de quarantaine. Gatekeeper ne le voit jamais. Cela signifie aussi que vous ne faites aucunement confiance à la construction du projet — Homebrew récupère l'archive des sources, vérifie son SHA-256, et la compile avec votre propre chaîne d'outils.
La formula construit les binaires en Go pur, si bien que ce qu'elle installe tourne en --devnet
et refuse le mainnet et le testnet public. Pour rejoindre un réseau sous macOS, prenez
l'archive -randomx pour votre architecture, ou construisez-la vous-même avec
make build-randomx.
Un cask est l'inverse et ce projet n'en livre pas : un .app téléchargé,
mis en quarantaine et sans signature, qui ne fonctionne qu'en demandant aux gens de désactiver une
fonction de sécurité. Homebrew ferme ce chemin délibérément —
--no-quarantine est déprécié dans Homebrew 5.x.
macOS depuis une archive zip de version
Le .app qui s'y trouve est mis en quarantaine et macOS refusera de l'ouvrir.
Pour l'ouvrir malgré tout : double-cliquez dessus et écartez le refus ; allez dans Réglages Système →
Confidentialité & sécurité, descendez jusqu'à Sécurité ; à côté de « Zycord Wallet a été
bloqué », cliquez sur Ouvrir quand même ; confirmez et authentifiez-vous.
macOS 15 (Sequoia) a supprimé ce raccourci. Le contrôle-clic ne passe plus outre Gatekeeper, et les Réglages Système sont désormais la seule voie.
L'archive en ligne de commande n'a pas ce problème : zcd et zycordd s'exécutent
depuis un terminal, où xattr -d com.apple.quarantine lève la vérification du premier lancement en
une commande.
Linux#
Aucun gardien d'aucune sorte. Vérifiez d'abord la somme de contrôle et la signature — voyez Vérifier un téléchargement — puis :
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
C'est la seule archive de nœud qu'une version livre ; il n'y a plus d'archive simple à prendre par
erreur. Sous Debian et Ubuntu, le .deb fait plus que déplacer des fichiers — il apporte une
unité systemd et un compte non privilégié — et les deux voies, avec le script d'installation, sont
exposées sur la page des téléchargements. Le portefeuille de
bureau sous Linux est livré en AppImage, parce que libwebkit2gtk porte un
nom de paquet différent sur chaque distribution.
Sur un serveur#
curl | shFaire passer un script non vérifié dans un shell est la mauvaise posture pour un logiciel qui détient de l'argent, et c'est la mauvaise posture même quand le script est celui de ce projet — tout l'argument de cette page est que vous ne devriez pas avoir à faire confiance à l'éditeur. packaging/install.sh télécharge, vérifie la somme de contrôle et la signature, et n'installe qu'ensuite. Récupérez-le, lisez-le, puis exécutez-le.
install.sh installe l'archive attestée — celle en Go pur
— parce que c'est le palier dont traite son parcours de somme de contrôle et de signature, et qu'un script qui
vérifierait une signature puis installerait autre chose serait de la mise en scène. Les binaires qu'il place
dans /usr/local/bin refusent donc le mainnet et le testnet public, et le script le dit en
dernière ligne. Pour un serveur destiné à rejoindre un réseau, dépaquetez l'archive -randomx
à la main.
Pour utiliser l'interface du portefeuille sur un serveur, n'exposez pas de port. zcd
ui se lie à la boucle locale et refuse toute autre chose ; redirigez-la par ssh. La procédure est sous
Faire tourner un nœud.
Ce dont rien de tout cela ne vous protège#
Énoncé sans détour, car une page de sécurité qui ne liste que ses forces est une publicité.
- Un dépôt malveillant. Les compilations reproductibles prouvent qu'un binaire correspond à ses sources. Elles ne disent rien de l'honnêteté des sources. Lisez-les — et exécutez les vecteurs de référence contre le binaire auquel vous vous apprêtez à faire confiance.
- Une fausse page de versions. Si quelqu'un monte un clone convaincant et que vous ne vérifiez jamais de signature, des hachages correspondant au fichier de sommes de contrôle de cette page ne prouvent rien. L'empreinte de la clé du projet
E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29est l'ancre. - Une machine compromise. Un portefeuille ne peut pas défendre un hôte déjà perdu.
- Un nœud menteur.
zcdet le portefeuille ne sont pas des nœuds complets ; ils croient ce qu'un nœud leur dit. C'est pourquoi le portefeuille refuse un nœud dont l'identifiant de chaîne diverge du réseau que vous avez affirmé, et pourquoi--confirm-rpcexiste — voyez Portefeuille. - Quiconque vous vend des ZCD. Il n'existe encore aucune pièce de mainnet. La genèse n'a pas eu lieu.