Una "Cuenta" en el libro mayor de XRP representa un titular de XRP y un remitente de transacciones. Los elementos centrales de una cuenta son:
• Una dirección de identificación, como rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn. (Esta es una "dirección clásica", a diferencia del formato X-Address).
• Un saldo de XRP. Parte de este XRP se reserva para la Reserva.
• Un número de secuencia, que ayuda a garantizar que las transacciones que envíe esta cuenta se apliquen en el orden correcto y solo una vez cada una. Para ejecutar una transacción, el número de secuencia de la transacción y el número de secuencia de su remitente deben coincidir. Luego, como parte de la aplicación de la transacción, el número de secuencia de la cuenta aumenta en 1.
• Un historial de transacciones que afectaron esta cuenta y sus saldos.
• Una o más formas de autorizar transacciones, que posiblemente incluyan:
o Un par de claves maestras intrínseco a la cuenta. (Esto puede desactivarse pero no cambiarse).
o Un par de claves "normal" que se puede rotar.
o Una lista de firmantes para múltiples firmas. (Almacenado por separado de los datos centrales de la cuenta).
En el árbol de datos del libro mayor, los datos principales de una cuenta se almacenan en el tipo de objeto del libro mayor AccountRoot. Una cuenta también puede ser propietaria (o propietaria parcial) de varios otros tipos de datos.
Sugerencia: Una "Cuenta" en el libro mayor de XRP se encuentra en algún lugar entre el uso financiero (como "cuenta bancaria") y el uso informático (como "cuenta UNIX"). Las monedas y los activos que no son de XRP no se almacenan en una cuenta de libro mayor de XRP; cada uno de estos activos se almacena en una relación contable denominada "Línea de confianza" que conecta a dos partes.
Crear cuentas
No hay una transacción dedicada para "crear cuenta". La transacción de pago crea automáticamente una nueva cuenta si el pago envía un XRP igual o mayor que la reserva de la cuenta a una dirección matemáticamente válida que aún no tiene una cuenta. Esto se denomina financiar una cuenta y crea un objeto AccountRoot en el libro mayor. Ninguna otra transacción puede crear una cuenta.
Precaución: Financiar una cuenta no le otorga ningún privilegio especial sobre esa cuenta. Quien tenga la clave secreta correspondiente a la dirección de la cuenta tiene control total sobre la cuenta y todo el XRP que contiene. Para algunas direcciones, es posible que nadie tenga la clave secreta, en cuyo caso la cuenta es un agujero negro y el XRP se pierde para siempre.
La forma típica de obtener una cuenta en el libro mayor de XRP es la siguiente:
1. Genere un par de claves a partir de una fuerte fuente de aleatoriedad y calcule la dirección de ese par de claves. (Por ejemplo, puede usar el método de billetera).
2. Haga que alguien que ya tenga una cuenta en el libro mayor de XRP envíe XRP a la dirección que generó.
o Por ejemplo, puede comprar XRP en un intercambio privado y luego retirar XRP del intercambio a la dirección que especificó.
Precaución: la primera vez que recibe XRP en su propia dirección de XRP Ledger, debe pagar la reserva de la cuenta (actualmente 20 XRP), que bloquea esa cantidad de XRP de forma indefinida. Por el contrario, los intercambios privados generalmente mantienen todos los XRP de sus clientes en algunas cuentas XRP Ledger compartidas, por lo que los clientes no tienen que pagar la reserva de cuentas individuales en el intercambio. Antes de retirarse, considere si vale la pena el precio por tener su propia cuenta directamente en el libro mayor de XRP.
Direcciones
Las cuentas en el libro mayor de XRP se identifican mediante una dirección en el formato base58 del libro mayor de XRP. La dirección se deriva de la clave pública maestra de la cuenta, que a su vez se deriva de una clave secreta. Una dirección se representa como una cadena en JSON y tiene las siguientes características:
• Entre 25 y 35 caracteres de longitud
• Comienza con el carácter r
• Utiliza caracteres alfanuméricos, excepto el número "0", la letra mayúscula "O", la letra mayúscula "I" y la letra minúscula "l"
• Distingue mayúsculas y minúsculas
• Incluye una suma de comprobación de 4 bytes para que la probabilidad de generar una dirección válida a partir de caracteres aleatorios sea de aproximadamente 1 en 2 ^ 32
Nota: La comunidad XRP ha propuesto un formato de dirección X que "empaqueta" una etiqueta de destino en la dirección. Estas direcciones comienzan con una X (para la red principal) o una T (para la red de prueba). Los intercambios y las billeteras pueden usar direcciones X para representar todos los datos que un cliente necesita saber en un solo valor. Para obtener más información, consulte el sitio y el códec del formato de dirección X.
El protocolo XRP Ledger solo admite direcciones "clásicas" de forma nativa, pero ripple-lib, xrpl-py y muchas otras herramientas también admiten direcciones X.
Cualquier dirección válida puede convertirse en una cuenta en el libro mayor de XRP al recibir fondos. También puede utilizar una dirección que no haya sido financiada para representar una clave regular o un miembro de una lista de firmantes. Solo una cuenta con fondos puede ser el remitente de una transacción.
Crear una dirección válida es una tarea estrictamente matemática que comienza con un par de claves. Puede generar un par de claves y calcular su dirección completamente fuera de línea sin comunicarse con el XRP Ledger o cualquier otra parte. La conversión de una clave pública a una dirección implica una función hash unidireccional, por lo que es posible confirmar que una clave pública coincide con una dirección, pero es imposible derivar la clave pública solo de la dirección. (Esta es parte de la razón por la que las transacciones firmadas incluyen la clave pública y la dirección del remitente).
Para obtener más detalles técnicos sobre cómo calcular una dirección de libro mayor XRP, consulte Codificación de direcciones.
Direcciones especiales
Algunas direcciones tienen un significado especial, o usos históricos, en el libro mayor de XRP. En muchos casos, se trata de direcciones de "agujero negro", lo que significa que la dirección no se deriva de una clave secreta conocida. Dado que es efectivamente imposible adivinar una clave secreta solo a partir de una dirección, cualquier XRP poseído por direcciones de agujero negro se pierde para siempre.
Dirección Nombre Significado ¿Agujero negro?
rrrrrrrrrrrrrrrrrrrrhoLvTp ACCOUNT_ZERO Una dirección que es la codificación base58 del XRP Ledger del valor 0. En las comunicaciones peer-to-peer, rippled usa esta dirección como emisor de XRP. sí
rrrrrrrrrrrrrrrrrrrBZbvji ACCOUNT_ONE Una dirección que es la codificación base58 del valor 1. En el libro mayor, las entradas de RippleState utilizan esta dirección como marcador de posición para el emisor de un saldo de línea fiduciaria. sí
rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh La cuenta de génesis Cuando rippled inicia un nuevo libro mayor de génesis desde cero (por ejemplo, en modo independiente), esta cuenta contiene todo el XRP. Esta dirección se genera a partir de la frase de contraseña maestra del valor inicial que está codificada.
No
rrrrrrrrrrrrrrrrNAMEtxvNvQ Agujero negro de reserva de nombre de Ripple En el pasado, Ripple pidió a los usuarios que enviaran XRP a esta cuenta para reservar Nombres de Ripple. sí
rrrrrrrrrrrrrrrrrrn5RM1rHd Dirección NaN Las versiones anteriores de ripple-lib generaban esta dirección al codificar el valor NaN utilizando el formato de codificación de cadena base58 del Libro mayor de XRP. sí
Eliminación de cuentas
La enmienda DeletableAccounts (habilitada 2020-05-08) hizo posible eliminar cuentas.
Para ser eliminada, una cuenta debe cumplir con los siguientes requisitos:
• El número de secuencia de la cuenta más 256 debe ser menor que el índice de libro mayor actual.
• La cuenta no debe estar vinculada a ninguno de los siguientes tipos de objetos del libro mayor (como remitente o receptor):
o Fideicomiso
o PayChannel
o RippleState
o comprobar
• La cuenta debe tener menos de 1000 objetos en el libro mayor.
• La transacción AccountDelete debe pagar un costo de transacción especial equivalente al menos a la reserva del propietario para un artículo (actualmente 5 XRP).
Una vez que se ha eliminado una cuenta, se puede volver a crear en el libro mayor mediante el método normal de creación de cuentas. Una cuenta que se ha eliminado y vuelto a crear no es diferente de una cuenta que se ha creado por primera vez.
Advertencia: El costo de transacción de la transacción AccountDelete siempre se aplica cuando la transacción se incluye en un libro mayor validado, incluso si la transacción falló porque la cuenta no cumple con los requisitos para ser eliminada. Para reducir en gran medida las posibilidades de pagar el alto costo de la transacción si la cuenta no se puede eliminar, envíe la transacción con fail_hard habilitado.
A diferencia de Bitcoin y muchas otras criptomonedas, cada nueva versión de la cadena del libro mayor público de XRP Ledger contiene el estado completo del libro mayor, que aumenta de tamaño con cada nueva cuenta. Por esa razón, no debe crear nuevas cuentas XRP Ledger a menos que sea necesario. Puede recuperar parte de la reserva de 20 XRP de una cuenta eliminando la cuenta, pero aún debe destruir al menos 5 XRP para hacerlo.
Las instituciones que envían y reciben valor en nombre de muchos usuarios pueden usar etiquetas de origen y etiquetas de destino para distinguir los pagos de y hacia sus clientes mientras solo usan una (o un puñado) de cuentas en el libro mayor de XRP.
Historial de transacciones
En el libro mayor de XRP, el historial de transacciones se rastrea mediante un "hilo" de transacciones vinculadas por el hash de identificación de una transacción y el índice del libro mayor. El objeto del libro mayor AccountRoot tiene el hash de identificación y el libro mayor de la transacción que lo modificó más recientemente; los metadatos de esa transacción incluyen el estado anterior del nodo AccountRoot, por lo que es posible iterar a través del historial de una sola cuenta de esta manera. Este historial de transacciones incluye cualquier transacción que modifique el nodo AccountRoot directamente, incluyendo:
• Transacciones enviadas por la cuenta, porque modifican el número de secuencia de la cuenta. Estas transacciones también modifican el saldo XRP de la cuenta debido al costo de la transacción.
• Transacciones que modificaron el saldo XRP de la cuenta, incluidas las transacciones de pago entrantes y otros tipos de transacciones como PaymentChannelClaim y EscrowFinish.
El historial de transacciones conceptual de una cuenta también incluye transacciones que modificaron los objetos de propiedad de la cuenta y los saldos que no son de XRP. Estos objetos son objetos contables separados, cada uno con su propio hilo de transacciones que los afectó. Si tiene el historial de contabilidad completo de una cuenta, puede seguirlo para encontrar los objetos de contabilidad creados o modificados por ella. Un historial de transacciones "completo" incluye el historial de los objetos que pertenecen a una transacción, como:
• Objetos RippleState (Trust Lines) conectados a la cuenta.
• Objetos DirectoryNode, especialmente el directorio propietario que rastrea los objetos que posee la cuenta.
• Objetos de oferta, que representan las órdenes de cambio de divisas pendientes de la cuenta en el cambio descentralizado.
• Objetos PayChannel, que representan canales de pago asincrónicos desde y hacia la cuenta.
• Objetos de depósito en garantía, que representan pagos retenidos hacia o desde la cuenta que están bloqueados por tiempo o una condición de cifrado.
• Objetos SignerList, que representan listas de direcciones que pueden autorizar transacciones para la cuenta mediante firma múltiple.
Codificación de direcciones
Consejo: ¡Estos detalles técnicos solo son relevantes para las personas que crean software de biblioteca de bajo nivel para la compatibilidad con XRP Ledger!
Las direcciones de XRP Ledger se codifican usando base58 con el diccionario rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi 1tuvAxyz. Dado que XRP Ledger codifica varios tipos de claves con base58, antepone los datos codificados con un "prefijo de tipo" de un byte (también llamado "prefijo de versión") para distinguirlos. El prefijo de tipo hace que las direcciones comiencen normalmente con letras diferentes en formato base58.
El siguiente diagrama muestra la relación entre claves y direcciones:
Address Encodingbase58Checksum (4 bytes) Tipo Prefix0x00 ("r" en XRPL base58) AddressAccountID (20 bytes) Checksum (4 bytes) ID de cuenta (20 bytes) Clave pública maestra 33 bytes (secp256k1) 0xED + 32 bytes (Ed25519) SHA-256 dos veces RIPEMD160 de SHA-256