Cómo rastrear las transacciones en blockchain privado de ethereum

Estoy un poco confundido por el valor de "raíz" que obtengo en el recibo de la transacción

según tengo entendido, la raíz es el valor que apunta al bloque anterior en el bloque chian,

pero cuando trato de rastrear ese bloque por el valor de la raíz, muestra nulo o no encontrado, he intentado seguir dos formas

debug.traceBlockByHash("hash(valor de raíz)")

Y

eth.getTransactionReceipt("hash(valor de raíz)")

pero no puedo rastrear el bloque raíz

Para referencia:- mi recibo de transacción

{
  blockHash: "0x38745b73aaca70ae40dd4f89e039dd4afb90cf606308701548200d8a757e69be",
  blockNumber: 10897,
  contractAddress: null,
  cumulativeGasUsed: 73966,
  from: "0xf0606aab9ed3f89a4167b43ce4eed4ff8f4cc195",
  gasUsed: 32855,
  logs: [],
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000",
  root: "0x25eba79d41fbe9d11c8a82a2b1629784e80e7c5322832f5386d13b5bd211c8e2",
  to: "0x742c8105ba6cfd99ff20ffc19332a9782caecb8a",
  transactionHash: "0xb3645970eecb8b2b1e00d2b2f4bff5bab90bbdcb36300ad44348a0e954073f22",
  transactionIndex: 1
}

los siguientes son los resultados que recibí

> debug.traceBlockByHash("0x25eba79d41fbe9d11c8a82a2b1629784e80e7c5322832f5386d13b5bd211c8e2")
{
  error: "block #25eba79d41fbe9d11c8a82a2b1629784e80e7c5322832f5386d13b5bd211c8e2 not found",
  structLogs: null,
  validated: false
}

Y

> eth.getTransactionReceipt("0x25eba79d41fbe9d11c8a82a2b1629784e80e7c5322832f5386d13b5bd211c8e2")
null

una cosa más confusa es que el número de bloque que veo en el recibo de la transacción no es consecutivo para transacciones consecutivas, es decir. Si mi primer recibo de transacción tiene

Número de bloque: 10849

entonces el

el siguiente es 10853

el siguiente es 10865

¿Cómo se genera este número de bloque?

Respuestas (1)

Un bloque se identifica con blockHash, que es el hash del bloque, o con blockNumber, que es la posición del bloque en la cadena. Los bloques pueden contener múltiples transacciones y se generan incluso si no hay transacciones en ellos, por lo que no debe esperarse que aumenten en serie con sus transacciones. blockNumberse refiere a veces como "altura". Mire la consola o registre la salida de un nodo si desea ver cómo se generan los bloques.

Puede obtener información de bloque con eth.getBlock(). Pásale un hash de bloque o un número de bloque.

Puede obtener información de transacciones con eth.getTransaction(). Pásele el hash de la transacción que le interesa.

eth.getTransactionReceipt()también espera un hash de transacción.

No lo necesita rootpara ninguno de los propósitos que menciona, pero si tiene curiosidad sobre qué es, consulte: ¿ Cuál es la 'raíz' de un recibo de transacción?

"se generan aunque no haya transacciones en ellos" ¿Por qué sucede esto? Me refiero a cuál es la razón detrás de la creación de bloques vacíos y si hay algún uso de ellos.
Probablemente se deba principalmente a que estos sistemas se transfieren desde cadenas de bloques públicas. En una cadena de bloques pública, los bloques vacíos ayudan a ampliar el número de confirmaciones de transacciones en bloques anteriores, lo que hace que sea menos probable que se reviertan. Y casi siempre hay transacciones en cualquier caso, e incluso si no las hubiera, el minero aún querría su recompensa en bloque. Podría decirse que en las cadenas de bloques privadas son menos útiles. Conozco una implementación, Hydrachain, que solo genera bloques si hay transacciones.