ZYCORD docs
Français
ZycordDocsTestnet public

Testnet public

Le testnet public applique les règles de consensus du mainnet sous son propre identifiant de chaîne ; ce qu'il mesure est donc le comportement du mainnet et non le sien. Ses pièces ne valent rien, et c'est voulu.

Ce que c'est#

zcd genesis --testnet
network        zycord-testnet
chain id       2
params hash    0xc4a670f04575ac3aa6e670888e1a42ec877779fda8e5519e2637f4df93815b57
launch commit  0x83aeb709b14b43a0296666f006d99378049064f3e30d8191e074e09d485e2ff7
genesis id     0x81094507a4a083d01e24af21bddbf4d7eb496472a69c4b5dfb0d7a27c6b03b55
state root     0x4f45e604e1fd7ccf066e20e5fd41105373a0ba0d28aea8fc825b8795e880384f
genesis time   1791158400
cells written  6
allocations    0

Exécutez cette commande avant de faire confiance à cette page. Un build qui affiche un identifiant de genèse différent est un build sur une autre chaîne, et il ne se connectera pas à celle-ci — la poignée de main est refusée avant qu'un bloc ne soit évalué. allocations 0 est l'affirmation sur le premine, vérifiable plutôt que promise.

La genèse a eu lieu à 2026-10-05T00:00:00Z (unix 1791158400), deux jours avant celle du mainnet : le testnet a répété le lancement avec le même binaire et la même procédure. Il est désormais l'endroit où l'Ère 1 tourne en premier — le cEVM, les séquenceurs, les intents et les fills, l'annuaire et le chemin forcé y sont actifs depuis la hauteur 2 880, son premier jour, tandis que le mainnet atteint la même porte à la hauteur 80 640. Vous pouvez suivre la chaîne sur testnet.zycord.com.

Il diffère du mainnet par dix valeurs, et nulle part ailleurs#

name, chain_id, genesis_target, max_target, genesis_time, randomx_key_interval, h1_bond, h1_vm, coinbase_maturity et launch_commit. Les hauteurs d'activation sont ici plus basses à dessein : le testnet les a atteintes dès son premier jour, si bien que la machine est éprouvée pendant des semaines avant que le mainnet n'arrive à la même porte. h1_bond évolue avec h1_vm et n'ouvre rien sur aucun des deux réseaux : le bonding ne fait pas partie de l'Ère 1. L'engagement de lancement est propre au testnet, de sorte que son bloc 1 répète le lancement du mainnet sans révéler celui du mainnet. Tout le reste — undo_depth, target_block_seconds, la répartition de la subvention et tout le barème de gas — est celui du mainnet, à dessein. Le barème de gas surtout, parce que c'est lui qui fait que le comportement des frais de base mesuré ici est celui du mainnet plutôt que celui de ce réseau. Un testnet doté de son propre barème de gas mesure une autre chaîne.

ParamètreTestnet publicMainnet
namezycord-testnetzycord
chain_id21
genesis_time1791158400 — 2026-10-05T00:00:00Z1791331200 — 2026-10-07T00:00:00Z
randomx_key_interval512 blocs2048 blocs
h1_bond, h1_vm2 880 — vers le jour 180 640 — vers le jour 28
coinbase_maturity100 blocs240 blocs
target_block_seconds30 — identique
epoch_length2880 blocs, environ une journée — identique
ttl_max240 blocs, environ deux heures — identique
emission_ramp_blocks86 400, la montée progressive de la récompense sur 30 jours — identique
founder_share, treasury_share_bps94 % au mineur, 3 % au fondateur jusqu'à 3 153 600, 3 % à la trésorerie — identique
Supprimez votre répertoire de données avant de rejoindre un réseau réinitialisé

Un testnet peut être réinitialisé depuis la genèse. Quand il l'est, ses pièces, son historique et ses listes de pairs disparaissent, le réseau prend un nouvel identifiant de chaîne, et un répertoire de données contenant l'ancienne chaîne est refusé au démarrage plutôt que mélangé en silence. Les deux réseaux se déconnectent aussi à la poignée de main, rien ne se reporte donc discrètement.

Rejoindre le réseau#

make build-randomx        # the testnet is randomx-v2; see below
                          #   -> bin/zcd-randomx, bin/zycordd-randomx

./bin/zycordd-randomx --testnet --dir ./testnet

make build-randomx, pas make build. Le pow_engine du testnet est randomx-v2, la même fonction de travail que le mainnet. Un binaire compilé sans le tag refuse de démarrer contre lui plutôt que de retomber sur le moteur de développement, qui accepterait une seule passe BLAKE3 comme preuve de travail pour chaque en-tête rencontré.

Les binaires taggés portent le tag dans leur nom, de sorte que compiler les deux laisse les deux sur le disque et que le nom de fichier dise quel moteur s'y trouve. Ailleurs dans ces pages, les commandes sont écrites zcd et zycordd par concision ; sur ce réseau, ce sont les versions -randomx.

Amorçage#

Le binaire porte les seeds du testnet : seed1.zycord.com à seed4.zycord.com sur le port 19421. Les seeds du mainnet sont les mêmes hôtes sur 9421, et les deux réseaux se refusent mutuellement dès le handshake, si bien que rien ne se mélange. Un binaire plus ancien qui désigne testnet.zycord.com comme seed doit être remplacé plutôt que contourné. Pour fournir d'autres pairs à la place, ou en plus :

zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:19421,otherhost:19421
zycordd --testnet --dir ./testnet --no-seeds --peers-file peers.txt

Soyez joignable si vous le pouvez#

Zycord ne fait pas de traversée de NAT. Un nœud avec --listen sur un port atteignable est un endroit depuis lequel d'autres peuvent s'amorcer, et la proportion de tels nœuds est la condition falsifiable sur laquelle repose toute la décision de ne pas traverser les NAT — elle est mesurée, non supposée.

zycordd --testnet --dir ./testnet \
  --listen 0.0.0.0:9421 --advertise <public-address>:9421

Si vous ne pouvez pas rediriger de port, laissez --listen de côté et restez en périphérie. C'est une manière parfaitement valable de participer. Vérifiez laquelle est la vôtre avec curl -s localhost:9420/network — listening: true avec inbound: 0 après quelques minutes signifie que le port n'est en fait pas atteignable.

Obtenir des pièces#

Deux voies, et la seconde est celle autour de laquelle ce réseau a été conçu.

Le faucet#

L'explorateur testnet en fait tourner un. Il verse une petite somme à toute adresse que vous lui donnez, afin qu'un envoi, un remboursement et un balayage puissent être répétés sans allouer d'abord deux gibioctets à RandomX. Ce qu'il est et pourquoi il est construit ainsi fait l'objet d'une page à part.

Il existe sur ce réseau et sur aucun autre. Le faucet est une fonction de l'explorateur désactivée par défaut, et l'activer exige de nommer un réseau — un nom comparé à la chaîne que cet explorateur indexe réellement, avec mainnet refusé d'emblée. Le mainnet n'a ni faucet ni premine, et c'est une vérification dans le binaire plutôt qu'une politique que quelqu'un doit se rappeler.

Rien n'est frappé pour lui. Le faucet détient une clé ordinaire, signe un transfert ordinaire à travers la même wallet/session qu'utilise la ligne de commande, et paie une demande par bloc parce qu'un certificat porte l'état qu'il a lu et que deux certificats construits sur une même lecture de sa cellule entreraient en course. Son solde vient du minage, un faucet vide reste donc vide jusqu'à ce que quelqu'un le remplisse.

Auto-minage#

La voie sans file d'attente et sans opérateur, et la même distribution que celle du mainnet :

zcd wallet new --out miner.json
zycordd --testnet --dir ./testnet \
  --mine --payout $(zcd wallet address --key miner.json | awk '/^persistent/ {print $3}')

L'adresse de paiement doit être une adresse persistante (0x02) — la ligne persistent de zcd wallet address, qui imprime aussi la prochaine adresse à usage unique — et zycordd refuse toute autre chose plutôt que d'avertir. Pourquoi.

coinbase_maturity vaut 100, si bien que pendant à peu près les cent premiers blocs suivant votre première récompense, seuls les mineurs peuvent transiger. Cette montée en charge est celle du mainnet et fait partie de ce que ce réseau répète — et c'est la raison pour laquelle le faucet existe ici et ne peut pas exister là-bas : le faucet raccourcit la montée en charge pour qui veut exercer un portefeuille, sur le seul réseau où la raccourcir ne coûte rien.

Le minage alloue le jeu de données RandomX — environ 2 Gio, plus ~256 Mio par époque de clé conservée. Une machine qui vérifie confortablement ne peut pas nécessairement miner ; les budgets sont sous Minage.

Les pièces du testnet ne valent rien#

Par conception, et définitivement. Le réseau peut être réinitialisé depuis la genèse, ce à quoi sert un testnet. Quiconque propose de les acheter ou de les vendre monte une arnaque qui n'a même pas besoin d'une histoire.

Ce que ce réseau mesure#

Ce n'est pas une démonstration. Quatre choses pour lesquelles il existe afin de produire des chiffres :

  • La pause de changement de clé. À 512 blocs, le renouvellement de clé RandomX survient à peu près toutes les quatre heures au lieu des dix-sept du mainnet ; la reconstruction du jeu de données est ainsi répétée assez souvent pour être mesurée plutôt que théorisée.
  • Le comportement des frais de base sous le barème de gas du mainnet, raison pour laquelle ce barème n'est pas ajusté ici.
  • La proportion de nœuds joignables, qui est la première condition de réouverture de la décision de ne pas faire de traversée de NAT.
  • L'Ère 1 sous charge réelle : séquenceurs, fills et chemin forcé sur un réseau en service, des semaines avant que le mainnet n'atteigne sa porte.

Quand quelque chose semble anormal#

Faire tourner un nœud contient le chemin de diagnostic pour un nœud qui ne se synchronise pas, et la commande de réparation pour un répertoire de données contre lequel il refuse de démarrer. Les constats et les reproductions vont dans le gestionnaire de tickets ; le projet préfère le rapport au bénéfice du doute.