Por favor explique el trabajo

Solicitud:

POST / HTTP/1.1
Host: de.btcguild.com:8332
Accept: */*
Accept-Encoding: deflate, gzip
Content-type: application/json
X-Mining-Extensions: longpoll midstate rollntime submitold
Content-Length: 44
User-Agent: bfgminer 2.99.1

{"method": "getwork", "params": [], "id":0}

Respuesta:

HTTP/1.1 200 OK
Server: nginx/0.7.65
Date: Sat, 13 Apr 2013 21:55:23 GMT
Content-Type: application/json;charset=ISO-8859-1
Connection: keep-alive
X-Long-Polling: /LP/
X-Blocknum: 105632
Content-Length: 607

{
"error": null,
"id": 0,
"result": {
"data": "00000002df54a70cd769d78b9605c0a6574638db799e86bdd1183cfc000001c2000000009e7ed0ae4ccdb1dbf283f4ab608791f21b1a5f437f405f4f9ba0bb3b693506a95169d43c1a022fbe00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"midstate": "24a747c3d16eadbc1481bd342b5558b2e235301c11353faf4bc25a384102c9c9",
"target": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000"
}
}
  1. En la solicitud/respuesta, ¿qué hace id?
  2. En la respuesta ¿qué son los datos y cómo se generan?
  3. ¿Qué es el estado medio?
  4. ¿Cómo funciona el objetivo?
  5. En la solicitud, ¿ X-Mining-Extensions: longpoll midstate rollntime submitoldpara qué son estos parámetros?

Respuestas (1)

  1. Mire http://www.jsonrpc.org/specification : "Un identificador establecido por el Cliente que DEBE contener un valor de cadena, número o NULL si está incluido. Si no está incluido, se supone que es una notificación. El valor normalmente no DEBERÍA ser nulo [1] y los números NO DEBERÍAN contener partes fraccionarias [2]". En pocas palabras, en realidad es solo un identificador de un mensaje.

  2. https://en.bitcoin.it/wiki/Block_hashing_algorithm

  3. En pocas palabras, midstate es solo el hash realizado en la primera mitad. Necesitamos que se haga el hash en todos los datos, pero dado que la primera parte de los datos no cambia, podemos calcularlo para que no tengamos que realizar un hash completo cada vez.

  4. El objetivo especifica la dificultad. Solo se acepta un hash que sea más pequeño que el objetivo. En otras palabras, también puede decir que el objetivo especifica la cantidad de ceros finales necesarios en el hash.

  5. https://en.bitcoin.it/wiki/Getwork