Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 12893|Jawab: 1

Prinsip protokol stratum untuk komunikasi antara mesin penambangan dan kolam penambangan

[Salin tautan]
Diposting pada 22/01/2018 10.23.14 | | | |
Protokol stratum saat ini merupakan protokol komunikasi TCP yang paling umum digunakan antara penambang dan kolam penambangan. Mari kita jelaskan secara singkat arsitektur jaringan penambangan.


1. Arsitektur jaringan penambangan


Bitcoin adalah arsitektur jaringan terdesentralisasi yang meneruskan transaksi dan blok baru dengan memasang node dengan daemon Bitcoin. Mesin penambangan dan kolam penambangan juga membentuk jaringan lain, yang kami sebut jaringan penambang.

Jaringan penambang dibagi menjadi beberapa bagian utama, seperti mesin penambangan, kolam penambangan, dompet, dll., Dan terkadang perangkat lunak kolam penambangan diinstal bersama dengan dompet, yang secara kolektif dapat disebut kolam penambangan.

Protokol komunikasi antara mesin penambangan dan perangkat lunak kolam penambangan adalah stratum, sedangkan komunikasi antara perangkat lunak kolam penambangan dan dompet adalah antarmuka bitcoinrpc.

stratum adalah format data JSON, dan protokol spesifiknya adalah sebagai berikut:



2. Kesepakatan stratum


1. Berlangganan tugas

Saat mesin penambangan dimulai, mesin penambangan pertama-tama terhubung ke kolam penambangan menggunakan metode mining.subscribe untuk berlangganan pekerjaan.

Kumpulan mengembalikan nomor langganan, ExtraNonce1, dan ExtraNonce2_size di mining.notify.

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

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

Diantaranya:

ae6812eb4cd7735a302a8a9dd95cf71f adalah nomor langganan;

08000002 adalah ExtraNonce1, yang digunakan untuk membangun transaksi coibase;

ExtraNonce2_size adalah 4, jumlah byte penghitung penambang ExtraNonce2.

2. Alokasi tugas

Perintah ini secara berkala dikirim ke penambang oleh kumpulan penambangan, dan ketika mesin penambangan mendaftar dengan metode mining.subscribe, kumpulan penambangan harus segera mengembalikan tugas sebagai mining.notify.

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

Diantaranya:

Nomor tugas: "bf";

Blok sebelumnya HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Bagian I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Bagian 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000";

Daftar ID Transaksi:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Blokir nomor versi: "00000002";

nBit:”1c2ac4af”;

Waktu saat ini: "504e86b9";

Tugas pembersihan: Jika benar, penambang akan membatalkan semua tugas dan segera memulai tugas baru. Jika salah, tunggu hingga tugas saat ini berakhir sebelum memulai tugas baru.

3. Login mesin penambangan

Penambang menggunakan metode mining.authorize untuk masuk ke kolam penambangan dengan akun dan kata sandi tertentu, kata sandi dapat kosong, dan kolam penambangan mengembalikan true untuk berhasil masuk. Metode ini harus dilakukan segera setelah menginisialisasi koneksi, jika tidak, penambang tidak akan mendapatkan tugas pool.

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

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

4. Kirimkan hasilnya

Ketika penambang menemukan bagian yang sah, ia mengirimkan tugas ke kumpulan menggunakan metode "mining.submit". Jika kumpulan mengembalikan true, penerapan berhasil, dan jika gagal, ada alasan khusus untuk kesalahan.

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

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

Diantaranya:

Nama pengguna: "miner1";

Nomor tugas: "bf";

ExtraNonce2: "00000001";

Waktu saat ini: "504e86ed";

nonce:”b2957c02″;

5. Penyesuaian kesulitan

Penyesuaian kesulitan dikeluarkan oleh kolam penambangan ke mesin penambangan untuk menyesuaikan kesulitan dengan cara mining.set_difficulty, dan nilai kesulitan ada di param.

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

Penambang akan menerapkan kesulitan baru ke tugas berikutnya, dan pool terkadang akan segera mengeluarkan tugas baru dan mengatur tugas pembersihan ke true sehingga penambang dapat segera mengerjakan kesulitan baru.



3. Proses komunikasi umum


Proses komunikasi umum antara mesin penambangan dan kolam penambangan adalah sebagai berikut:

Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com