PayChannel

(PayChan 수정안에 의해 추가되었습니다.)

PayChannel 객체 유형은 결제 채널을 나타냅니다. 결제 채널을 사용하면 나중에 컨센서스 ledger과 조정할 수 있는 XRP의 소액 오프-ledger 결제가 가능합니다. 결제 채널은 채널이 닫힐 때까지 특정 대상 주소로만 지급할 수 있는 XRP 잔액을 보유합니다. 채널이 닫히면 사용되지 않은 XRP는 채널의 소유자(채널을 생성하고 자금을 조달한 소스 주소)에게 반환됩니다.

PaymentChannelCreate 트랜잭션 유형은 PayChannel 객체를 생성합니다. PaymentChannelFund 및 PaymentChannelClaim 트랜잭션 유형은 기존 PayChannel 객체를 수정합니다.

결제 채널이 만료되면 처음에는 새 트랜잭션만 ledger 내용을 수정할 수 있으므로 ledger에 남아 있습니다. 만료 후 결제 채널에 액세스하는 트랜잭션이 있으면 트랜잭션 처리가 자동으로 결제 채널을 닫습니다. 만료된 채널을 닫고 사용하지 않은 XRP를 소유자에게 반환하려면 일부 주소에서 채널에 액세스하는 새 PaymentChannelClaim 또는 PaymentChannelFund 트랜잭션을 보내야 합니다.

결제 채널 사용 예시는 결제 채널 튜토리얼을 참조하세요.

PayChannel JSON 예시

{
    "Account": "rBqb89MRQJnMPq8wTwEbtz4kvxrEDfcYvt",
    "Destination": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
    "Amount": "4325800",
    "Balance": "2323423",
    "PublicKey": "32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A",
    "SettleDelay": 3600,
    "Expiration": 536027313,
    "CancelAfter": 536891313,
    "SourceTag": 0,
    "DestinationTag": 1002341,
    "DestinationNode": "0000000000000000",
    "Flags": 0,
    "LedgerEntryType": "PayChannel",
    "OwnerNode": "0000000000000000",
    "PreviousTxnID": "F0AB71E777B2DA54B86231E19B82554EF1F8211F92ECA473121C655BFC5329BF",
    "PreviousTxnLgrSeq": 14524914,
    "index": "96F76F27D8A327FC48753167EC04A46AA0E382E6F57F32FD12274144D00F1797"
}

PayChannel 필드

PayChannel 객체에는 다음과 같은 필드가 있습니다:

이름

JSON 유형

내부 유형

필수 여부

설명

Account

문자열

계정 ID

이 결제 채널을 소유한 소스 주소입니다. 이 주소는 채널을 생성한 트랜잭션의 송금 주소에서 가져옵니다.

Amount

문자열

금액

이 채널에 할당된 총 XRP(드롭 단위)입니다. 여기에는 대상 주소로 지급된 XRP가 포함됩니다. 이 금액은 채널을 생성한 트랜잭션에 의해 처음에 설정되며 소스 주소가 PaymentChannelFund 트랜잭션을 보내면 이 금액을 늘릴 수 있습니다.

Balance

문자열

금액

채널에서 이미 지급한 총 XRP(드롭 단위)입니다. 이 값과 금액 필드의 차이는 지불 채널 청구 트랜잭션으로 대상 주소에 지불할 수 있는 XRP의 양입니다. 채널이 닫히면 남은 차액은 소스 주소로 반환됩니다.

CancelAfter

숫자

UInt32

아니요

결제 채널의 불변 만료 시간(Ripple 에포크 이후 초 단위)입니다. 이 값이 존재하고 이전 원장의 close_time 필드보다 작으면 이 채널은 만료됩니다. 이 값은 채널을 생성한 트랜잭션에서 선택적으로 설정하며 변경할 수 없습니다.

Destination

문자열

계정 ID

이 결제 채널의 대상 주소입니다. 결제 채널이 열려 있는 동안 이 주소는 채널에서 XRP를 받을 수 있는 유일한 주소입니다. 이 주소는 채널을 생성한 트랜잭션의 대상 필드에서 가져옵니다.

DestinationTag

숫자

UInt32

아니요

대상 주소에 호스팅된 수취인 등 이 결제 채널의 대상을 추가로 지정하는 임의의 태그입니다.

DestinationNode

문자열

UInt64

아니요

디렉터리가 여러 페이지로 구성된 경우 대상의 소유자 디렉터리에서 이 개체에 연결되는 페이지를 나타내는 힌트입니다. fixPayChanRecipientOwnerDir 수정을 활성화하기 전에 생성된 결제 채널에서는 생략됩니다.

Expiration

숫자

UInt32

아니요

이 결제 채널의 변경 가능한 만료 시간 Ripple 에포크 이후 초 단위)입니다. 이 값이 존재하고 이전 ledger의 close_time 필드보다 작으면 채널이 만료됩니다. 자세한 내용은 채널 만료 설정하기를 참조하세요.

Flags

숫자

UInt32

이 객체에 대해 활성화된 부울 플래그의 비트맵입니다. 현재 프로토콜은 PayChannel 객체에 대한 플래그를 정의하지 않습니다. 값은 항상 0입니다.

LedgerEntryType

문자열

UInt16

PayChannel 문자열에 매핑된 0x0078 값은 이 개체가 결제 채널 개체임을 나타냅니다.

OwnerNode

문자열

UInt64

디렉터리가 여러 페이지로 구성된 경우 소스 주소의 소유자 디렉터리의 어느 페이지가 이 개체에 연결되는지 나타내는 힌트입니다.

PreviousTxnID

문자열

해시256

가장 최근에 이 개체를 수정한 트랜잭션의 식별 해시입니다.

PreviousTxnLgrSeq

숫자

UInt32

가장 최근에 이 개체를 수정한 트랜잭션이 포함된 ledger의 인덱스입니다.

PublicKey

문자열

Blob

이 채널에 대한 클레임에 서명하는 데 사용할 수 있는 키 쌍의 공개 키(16진수)입니다. 유효한 secp256k1 또는 Ed25519 공개 키일 수 있습니다. 이는 채널을 생성한 트랜잭션에 의해 설정되며 채널에 대한 클레임에 사용된 공개 키와 일치해야 합니다. 채널 소스 주소는 서명된 클레임 없이 이 채널에서 대상으로 XRP를 보낼 수도 있습니다.

SettleDelay

숫자

UInt32

소스 주소에 아직 XRP가 있는 경우 채널을 닫기 위해 대기해야 하는 시간(초)입니다. 값이 작을수록 소스 주소가 채널 폐쇄를 요청한 후 대상 주소가 미결제 클레임을 상환할 시간이 적다는 것을 의미합니다. 32비트 부호 없는 정수(0 ~ 2^32-1)에 맞는 모든 값이 될 수 있습니다. 이것은 채널을 생성하는 트랜잭션에 의해 설정됩니다.

SourceTag

숫자

UInt32

아니요

소유자 주소의 호스팅된 수신자와 같이 이 결제 채널의 소스를 추가로 지정하는 임의의 태그입니다.

채널 만료 설정

결제 채널의 만료 필드는 취소 후 필드로 표시되는 불변 만료 시간과 달리 변경 가능한 만료 시간입니다. 채널의 만료는 항상 이전 ledger의 close_time 필드를 기준으로 고려됩니다. 만료 필드는 PayChannel 객체가 생성될 때 생략됩니다. PayChannel 객체의 만료 필드를 업데이트할 수 있는 방법은 여러 가지가 있는데, 채널의 소스 주소는 채널이 처음 닫으려고 시도한 후 최소 SettleDelay 초 동안 항상 열려 있는 한 채널의 만료 기간을 자유롭게 설정할 수 있습니다.

소스 주소

소스 주소는 PaymentChannelFund 트랜잭션 유형으로 직접 만료를 설정할 수 있습니다. 새 값은 다음 값 중 가장 빠른 값보다 빠르지 않아야 합니다:

  • 현재 만료 값(설정되어 있는 경우)

  • 이전 ledger의 마감 시간에 채널의 SettleDelay를 더한 값입니다.

즉, 소스 주소는 만료가 이미 설정되어 있는 경우 항상 나중에 만료 값을 설정할 수 있습니다. 소스 주소는 만료 값을 더 일찍 설정하거나 현재 만료가 설정되어 있지 않은 경우 새 값이 미래의 SettleDelay 초 이상인 경우 만료 값을 설정할 수 있습니다. 소스 주소가 유효하지 않은 만료 날짜를 설정하려고 하면 트랜잭션은 temBAD_EXPIRATION 오류 코드와 함께 실패합니다.

소스 주소는 결제 채널 클레임 트랜잭션 유형의 tfClose 플래그를 사용하여 만료일을 설정할 수도 있습니다. 플래그가 활성화된 경우, ledger는 다음 값 중 더 이른 값으로 만료 기간을 자동으로 설정합니다:

  • 현재 만료 값(설정되어 있는 경우)

  • 이전 ledger의 마감 시간에 채널의 SettleDelay를 더한 값

소스 주소는 결제 채널 클레임 트랜잭션 유형의 tfRenew 플래그를 사용하여 만료값을 제거할 수 있습니다.

목적지 주소

목적지 주소는 만료 필드를 설정할 수 없습니다. 그러나 목적지 주소는 결제 채널 클레임의 tfClose 플래그를 사용하여 채널을 즉시 닫을 수 있습니다.

기타 주소

다른 주소에서 만료 필드를 설정하려고 시도하면 트랜잭션은 tecNO_PERMISSION 오류 코드와 함께 실패합니다. 그러나 채널이 이미 만료된 경우 트랜잭션으로 인해 채널이 닫히고 대신 tesSUCCESS가 발생합니다.

PayChannel ID 형식

PayChannel 객체의 ID는 다음 값의 절반을 순서대로 연결한 SHA-512입니다:

  • PayChannel 스페이스 키(0x0078)

  • 소스 계정의 AccountID

  • 대상 계정의 AccountID

  • 채널을 생성한 결제 채널 생성 트랜잭션의 시퀀스 번호 결제 채널 생성 트랜잭션이 티켓을 사용한 경우 티켓 시퀀스 값을 대신 사용합니다.

Last updated