Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12893|Respuesta: 1

El principio del protocolo de estrato para la comunicación entre máquinas mineras y piscinas mineras

[Copiar enlace]
Publicado en 22/1/2018 10:23:14 | | | |
Actualmente, el protocolo de estrato es el protocolo de comunicación TCP más utilizado entre mineros y pools de minería. Vamos a explicar brevemente la arquitectura de red de la minería.


1. Arquitectura de red de minería


Bitcoin es una arquitectura de red descentralizada que reenvía nuevas transacciones y bloques instalando nodos con demonios de Bitcoin. Las máquinas mineras y los pools de minería también forman otra red, que llamamos la red minera.

La red de mineros se divide en varias partes principales, como máquinas de minería, pools de minería, monederos, etc., y a veces el software de pool de minería se instala junto con la cartera, lo que puede denominarse colectivamente pool de minería.

El protocolo de comunicación entre la máquina de minería y el software del pool de minería es de estrato, mientras que la comunicación entre el software del pool de minería y la cartera es la interfaz bitcoinrpc.

El estrato es el formato de datos JSON, y el protocolo específico es el siguiente:



2. Acuerdo de estrato


1. Suscripción a tareas

Cuando la máquina de minería arranca, primero se conecta al pool de minería usando el método mining.subscribe para suscribirse al trabajo.

El pool devuelve el número de suscripción, ExtraNonce1, y ExtraNonce2_size en mining.notify.

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

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

Entre ellos:

AE6812eb4cd7735a302a8a9dd95cf71f es el número de suscripción;

08000002 es ExtraNonce1, que se utiliza para construir transacciones coibase;

ExtraNonce2_size es 4, el número de bytes del contador ExtraNonce2 del minero.

2. Asignación de tareas

Este comando se envía periódicamente al minero por el pool de minería, y cuando la máquina de minería se registra con el método mining.subscribe, el pool de minería debe devolver inmediatamente la tarea como mining.notify.

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

Entre ellos:

Número de tarea: "novio";

HASH del bloque anterior:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Parte I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Parte 2:

"072f736c7573682f00000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac0000000";

Lista de identificadores de transacción:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Número de versión del bloque: "00000002";

nBit:”1c2ac4af”;

Tiempo actual: "504e86b9";

Tareas de limpieza: Si es cierto, el minero abortará todas las tareas y comenzará una nueva inmediatamente. Si es falso, espera a que termine la tarea actual antes de empezar una nueva.

3. Inicio de sesión en la máquina de minería

El minero utiliza el método mining.authorize para iniciar sesión en el pool de minería con una cuenta y contraseña determinadas, la contraseña puede estar vacía y el pool de minería devuelve el inicio de sesión correcto para iniciar sesión correctamente. Este método debe hacerse inmediatamente después de iniciar la conexión, de lo contrario el minero no recibirá la tarea del pool.

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

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

4. Enviar los resultados

Cuando un minero encuentra una participación legítima, envía una tarea al pool usando el método "mining.submit". Si el pool devuelve true, el commit es exitoso, y si falla, hay una razón específica para el error.

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

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

Entre ellos:

Nombre de usuario: "miner1";

Número de tarea: "novio";

ExtraNonce2:"00000001";

Tiempo actual: "504e86ed";

nonce:”b2957c02″;

5. Ajuste de dificultad

El ajuste de dificultad lo emite el pool de minería a la máquina minera para ajustar la dificultad de mining.set_difficulty manera, y el valor de dificultad está en los parámetros.

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

El minero aplicará la nueva dificultad a la siguiente tarea, y a veces el pool emitirá una nueva tarea inmediatamente y configurará la tarea de limpieza en true para que el minero pueda trabajar en la nueva dificultad inmediatamente.



3. Proceso general de comunicación


El proceso general de comunicación entre la máquina minera y la piscina minera es el siguiente:

Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com