Track 1 / 5
RPC y -netinfo: dónde cree el nodo que está Bitcoin, con quién habla, qué hay en su mempool y si ve una sola cadena.
Un RPC es una foto: le preguntamos al nodo cómo está en este momento.
Probá
alice getblockchaininfo | jq '{chain, blocks, headers, initialblockdownload}'Mirá
chain: "regtest": la red de prueba local.blocks: 101: la altura de la cadena que el nodo ya validó.headers: cuántos encabezados de bloque conoce. Si es mayor que blocks, sabe de bloques que todavía no validó.initialblockdownload: false: el nodo cree que está al día. Antes de lab_setup, con solo el bloque génesis (de 2011), daba true: el nodo creía que le faltaba sincronizar.Por qué
Es lo que el nodo cree, no una verdad universal. Cada nodo tiene su propia opinión sobre cuál es la cadena actual.
Probá
alice -netinfo 4
bob getpeerinfo | jq '.[] | {addr, connection_type, network, transport_protocol_type}'Mirá
-netinfo es una tabla para humanos: por dentro usa getpeerinfo y getnetworkinfo.connection_type: bob ve a carol como manual (la agregamos con -addnode) y a alice como inbound, porque fue alice la que se conectó.network: not_publicly_routable (npr en -netinfo), porque las IPs de Docker son privadas.transport_protocol_type: v2, el transporte cifrado de BIP324, activado por defecto desde Bitcoin Core 27.Por qué
En mainnet verías otra variedad: 8 conexiones salientes outbound-full-relay, 2 block-relay-only, peers en ipv4, ipv6, onion o i2p, y hasta 125 conexiones en total. Tu nodo no está "conectado a Bitcoin": está conectado a un puñado de nodos que forman su vista local de la red.
BIP324 es cifrado oportunista y no autenticado. Un observador pasivo no puede leer los mensajes, pero no protege contra un man-in-the-middle activo.
Probá
TX=$(alice sendtoaddress "$(carol getnewaddress)" 1)
lab_wait_tx carol "$TX"
carol getmempoolinfo | jq '{size, bytes, mempoolminfee}'Mirá
size: 1: la tx espera en el mempool de carol.Probá
alice -generate 1
lab_wait_sync
carol getmempoolinfo | jq .sizePor qué
Al minar el bloque, la tx sale del mempool (size: 0). En mainnet cada nodo tiene su mempool: no existe "el" mempool.
Probá
alice getchaintipsMirá
Una sola punta con status: "active". Los otros estados posibles son valid-fork, valid-headers, headers-only e invalid. En el track 4 vamos a fabricar un valid-fork.