PayChannel
(PayChan 수정안에 의해 추가되었습니다.)
PayChannel 객체 유형은 결제 채널을 나타냅니다. 결제 채널을 사용하면 나중에 컨센서스 ledger과 조정할 수 있는 XRP의 소액 오프-ledger 결제가 가능합니다. 결제 채널은 채널이 닫힐 때까지 특정 대상 주소로만 지급할 수 있는 XRP 잔액을 보유합니다. 채널이 닫히면 사용되지 않은 XRP는 채널의 소유자(채널을 생성하고 자금을 조달한 소스 주소)에게 반환됩니다.
PaymentChannelCreate 트랜잭션 유형은 PayChannel 객체를 생성합니다. PaymentChannelFund 및 PaymentChannelClaim 트랜잭션 유형은 기존 PayChannel 객체를 수정합니다.
결제 채널이 만료되면 처음에는 새 트랜잭션만 ledger 내용을 수정할 수 있으므로 ledger에 남아 있습니다. 만료 후 결제 채널에 액세스하는 트랜잭션이 있으면 트랜잭션 처리가 자동으로 결제 채널을 닫습니다. 만료된 채널을 닫고 사용하지 않은 XRP를 소유자에게 반환하려면 일부 주소에서 채널에 액세스하는 새 PaymentChannelClaim 또는 PaymentChannelFund 트랜잭션을 보내야 합니다.
결제 채널 사용 예시는 결제 채널 튜토리얼을 참조하세요.
PayChannel JSON 예시
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