Last updated
Edit

Canales de pago

Los Canales de Pago son una función avanzada para enviar pagos de XRP "asíncronos" que pueden dividirse en incrementos muy pequeños y liquidarse más tarde.

El XRP para un canal de pago se reserva temporalmente. El remitente crea reclamaciones o Claims contra el canal, que el destinatario verifica sin enviar una transacción al XRP Ledger o esperar a que se apruebe una nueva versión del ledger por consenso. (Este es un proceso asíncrono porque ocurre separado del patrón habitual de obtener transacciones aprobadas por consenso). En cualquier momento, el destinatario puede canjear una reclamación (Claim) para recibir una cantidad de XRP autorizada por esa Claim. Liquidar una Claim de esta manera utiliza una transacción estándar del XRP Ledger, como parte del proceso de consenso habitual. Esta única transacción puede abarcar cualquier cantidad de transacciones garantizadas por Claims más pequeñas.

Debido a que las reclamaciones pueden verificarse individualmente pero liquidarse en bloque más adelante, los canales de pago hacen posible realizar transacciones a una velocidad limitada solo por la capacidad de los participantes para crear y verificar las firmas digitales de esas Reclamaciones. Este límite se basa principalmente en la velocidad del hardware de los participantes y la complejidad de los algoritmos de firma. Para obtener la máxima velocidad, utiliza firmas Ed25519, que son más rápidas que las firmas ECDSA secp256k1 predeterminadas del XRP Ledger. La investigación ha demostrado la capacidad de crear más de 100.000 firmas Ed25519 por segundo y verificar más de 70.000 por segundo en hardware estándar en 2011.

¿Por qué usar canales de pago?

El proceso de usar un canal de pago siempre implica dos partes, un pagador y un beneficiario. El pagador es una persona o institución que utiliza el XRP Ledger y es cliente del beneficiario. El beneficiario es una persona o empresa que recibe XRP como pago por bienes o servicios.

Los Canales de Pago no especifican intrínsecamente nada sobre lo que puedes comprar y vender con ellos. Sin embargo, los tipos de bienes y servicios que son adecuados para los canales de pago son:

  • Cosas que pueden transmitirse casi instantaneamente, como artículos digitales
  • Cosas baratas, donde el coste de procesar una transacción es una parte no trivial del precio
  • Cosas que normalmente se compran en bloque, donde la cantidad exacta deseada no se conoce de antemano

Ciclo de vida de un canal de pago

El siguiente diagrama resume el ciclo de vida de un canal de pago:

LegendChannel is expiredChannel is closed andremoved from ledger.Unclaimed XRP is returned to payerMutableExpiration("Expiration" field)ImmutableExpiration("CancelAfter" field)Business transactioncompletePayment confirmedPayment initiatedPayer is ready to payBoth parties are ready to use the channelChannel is createdTransaction effect(happens as partof a previous step)XRP Ledger transaction(needs 3-5 seconds for consensus)Off-ledger step(happens as fast as can be calculated)Payer: Add more XRP to channel(PaymentChannelFund transaction)7. Repeat as desired(Mutable expiration can be updated byPaymentChannelFundtransaction)Payee's PaymentChannelClaim transactionused tfClose flagChannel is out of XRP10. Anyone: close channel(PaymentChannelClose or PaymentChannelFundtransaction)Channel has XRP left;sets Expiration9b. Payee: request to close channel(PaymentChannelClaim transaction with tfClose flag)9a. Payer: request toclose channel(PaymentChannelClaim transaction with tfClose flag)Payee's PaymentChannelClaim transaction did notuse tfClose flag(Immutable expiration is defined by PaymentChannelCreate transaction)8. Payee: Redeem claim(PaymentChannelClaimtransaction)Payee receives XRPif channel isn't expired.6. Payee: Provide goods and services5. Payee: Verify claim's signature and amount(channel_verify and account_channels method)4. Payer: transmit signed claim to payee(using any communication method)3. Payer: sign claim(s)(channel_authorize method)2. Payee: check channel state(account_channels command)1. Payer: create channel(PaymentChannelCreate transaction)

Ver también