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)
Açık testnet'te ve mainnet'te bunlar -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-01T00:00:01Z
(unix 1790812801), and this node's clock reads 2026-09-30T20: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 varsayılan olarak bir tane yazdırır — ve zycordd uyarmak yerine
başka hiçbir şeyi kabul etmez. Düğüm, o adresi 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 — hem mainnet'te hem açık
testnet'te 100. O ana kadar durumda görünür ama harcanamaz durumdadırlar;
premine'i olmayan bir zincirdeki ilk teminatları fonlayan da budur: kabaca ilk yüz blok
boyunca yalnızca madenciler işlem yapabilir.
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-v1 (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ığı#
Açılışta hiçbiri yok ve hiçbiri resmî değil. Düğüm kutudan çıktığı gibi tek başına madencilik yapar ve genesis zorluğunda başlamanın makul yolu budur. 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.