Estoy tratando de entender cómo fluye todo el proceso. Así es como entiendo actualmente que funciona.
Cliente de minería -> Servidor de grupo -> Bitcoind
getwork
:
- El cliente de minería llama
getwork
desde el servidor Pool y, a su vez, llamagetwork
(¿o algo más?) Desde Bitcoind.
stratum
:
- El cliente de minería ingresa al servidor Pool usando el protocolo stratum, y el servidor Pool llama
getwork
(¿o algo más?) desde Bitcoind.
getblocktemplate
:
- Las llamadas de los clientes de minería
getblocktemplate
y las llamadas del servidor Poolgetblocktemplate
desde Bitcoind.
Y entiendo que el servidor del grupo hace más que solo transmitir información, pero quería mantenerlo simple. Solo quiero tener una idea de cómo fluye todo junto y qué llamadas hace.
¡Cualquier ayuda es muy apreciada!
getwork
es para todos los efectos, completamente obsoleto debido a su ineficiencia. En este punto, un solo dispositivo ASIC puede inundar completamente bitcoind
con solicitudes, ya que pueden agotar el nonce de 32 bits en una fracción de segundo. La situación es lo suficientemente grave como para que grupos como BTC Guild cobren tarifas extraordinariamente altas (más del 6%) a los clientes que usan getwork
para que cambien a métodos más eficientes.
Internamente, los grupos como Eloipool se usan getblocktemplate
para generar trabajo para los clientes y luego usan stratum
o getblocktemplate
para comunicarse con los trabajadores según el tipo de solicitud que realicen. getwork
no interviene en ninguna etapa. De hecho, actualmente está fijado para su eliminación completa en algún momento.
xil3
Eloipool
está más o menos transmitiendo la misma plantilla getblock que reciben de bitcoind?Anónimo
jsonrpc_getblocktemplate.py
, diría que sí.xil3