Last updated
Edit

La estructura del ledger

El XRP Ledger es una blockchain, lo que quiere decir que consiste en un histórico de bloques de datos consecutivos. Un bloque en la blockchain XRP Ledger se denomina una versión del ledger o ledger abreviado.

El protocolo de consenso toma la última versión del ledger como punto de partida, forma un acuerdo entre los validadores sobre un conjunto de transacciones para aplicar a continuación, después confirma que todo el mundo obtuvo los mismos resultados aplicando esas transacciones. Cuando esto ocurre satisfactoriamente, el resultado es una nueva versión de un ledger validado. Desde aquí, el proceso se repite para construir la próxima versión del ledger.

Cada versión del ledger contiene datos de estado, un conjunto de transacciones, y una cabecera que contiene metadatos.

Estado de datos

Los datos de estado representan una fotografía de todas las cuentas, balances, configuraciones, y otra información de esta versión del ledger. Cuando un servidor se conecta a la red, una de las primeras cosas que hace es descargar un conjunto completo de los datos de estado actuales para poder procesar nuevas transacciones y responder consultas sobre el estado actual. Como cada servidor de la red tiene una copia completa de los datos del estado, todos los datos son públicos y cada copia es igualmente válida.

Los datos de estado consisten en objetos individuales llamados entradas de ledger, almacenados en un formato de árbol. Cada entrada del ledger tiene un ID único 256-bit que puedes usar para buscar en el árbol de estado.

Conjunto de transacciones

Cada cambio realizado en el ledger es el resultado de una transacción. Cada versión del ledger contiene un conjunto de transacciones que es un grupo de transacciones que se han aplicado recientemente en un orden específico. Si tomas los datos de estado de la versión anterior del ledger y aplicas este conjunto de transacciones del ledger encima de él, obtienes los datos de estado de este ledger como resultado.

Cada transacción en el conjunto del ledger tiene ambas de la siguientes partes:

  • Instrucciones de la transaccion mostrando lo que el remitente le pidió hacer.
  • Metadatos de la transacción mostrando exáctamente cómo la transacción debe ser procesada y cómo afecta a los datos de estado del ledger.

Cabecera del ledger

La cabecera del ledger es un bloque de datos que resume la versión del ledger. Como la portada de un informe, identifica de forma única la versión del ledger, enumera sus contenidos, y muestra la hora en la que se creó, junto con algunas otras notas. La cabecera del ledger contiene la siguiente información:

  • El ledger index, o índice del ledger identifica la posición del ledger en la cadena. Se construye en el ledger con un índice restando uno, hasta llegar hasta el punto de inicio llamado como el genesis ledger. Esto forma un histórico público con todas las trnasacciones y resultados.
  • El ledger hash, que identifica de manera única los contenidos del ledger. El hash es calculado de manera que si cambia algún detalle, la versión del ledger cambia, el hash es completamente diferente, lo que lo convierte también en un checksum que muestra que ninguno de los datos en el ledger se ha perdido, modificado, o corrompido.
  • El parent ledger hash o el hash del ledger padre. Una versión del ledger es definida en gran parte por la diferencia con el parent ledger que viene antes de el, por lo que la cabecera también contiene el hash único para su ledger padre.
  • El close time u hora de cierre, la timestamp que marca cuando se finalizaron los contenidos del ledger. Este número se redondea por un número de segundos, generalmente 10.
  • Un hash de datos del estado el cual actua de checksum para los datos del estado.
  • Un hash del conjunto de transacciones el cual actua como checksum de los datos del conjuntos de transacciones.
  • Algunas otras notas como la cantidad total de XRP en existencia y la cantidad que se redondeó la hora de cierre.

Un conjunto de transacciones y los datos de estado son ilimitados en espacio, pero la cabecera del ledger siempre es de un tamaño fijo. Para los datos exactos y el formato binario de una cabecera del ledger, ver Cabecera del leder.

Estado de validación

Cuando un consenso de la Lista de Nodos Únicos de un servidor está de acuerdo en los contenidos de una versión del ledger, esa versión del ledger es marcada como validada e inmutable. Los contenidos del ledger solo pueden cambiar mediante transacciones posteriores que creen una nueva versión del ledger, continuando la cadena.

Cuando una versión del ledger es creada por primera vez, no está todavía validada. Debido a las diferencias en cuanto llegan las transacciones a diferentes servidores, la red puede construir y proponer múltiples versiones diferentes del ledger para ser el siguiente en la cadena. El protocolo de consenso decide cual de ellas se valida. (Las transacciones candidatas que no estén en la versión del ledger validado pueden generalmente incluirse en el conjunto de transacciones la siguiente versión del ledger en su lugar.)

¿Índice del ledger o Hash del ledger?

Hay dos formas diferentes de identificar la versión del ledger: Su ledger index o índice del ledger y su ledger hash o hash del ledger. Estos dos campos identifican un ledger, pero tienen propósitos distintos. El índice del ledger te informa de la posición del ledger en la cadena, y el hash del ledger refleja los contenidos del ledger.

Ledgers de diferentes cadenas pueden tener el mismo índice ledger pero distintos hashes. Además, al tratar con versiones del ledger no validadas, puede haber múltiples ledgers candidatos con el mismo índice pero contenidos diferentes y, por lo tanto, hashes diferentes.

Dos ledgers con el mismo hash ledger son siempre completamente idénticos.