Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12893|Yanıt: 1

Madencilik makineleri ile madencilik havuzları arasındaki iletişim için stratum protokolünün ilkesi

[Bağlantıyı kopyala]
Yayınlandı 22.01.2018 10:23:14 | | | |
Stratum protokolü şu anda madenciler ile madencilik havuzları arasında en yaygın kullanılan TCP iletişim protokolüdür. Madenciliğin ağ mimarisini kısaca açıklayalım.


1. Madenciliğin ağ mimarisi


Bitcoin, Bitcoin daemonlarıyla düğümler kurarak yeni işlemleri ve blokları ileten merkeziyetsiz bir ağ mimaridir. Madencilik makineleri ve madencilik havuzları ayrıca başka bir ağ oluşturur ve buna madenci ağı diyoruz.

Madenci ağı, madencilik makineleri, madencilik havuzları, cüzdanlar gibi birkaç ana bölüme ayrılmıştır ve bazen madencilik havuzu yazılımı cüzdanla birlikte kurulur ve bu topluca madencilik havuzu olarak adlandırılabilir.

Madencilik makinesi ile madencilik havuzu yazılımı arasındaki iletişim protokolü stratumdur, madencilik havuzu yazılımı ile cüzdan arasındaki iletişim ise bitcoinrpc arayüzüdür.

stratum JSON veri formatıdır ve özel protokol şu şekildedir:



2. Stratum anlaşması


1. Görev aboneliği

Madencilik makinesi başladığında, önce mining.subscribe yöntemiyle madencilik havuzuna bağlanarak çalışmaya abone olur.

Havuz, mining.notify'da abonelik numarası olan ExtraNonce1 ve ExtraNonce2_size'yi geri getirir.

Client:{"id":1,"method":"mining.subscribe","params":[]}

Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}

Bunlar arasında:

ae6812eb4cd7735a302a8a9dd95cf71f abonelik numarasıdır;

08000002, coibase işlemleri oluşturmak için kullanılan ExtraNonce1'dir;

ExtraNonce2_size, madenci ExtraNonce2 sayacının bayt sayısı olan 4'tür.

2. Görev dağılımı

Bu komut, madencilik havuzu tarafından periyodik olarak madenciye gönderilir ve madencilik makinesi mining.subscribe yöntemiyle kayıt olduğunda, madencilik havuzu görevi hemen mining.notify olarak döndürmelidir.

Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"}

Bunlar arasında:

Görev numarası: "bf";

Önceki blok HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Bölüm I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Bölüm 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed98ac00000000";

İşlem Kimliği Listesi:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Blok versiyon numarası: "00000002";

nBit:”1c2ac4af”;

Güncel zaman: "504e86b9";

Temizlik görevleri: Eğer doğruysa, madenci tüm görevleri iptal eder ve hemen yeni bir göreve başlar. Yanlışsa, yeni bir göreve başlamadan önce mevcut görev bitene kadar bekleyin.

3. Madencilik makinesi girişi

Madenci, madencilik havuzuna belirli bir hesap ve şifreyle giriş yapmak için mining.authorize yöntemini kullanır, şifre boş olabilir ve madencilik havuzu başarılı bir şekilde giriş yapmak için doğru döner. Bu yöntem, bağlantı başlatıldıktan hemen sonra yapılmalıdır, aksi takdirde madenci havuz görevini alamaz.

Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}

Server:{"error":null,"id":2,"result":true}

4. Sonuçları gönderin

Bir madenci gerçek bir pay bulduğunda, "mining.submit" yöntemiyle havuza bir görev gönderir. Havuz doğru dönerse, commit başarılı olur ve başarısız olursa hatanın özel bir nedeni vardır.

Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}

Server:{"error":null,"id":4,"result":true}

Bunlar arasında:

Kullanıcı adı: "miner1";

Görev numarası: "bf";

ExtraNonce2:"00000001";

Güncel zaman: "504e86ed";

nonce:”b2957c02″;

5. Zorluk ayarı

Zorluk ayarı, madencilik havuzu tarafından madencilik makinesine zorluğu mining.set_difficulty şekilde ayarlamak için verilir ve zorluk değeri parametrelerde bulunur.

Server:{"id":null,"method":"mining.set_difficulty","params":[2]}

Madenci yeni zorluk seviyesini bir sonraki göreve uygular ve havuz bazen hemen yeni bir görev verir, temizlik görevini true olarak ayarlar, böylece madenci yeni zorluk üzerinde hemen çalışabilir.



3. Genel iletişim süreci


Madencilik makinesi ile madencilik havuzu arasındaki genel iletişim süreci şu şekildedir:

Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com