Öffentliches Testnet
Das öffentliche Testnet trägt die Konsensregeln des Mainnets unter einer eigenen Chain-ID, sodass es das Verhalten des Mainnets misst und nicht sein eigenes. Seine Coins sind nichts wert, und das ist so gewollt.
Was sie ist#
zcd genesis --testnet
network zycord-testnet
chain id 2
params hash 0x0b732489dee8fd2bcb5fa37b513b2ea10edc616bd664ba5b55c69952f63e2c1b
genesis id 0xc1b21b079b3dfe781c40a187326bb8dbbcf0fb97164d6fdf7a7d6a536c74705b
state root 0x6974f84b8088039ab721fd6be6ac72b73845e5dc93f0b5625b4e9c564ccf73e3
genesis time 1789430400
cells written 6
allocations 0
Führen Sie diesen Befehl aus, bevor Sie dieser Seite vertrauen. Ein Build, der eine andere
Genesis-ID ausgibt, ist ein Build auf einer anderen Chain, und er wird sich nicht mit dieser verbinden — der
Handshake verweigert, bevor ein Block bewertet wird. allocations 0 ist die Premine-Aussage,
überprüfbar statt versprochen.
Die Genesis war 2026-09-15T00:00:00Z (Unix 1789430400). Sie können der
Chain unter testnet.zycord.com zusehen.
Es weicht vom Mainnet in acht Werten ab und sonst nirgends#
name, chain_id, genesis_target, max_target,
genesis_time, randomx_key_interval, h1_bond und
h1_vm. Die letzten beiden sind die Aktivierungshöhen, und sie liegen hier absichtlich niedriger:
das Testnet erreicht sie an seinem ersten und dritten Tag, sodass die Maschine wochenlang erprobt wird, bevor
das Mainnet an dieselben Schranken kommt. Alles andere —
undo_depth, target_block_seconds, coinbase_maturity und
der gesamte Gas-Tarif — ist absichtlich der des Mainnets. Besonders der Gas-Tarif,
weil er es ist, der das hier gemessene Base-Fee-Verhalten zu dem des Mainnets macht statt zu dem
dieses Netzwerks. Ein Testnet mit eigenem Gas-Tarif misst eine andere Chain.
| Parameter | Öffentliches Testnet | Mainnet |
|---|---|---|
name | zycord-testnet | zycord |
chain_id | 2 | 1 |
genesis_time | 1789430400 — 2026-09-15T00:00:00Z | 1790812800 — 2026-10-01T00:00:00Z |
randomx_key_interval | 512 Blöcke | 2048 Blöcke |
h1_bond | 2.880 — etwa Tag 1 | 40.320 — etwa Tag 14 |
h1_vm | 8.640 — etwa Tag 3 | 80.640 — etwa Tag 28 |
target_block_seconds | 30 — identisch | |
coinbase_maturity | 100 — identisch | |
epoch_length | 2880 Blöcke, etwa ein Tag — identisch | |
ttl_max | 240 Blöcke, etwa zwei Stunden — identisch | |
treasury_share_bps | 300, also 3 % — identisch | |
Ein Testnet kann ab Genesis zurückgesetzt werden. Geschieht das, sind seine Coins, seine Historie und seine Peer-Listen weg, das Netzwerk erhält eine neue Chain-ID, und ein Datenverzeichnis, das die alte Chain enthält, wird beim Start abgewiesen statt stillschweigend vermischt. Die beiden Netzwerke trennen sich zudem beim Handshake, sodass nichts leise übernommen wird.
Beitreten#
make build-randomx # the testnet is randomx-v1; see below
# -> bin/zcd-randomx, bin/zycordd-randomx
./bin/zycordd-randomx --testnet --dir ./testnet
make build-randomx, nicht make build. Die
pow_engine des Testnets ist randomx-v1, dieselbe Arbeitsfunktion wie beim Mainnet. Eine Binärdatei,
die ohne das Tag gebaut wurde, verweigert dagegen den Start, statt auf die Entwicklungs-Engine
zurückzufallen, die einen einzelnen BLAKE3-Durchlauf als Proof of Work für jeden je gesehenen Header akzeptieren würde.
Die getaggten Binärdateien tragen das Tag in ihren Namen, sodass beide Builds
beide auf der Platte hinterlassen und der Dateiname sagt, welche Engine darin steckt. An anderer Stelle auf diesen Seiten sind die
Befehle der Kürze halber als zcd und zycordd geschrieben; in diesem Netzwerk sind das
die Paare mit -randomx.
Bootstrap#
Die Binärdatei liefert eine Seed-Adresse für dieses Netzwerk mit und keine für irgendein anderes. Sie müssen keinen Peer finden, bevor Sie starten können — der Befehl oben tritt über den eingebauten Seed bei. Um stattdessen oder zusätzlich einen eigenen anzugeben:
zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:9421,host2:9421
zycordd --testnet --dir ./testnet --no-seeds --peers-file peers.txt
Erreichbar sein, wenn es geht#
Zycord betreibt keine NAT-Traversierung. Ein Node mit --listen auf einem erreichbaren Port ist
ein Ort, von dem aus andere bootstrappen können, und der Anteil solcher Nodes ist die falsifizierbare
Bedingung, auf der die gesamte Entscheidung gegen Traversierung ruht — er wird gemessen, nicht angenommen.
zycordd --testnet --dir ./testnet \
--listen 0.0.0.0:9421 --advertise <public-address>:9421
Wenn Sie keinen Port weiterleiten können, lassen Sie --listen weg und bleiben Sie Peripherie. Das ist eine
völlig gute Art teilzunehmen. Prüfen Sie mit curl -s
localhost:9420/network, was von beidem Sie sind — listening: true mit inbound: 0
nach ein paar Minuten heißt, dass der Port tatsächlich nicht erreichbar ist.
An Coins kommen#
Zwei Wege, und der zweite ist der, um den herum dieses Netzwerk entworfen wurde.
Der Faucet#
Der Testnet-Explorer betreibt einen. Er zahlt einen kleinen Betrag an jede Adresse, die Sie ihm geben, sodass sich eine Überweisung, eine Rückerstattung und ein Sweep proben lassen, ohne vorher zwei Gibibyte an RandomX zu vergeben. Was er ist und warum er so gebaut ist, ist eine eigene Seite.
Er existiert in diesem Netzwerk und in keinem anderen. Der Faucet ist eine Funktion des
Explorers, die standardmäßig aus ist, und ihn einzuschalten erfordert, ein Netzwerk zu benennen — ein Name, der gegen
die Chain geprüft wird, die dieser Explorer tatsächlich indiziert, wobei mainnet rundweg abgelehnt wird.
Das Mainnet hat weder Faucet noch Premine, und das ist eine Prüfung in der Binärdatei statt einer Richtlinie,
an die sich jemand erinnern muss.
Dafür wird nichts geprägt. Der Faucet hält einen gewöhnlichen Schlüssel, signiert eine gewöhnliche Überweisung durch
dieselbe wallet/session, die auch die Kommandozeile nutzt, und zahlt einen Bezug pro Block aus, weil ein
Zertifikat den Zustand mitführt, den es gelesen hat, und zwei, die auf einer Lesung seiner Zelle aufbauen, um die Wette liefen.
Sein Guthaben stammt aus dem Mining, ein leerer Faucet bleibt also leer, bis ihn jemand wieder auffüllt.
Selbst-Mining#
Der Weg ohne Warteschlange und ohne Betreiber, und mit derselben Verteilung, die auch das Mainnet bekommt:
zcd wallet new --out miner.json
zycordd --testnet --dir ./testnet \
--mine --payout $(zcd wallet address --key miner.json)
Starten Sie ihn ruhig, bevor das Netzwerk öffnet — das ist die vorgesehene Art, ihn zu nutzen. Ein Node, dessen Uhr den frühesten Zeitstempel noch nicht erreicht hat, den der nächste Block tragen darf, verweigert es, einen zu bauen, sagt, wie lange die Wartezeit ist, und beginnt von selbst zu minen, wenn es so weit ist. Es gibt nichts zu planen und nichts neu zu starten, und er peert und synchronisiert die ganze Wartezeit über.
Die Auszahlung muss eine persistente (0x02) Adresse sein —
zcd wallet address gibt standardmäßig eine aus, und zycordd weist alles andere ab,
statt zu warnen. Warum.
coinbase_maturity ist 100, also können in den ersten rund hundert Blöcken nach Ihrer ersten
Belohnung nur Miner Transaktionen durchführen. Diese Anlaufphase ist die des Mainnets und Teil dessen, was dieses Netzwerk
probt — und sie ist der Grund, warum es den Faucet hier gibt und dort nicht geben kann: der Faucet
verkürzt die Anlaufphase für jemanden, der eine Wallet ausprobieren will, in dem einen Netzwerk, in dem diese Verkürzung
nichts kostet.
Das Mining reserviert das RandomX-Dataset — etwa 2 GiB, dazu ~256 MiB je gehaltener Schlüsselepoche. Ein Rechner, der bequem verifizieren kann, kann nicht zwangsläufig minen; die Budgets stehen unter Mining.
Die Testnet-Coins sind nichts wert#
So gewollt, und dauerhaft. Das Netzwerk kann ab Genesis zurückgesetzt werden, wofür ein Testnet da ist. Wer anbietet, sie zu kaufen oder zu verkaufen, betreibt einen Betrug, der nicht einmal eine Geschichte braucht.
Was dieses Netzwerk misst#
Es ist keine Vorführung. Vier Dinge, für die es Zahlen liefern soll:
- Die Pause beim Schlüsselwechsel. Bei 512 Blöcken fällt der RandomX-Schlüsselwechsel etwa alle vier Stunden an statt alle siebzehn wie im Mainnet, sodass der Neuaufbau des Datensatzes oft genug geprobt wird, um ihn zu messen statt über ihn zu theoretisieren.
- Base-Fee-Verhalten unter dem Gas-Tarif des Mainnets, weshalb der Tarif hier nicht angepasst wird.
- Der Anteil erreichbarer Nodes, der die erste Bedingung dafür ist, die Entscheidung gegen NAT-Traversierung neu aufzurollen.
- Die Wartezeit vor Genesis, und ob aus einem ehrlichen frühen Start wirklich ein pünktlicher Start wird, ohne dass etwas neu gestartet werden muss.
Wenn etwas nicht stimmt#
Einen Node betreiben enthält den Diagnoseweg für einen Node, der nicht synchronisiert, und den Reparaturbefehl für ein Datenverzeichnis, gegen das er den Start verweigert. Befunde und Reproduktionen gehören in den Issue-Tracker; dem Projekt ist der Bericht lieber als der Vertrauensvorschuss.