getblocktemplate es un método JSON-RPC para obtener datos de construcción de un bloque candidato o evaluar una propuesta. Esta descripción sigue Bitcoin Core 29; el comportamiento de una implementación no se aplica automáticamente a todos los servidores del protocolo.
El mode predeterminado es template. La respuesta proporciona datos al software de minería, no un proof of work encontrado. Esta solicitud no recibe una dirección de pago como parámetro; construir la coinbase y buscar una solución son pasos posteriores. [Bitcoin Core 29 — getblocktemplate RPC]
Bitcoin Core v29.0 exige segwit en las rules solicitadas, y signet en la red signet. Escribir una cadena no sustituye implementar las reglas correspondientes. capabilities describe funciones de la interfaz y no reemplaza las rules obligatorias. [Bitcoin Core v29.0 — Mining RPC implementation]
BIP 145 distingue txid sin witness de hash con witness. La Merkle root principal usa txid, no el hash witness. data contiene la transacción serializada en hexadecimal; su identificador solo no contiene todos sus bytes. [BIP 145 — SegWit template fields]
El cliente devuelve el longpollid recibido en la siguiente solicitud de espera. BIP 22 indica que no se suponga un significado concreto, por lo que un cliente portable no debe analizarlo como un formato propio. Long polling requiere un timeout largo y pausas tras fallos repetidos, no un bucle de reintentos inmediato. [BIP 22 — Long polling]
Bitcoin Core v29.0 guarda la plantilla en caché: la cambia al cambiar el predecesor, o si cambia el mempool después de más de cinco segundos desde su creación. El tiempo de cabecera se actualiza aparte. Cada llamada no tiene por qué incluir la transacción más reciente ni crear trabajo de minería independiente. [Bitcoin Core v29.0 — Mining RPC implementation]
En modo proposal, data contiene el bloque candidato completo en hexadecimal. Core comprueba la Merkle root pero no exige proof of work válido. inconclusive-not-best-prevblk indica que el predecesor difiere de la punta actual; no es una evaluación completa de la validez de la propuesta. [Bitcoin Core v29.0 — Mining RPC implementation]
submitblock recibe el bloque completo como hexdata, no solo un hash. Bitcoin Core 29 devuelve null si lo acepta; en otro caso puede devolver una cadena de resultado. Ignora el dummy opcional. La aceptación del nodo no garantiza confirmación permanente en la cadena activa. [Bitcoin Core 29 — submitblock RPC]
En mainnet, Bitcoin Core v29.0 no proporciona plantillas sin peers conectados o durante initial block download. Esto describe la preparación del nodo, no la invalidez de un bloque concreto. Hay que distinguir estos errores de los motivos de rechazo de validación y de un long polling que espera normalmente. [Bitcoin Core v29.0 — Mining RPC implementation]
Para obtener la imagen más completa, lee esta entrada junto con Block Template, Minería, Stratum V2, Extranonce. También enlazan con esta entrada Solo Mining, Job Negotiation.