Madencilik
Bilgisayarınızda zaten bulunan işlemci üzerinde, RandomX ile proof of work. Yarışılacak bir ASIC çiftliği ve premine yok — paralar madencilikten gelir, başka hiçbir yerden değil.
Tamamı#
# A payout address. The node never sees the key behind it.
zcd wallet new --out miner.json
# Mine to it.
zycordd --testnet --dir ./testnet \
--mine --payout $(zcd wallet address --key miner.json | awk '/^persistent/ {print $3}')
zcd wallet address iki satır yazdırır: sıradaki kullanılmamış one-shot adres ve kalıcı adres; ödeme adresi kalıcı olanıdır. Açık testnet'te ve mainnet'te zcd ve zycordd, -randomx ikili dosyalarıdır — zcd-randomx ve zycordd-randomx. Etiketsiz derlenen bir ikili dosya, geliştirme motoruna geri düşmek yerine başlamayı reddeder. Kurulum sayfasına bakın.
İstediğiniz zaman başlatın#
Ağının ilk bloğunun vakti gelmeden başlatılan bir düğüm erken madencilik yapmaz ve o saatte yeniden başlatılması gerekmez. Zaman damgasına kendi saati ulaşmamış bir bloğu kurmayı reddeder, bekler ve kendiliğinden başlar. Beklerken bunu, beklediği zamanı ve ne kadar kaldığını da söyleyerek bildirir:
waiting to mine: the next block cannot be dated before 2026-10-07T00:00:01Z
(unix 1791331201), and this node's clock reads 2026-10-06T20:12:31Z - 3h47m30s
to wait. Leave this running: mining starts on its own and there is nothing to
restart or reconfigure.
Bu, çalışmayı değil, madencilik yapmayı reddetmektir: düğüm bu süre boyunca eşleşir, eşitlenir ve RPC'sini sunar. Uzun bir bekleme takılma gibi görünmesin diye ileti her on dakikada bir yinelenir.
Bekleme bu makinenin saatine göre hesaplanır, dolayısıyla günlerce geri ayarlanmış bir saat günlerce bekler. Başka her şeyden önce onu denetleyin.
Bir başlangıç zamanının yayımlanmasını güvenli kılan da o reddediştir. O olmasaydı madenci,
başlığını bunun yerine ortanca tabana ileri tarihlerdi; genesis öncesinde bu taban
genesis_time'ın kendisidir — dolayısıyla erken bir başlangıç, kimsenin
değerlendiremeyeceği özel bir zincir üretirdi ve zorluk kuralı bildirilen çözüm
sürelerini ölçtüğü için, hedefi gerçek geçen zamanla hiç ilgisi olmayan aralıklara karşı her blokta
sertleşen bir zincir olurdu. Bunun için kimsenin sahtekârlık yapması gerekmiyordu; onu bir gece
boyunca açık bırakmanın eskiden yaptığı şey buydu.
Ödeme adresi kalıcı olmak zorundadır#
Kalıcı (0x02) bir adres olmak zorundadır — zcd wallet address çıktısındaki persistent satırı — ve zycordd uyarmak yerine başka hiçbir şeyi kabul etmez. Bu, uzlaşının değil düğümün kuralıdır: zincir bir one-shot adrese de öder; bunun neden kötü bir fikir olduğunu aşağıdaki kutu açıklıyor. Düğüm, ödeme adresini denetleyen anahtarı hiç görmez ve istese de ödülü harcayamaz.
One-shot (0x01) bir ödeme adresi, siz ondan bir kez harcama yapana kadar doğru
çalışır. O borçlandırma adresi sonsuza dek harcanmış olarak işaretler ve fold, aynı bloktan
itibaren ona yönlendirilmiş olgunlaşan her ödülü yakar — olgunlaşma halkası bloğun
sertifikaları yerleştikten sonra döndüğü için, harcamayı taşıyan blok zaten para kaybettiren ilk
bloktur ve son coinbase_maturity bloğunuzdan halkada duran her ne varsa onunla
birlikte gider.
Hiçbir hata verilmez. Tek iz, o düğümün kendi blok satırındadır:
matured=0, ki bunu sıradan bir boş halka yuvası da yazdırır, ve
olağan olarak bildirdiği taban ile atlama ücretlerinin yanında bütün üretici payını sessizce
soğurmuş bir burned=. İki alan da "coinbase" demez. Kalıcı bir adres harcanmış
kaydına hiç giremez, dolayısıyla başarısızlık daraltılmaz, ortadan kaldırılır — bkz.
cüzdan kuralı 3.
Coinbase olgunlaşması#
Ödüller coinbase_maturity blok sonra olgunlaşır — mainnet'te 240 (yaklaşık iki saat), açık testnet'te 100. O zamana kadar durumda görünürler ama harcanamazlar; premine olmayan bir zincirde ilk teminatları fonlayan da budur: mainnet'in kabaca ilk iki saati boyunca yalnızca madenciler işlem yapabildi.
Ödülün kendisi küçük başlar. İlk 30 gün boyunca (86.400 yüksekliğine kadar) blok sübvansiyonu sıfıra yakın bir düzeyden tam çizelgeye düz bir çizgide tırmanır ve her sübvansiyonun %94'ü madenciye, %3'ü üç yıl boyunca kurucuya ve %3'ü hazineye gider. Ücretler hiçbir zaman bölüşülmez: taban ücretler yakılır, uygulanan sertifikaların öncelik ücretleri ise madenciye gider. Rampadan sonraki çizelge İhraç başlığı altındadır; zcd emission --height N herhangi bir yükseklikteki sübvansiyonu ve bölüşümünü yazdırır.
Mainnet'te musluk yoktur ve olmayacaktır, dolayısıyla mainnet'te o rampa dağıtımın tamamıdır: oynamak için kazacaksınız. Açık testnet'te ise, üzerindeki her şey gibi madencilikle fonlanan bir musluk vardır; çünkü paraları hiçbir değer taşımayan bir ağ, birinin bir madenciyi prova etmeden önce bir cüzdanı prova etmesine izin vermekle hiçbir şey kaybetmez.
Çalıştırmanın maliyeti#
İş işlevi bir ayar değil, bir uzlaşı parametresidir. zcd
params onu yazdırır:
proof of work randomx-v2 (re-keyed every 2048 blocks, 64-block lag)
Bellek#
Doğrulama, tutulan anahtar epoch'u başına yaklaşık 256 MiB ister ve tablo iki tane tutar; böylece bir anahtar sınırını aşan bir yeniden düzenleme blok başına bir tane yeniden kurmaz. O tablodan fazlasını bütçeleyin, çünkü sınırı belirleyen tablo değildir. Bir önbellek, ayrıldığı andan itibaren bellekte durur ve onu pahalı kılan Argon2 doldurması sonra gelir — dolayısıyla kurulurken iki tanesi daha canlıdır — ve bir şey hâlâ kullanırken tahliye edilen bir girdi, o kullanıcı bırakana kadar elindeki her şeyi tutar; bir madencinin veri kümesi doldurması boyunca yaptığı da budur.
| Rol | Bütçe | Neden |
|---|---|---|
| Doğrulayan düğüm | Motor için ~1 GiB | İki girdili tabloya karşı en yüksek önbellek, iki etki aynı anda geçerliyken 1280 MiB ölçüldü — tablonun düşündürdüğü 512 MiB değil. |
| Madencilik yapan düğüm | ~3,3 GiB | Ek olarak ~2 GiB'lik veri kümesini ayırır ve doldurma boyunca bir ödünç alanı sabitleyen durumdur. |
Rahatça doğrulayabilen bir makine, ille de madencilik yapabilecek demek değildir.
İş parçacıkları#
--mine-threads varsayılan olarak çekirdek başına bir tanedir. Geçerlilikle ilgili
hiçbir şeyi değiştirmez; bu düğümün bir çözümü ne kadar hızlı aradığını belirler.
Bir anahtar değişiminde ne olur#
İş işlevi her randomx_key_interval blokta bir yeniden anahtarlanır. Madencilik
yapan bir düğüm o sırada ~2 GiB'lik veri kümesini yeniden kurar ve bunu yaparken
madenciliği durdurur — makineye bağlı olarak on saniye mertebesinde; kendinizinkini
günlükteki ilk sınırdan ölçün.
Bu süre boyunca doğrulamayı sürdürür ve bir yeniden kurulum onu
tıkayamaz: kazılmakta olandan başka herhangi bir anahtar epoch'undan gelen bir başlık, o epoch'un
kendi 256 MiB'lik önbelleğinde doğrulanır ve veri kümesi ona dokunmaz. İkisi aynı özetleri
hesaplar, dolayısıyla bir yeniden kurulumun doğrulamada yarattığı tek fark hızdır. Bir sonraki
epoch'un önbelleği, epoch'un son randomx_key_lag bloğu boyunca ısıtılır.
| Ağ | randomx_key_interval | Madencilik duraklaması, kabaca |
|---|---|---|
| mainnet | 2048 blok | ~17 saatte bir |
| açık testnet | 512 blok | ~4 saatte bir |
Testnet'in daha kısa aralığı bilinçlidir: o sınırı daha sık prova etmek, ağın ölçmek için var olduğu şeyin bir parçasıdır. Bir sonraki epoch'un veri kümesini önceden kurmak mümkündür — anahtar yükseklikten geldiği için sınırdan çok önce bilinir — ve bilerek yapılmaz: bir madenciye günde birkaç saniyeye mal olan bir duraklamadan kurtulmak için iki tanesini, yani 4 GiB'yi tutmak demektir.
Madencilik yapan bir düğümü durdurma#
SIGTERM (ya da Ctrl-C) onu durdurur ve gecikmeden durdurur: tek
bir sinyal, kanalda beklemekte olan hangisiyse ona değil, her döngüye ulaşır.
Bir anahtar değişimi sırasında gelen bir durdurma, veri kümesi doldurmasının bitmesini
bekler — motor, karma çağrıları hâlâ okurken ~2 GiB'lik bir arabelleği bırakmaz;
bu, C'de hiçbir Go aracının bildirmeyeceği bir serbest-bırakma-sonrası-kullanım olurdu. Bu, sabit
bir olayla yarışan değil, onu bekleyen bir durdurmadır: on koşu boyunca ölçüldüğünde, sinyal ne
kadar erken gelirse gelsin çıkış anı kımıldamadı, bekleme ise 4,5 sn'den 0,7 sn'ye indi ve hiçbir
SIGSEGV görülmedi.
Bu yüzden bir durdurma zaman aşımını makinenizin doldurma süresinin üzerinde bütçeleyin.
İkinci bir SIGTERM beklemez — ilki sinyali işletim sistemine
geri devreder, dolayısıyla o duraklama sırasında Ctrl-C'ye yeniden basmak süreci anında
öldürür.
Havuzlar ve neden hiç olmadığı#
Proje hiçbirini işletmez ve hiçbirini onaylamaz. Düğüm kutudan çıktığı gibi tek başına madencilik yapar ve --stratum-listen ile standart XMRig'in konuştuğu Stratum lehçesini sunar; böylece harici madencilik yazılımı kendi düğümünüze karşı çalışabilir. Bu soket kimlik doğrulamasızdır — ona erişebilen herkes, düğümünüz üzerinden kendi ödeme adresine kazı yapabilir — bu yüzden onu loopback'e ya da güvendiğiniz bir ağa bağlayın. Havuzlar ortaya çıkarsa üçüncü taraflardır; her yerde göstereceğiniz kuşkuculuğu burada da gösterin.
Botnet'ler, yadsınmak yerine adıyla anılıyor#
CPU madenciliği onları davet eder. CPU ile kazılabilen her para birimi onlarla mücadele etti ve bu proje istisna olmayı beklemiyor. Ödünleşim gözü açık kabul ediliyor: botnet'lerle çarpıtılmış bir dağıtım, bir satışta belirlenen dağıtımdan yine de daha geniştir ve hâlihazırda sahip olduğunuz dizüstü bilgisayarı rekabetçi tutmak, RandomX'in var oluş nedeninin tamamıdır.
Çalışırken izlemek#
Testnet gezgini her bloğu ve her sertifikayı gösterir;
başka hiçbir zincirin gezgininin gösteremeyeceği sayfa da dahil: her sertifikanın uygulanıp
uygulanmadığı ya da atlanıp faturalandırıldığı ve hangi bildirilen okumanın artık geçerli olmadığı.
Kendi düğümünüz de aynı soruları /status, /head ve /metrics
üzerinden yanıtlar — bkz. salt okunur
yüzey.