Estaba tratando de ejecutar mi propia red privada de bitcoin, así que descargué la fuente y la compilé, luego comencé dos bitcoind
instancias en dos contenedores acoplables y me aseguré de que no se conectaran a una red externa, usé -connect=0 -dns=0 -dnsseed=0
y luego -addnode
para especificar otros nodos IP y puerto. Cuando intenté ejecutar un minero local, el RPC getblocktemplate
siempre devolvía Bitcoin is downloading blocks...
. Al mirar la fuente, parece que no pasará esta línea:
// in IsInitialBlockDownlaod
if (chainActive.Tip()->nChainWork < nMinimumChainWork) {
return true;
}
la definición se encuentra en chainparams.cpp:
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000f91c579d57cad4bc5278cc");
¿Qué significa esto? nMinimumChainWork
para que sirve Y cuál es el número hexadecimal codificado, al buscar blockchain.info no es un hash de bloque.
Es un número diseñado para proteger a los nuevos clientes de aceptar cadenas de bloques falsas cuando se sincronizan inicialmente, si un atacante logró segregarlas de la red. Como su nombre lo indica, es la cantidad mínima de trabajo total que debe tener una cadena antes de que el cliente la considere válida. Se actualiza a un número más alto en cada versión, según el trabajo total en la cadena de bloques en el momento de esa versión (el formato hexadecimal es más compacto y coherente con otro código que, por ejemplo, un número decimal)
flauta
colisionador de mallas