결제 채널 (Payment Channels)
Last updated
Last updated
결제 채널은 "비동기" XRP 결제를 매우 작은 단위로 나누고 나중에 결제할 수 있는 고급 기능입니다.
결제 채널의 XRP는 일시적으로 예약됩니다. 송신자는 채널에 대한 *청구(Claims)*를 생성하고, 수신자는 XRP 원장 거래를 보내거나 새 원장 버전이 합의에 의해 승인되기를 기다리지 않고 확인합니다. (이것은 일반적인 트랜잭션이 합의에 의해 승인되는 패턴과 별개로 발생하므로 비동기 과정입니다.) 수신자는 언제든지 청구를 *인출(redeem)*하여 그 청구에 의해 승인된 XRP 금액을 받을 수 있습니다. 이러한 청구를 결정하는 것은 표준 XRP 원장 거래를 사용하며, 이는 일반적인 합의 과정의 일부입니다. 이 단일 거래는 더 작은 청구에 의해 보장된 여러 거래를 포함할 수 있습니다.
청구는 개별적으로 확인되지만 나중에 일괄로 결제될 수 있기 때문에, 결제 채널을 통해 트랜잭션을 참가자들이 이러한 청구의 디지털 서명을 생성하고 확인하는 능력에만 제한되는 속도로 진행할 수 있게 됩니다. 이 제한은 주로 참가자들의 하드웨어 속도와 서명 알고리즘의 복잡성에 기반하고 있습니다. 최대 속도를 얻기 위해선, XRP 원장의 기본적인 secp256k1 ECDSA 서명보다 빠른 Ed25519 서명을 사용하세요. 연구는 2011년의 상품 하드웨어에서 초당 Ed25519 100,000개 이상의 서명을 생성하고 초당 70,000개 이상을 확인할 수 있는 능력을 증명했습니다.
결제 채널을 사용하는 과정은 항상 두 당사자, 즉 지불자와 수취인을 포함합니다. 지불자는 XRP 원장을 사용하는 개인이나 기관으로, 수취인의 고객입니다. 수취인은 상품이나 서비스에 대한 대가로 XRP를 받는 개인이나 사업체입니다.
결제 채널은 본질적으로 어떤 것을 구매하고 판매할 수 있는지에 대해 지정하지 않습니다. 그러나 결제 채널에 적합한 상품과 서비스의 유형은 다음과 같습니다:
디지털 아이템처럼 거의 즉시 전송될 수 있는 것들
거래 처리 비용이 가격의 비싼 부분을 차지하는 저렴한 것들
정확한 수량이 미리 알려지지 않고 대량으로 구매하는 것들
다음 다이어그램은 결제 채널의 생애주기를 요약한 것입니다.
XRP 지불 채널에서 XRP를 청구하거나, 지불 채널의 만료일을 조정하거나, 둘 다 할 수 있습니다. 이 거래는 트랜잭션 발신자의 지정된 채널에서의 역할에 따라 다르게 사용될 수 있습니다.
채널의 출처 주소는 다음과 같은 작업을 수행할 수 있습니다:
채널에서 목적지로 XRP를 청구서와 함께 또는 없이 보낼 수 있습니다.
채널의 SettleDelay가 지난 후에 채널의 만료를 설정할 수 있습니다.
보류 중인 만료 시간을 지울 수 있습니다.
채널을 즉시 닫을 수 있으며, 이 경우 청구를 먼저 처리하거나 처리하지 않을 수 있습니다. 채널에 잔여 XRP가 있는 경우 출처 주소는 채널을 즉시 닫을 수 없습니다.
채널의 목적지 주소는 다음과 같은 작업을 수행할 수 있습니다:
서명된 청구서를 사용하여 채널로부터 XRP를 수령할 수 있습니다.
청구서를 처리한 후에 채널을 즉시 닫을 수 있으며, 이 경우 미청구 XRP를 채널의 출처로 환불합니다.
이 트랜잭션을 보내는 어떤 주소든지, 이전 렛저의 마감 시간보다 만료 또는 CancelAfter 시간이 더 오래된 채널을 닫을 수 있습니다. 트랜잭션의 내용과는 상관없이 유효하게 구성된 PaymentChannelClaim 트랜잭션은 이 효과를 가집니다.
지불자는 channel_authorize
메소드를 사용하여 생성한 서명(signature)는 수취인이 XRP를 인출하는데 필요한 권한을 부여합니다. 이 서명은 수취인에게 전송되어야 합니다.
하지만 단순히 서명만을 보내는 것이 아니라, XRP Ledger에서의 Payment Channel Claim
트랜잭션을 제출하는데 필요한 몇 가지 정보도 함께 보내야 합니다. 이러한 정보에는 다음이 포함됩니다:
channel_id
: 결제 채널의 고유한 식별자입니다.
signature
: channel_authorize
메소드에 의해 생성된 서명입니다.
public_key
: 결제 채널을 만든 계정의 공개 키입니다.
amount
: 인출하려는 XRP 금액입니다.
이 정보들을 수취인에게 제공하면, 수취인은 이를 사용하여 XRP Ledger에 Payment Channel Claim
트랜잭션을 제출하고, 지정된 금액의 XRP를 인출할 수 있습니다.
channel_verify
메소드는 수취인이 결제 채널에서 특정 양의 XRP를 인출할 수 있는 서명의 유효성을 검사합니다. 보안성을 확보하고, 부정행위를 방지하기 위한 목적으로, 자금의 인출에 직접적으로 영향을 끼치지는 않습니다.