Объясните пожалуйста

Запрос:

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}

Ответ:

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. В запросе/ответе что делает id?
  2. Что такое данные в ответе и как они генерируются?
  3. Что такое среднее состояние?
  4. Как работает цель?
  5. В запросе для чего эти X-Mining-Extensions: longpoll midstate rollntime submitoldпараметры?

Ответы (1)

  1. Посмотрите http://www.jsonrpc.org/specification : «Идентификатор, установленный Клиентом, который ДОЛЖЕН содержать значение String, Number или NULL, если он включен. Если он не включен, предполагается, что это уведомление. Значение Обычно НЕ ДОЛЖНО быть нулевым [1], а числа НЕ ДОЛЖНЫ содержать дробные части [2]». Проще говоря, это просто идентификатор сообщения.

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

  3. Проще говоря, среднее состояние — это просто хэширование первой половины. Нам нужно, чтобы хэш выполнялся для всех данных, но поскольку первая часть данных не меняется, мы можем просто вычислить ее, чтобы нам не приходилось каждый раз выполнять полное хеширование.

  4. Цель определяет сложность. Принимается только хеш, который меньше целевого. Другими словами, вы также можете сказать, что цель указывает количество завершающих нулей, необходимых в хэше.

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