티켓 사용(Use Tickets)
Last updated
Last updated
티켓은 정상적인 순서에서 거래를 보내는 방법을 제공합니다. 이 튜토리얼에서는 티켓을 만든 다음 이를 사용하여 다른 트랜잭션을 보내는 단계를 안내합니다.
이 페이지는 xrpl.js 라이브러리를 사용하는 JavaScript 예제를 제공합니다. 설정 지침은 JavaScript 사용 시작하기를 참조하세요.
JavaScript는 웹 브라우저에서 작동하므로 설정 없이 대화형 단계를 읽고 사용할 수 있습니다.
이 튜토리얼 몇 단계로 나뉩니다.
(1-2단계) 설정: XRP Ledger 주소와 비밀번호가 필요합니다. 프로덕션의 경우 동일한 주소와 비밀번호를 일관되게 사용할 수 있습니다. 이 튜토리얼에서는 필요에 따라 새 테스트 자격 증명을 생성할 수 있습니다. 또한 네트워크에 연결되어 있어야 합니다.
(3-6단계) 티켓 만들기: 일부 티켓을 따로 보관하기 위해 트랜잭션을 보냅니다.
(선택 사항) 중단: 티켓을 생성한 후 다음 단계 전, 도중 및 후에 언제든지 다양한 기타 트랜잭션을 보낼 수 있습니다.
(7~10단계) 티켓 사용: 따로 보관해 둔 티켓 중 하나를 사용하여 트랜잭션을 전송합니다. 사용할 티켓이 하나 이상 남아 있는 한 이전 부분을 건너뛰면서 이 단계를 반복할 수 있습니다.
XRP Ledger에서 거래하려면 주소와 비밀 키, 그리고 약간의 XRP가 필요합니다. 개발 목적으로 다음 인터페이스를 사용하여 테스트넷에서 얻을 수 있습니다.
프로덕션에 바로 사용할 수 있는 소프트웨어를 구축 할 때 기존 계정을 사용하고 보안 서명 구성을 사용하여 키를 관리해야 합니다.
트랜잭션을 제출하려면 네트워크에 연결되어 있어야 합니다. 지금까지 티켓은 Devnet에서만 사용할 수 있으므로 Devnet 서버에 연결해야 합니다. 예를 들어:
소이 튜토리에서는 다음 버튼을 클릭하여 연결합니다.
티켓을 생성하기 전에 계정의 시퀀스 번호를 확인해야 합니다. 다음 단계에 대한 현재 시퀀스 번호가 필요하며 별도로 설정한 티켓 시퀀스 번호는 이 번호에서 시작합니다.
이전 단계에서 결정한 시퀀스 번호를 사용하여 TicketCreate 트랜잭션을 생성합니다. 필드를 사용하여 TicketCount
만들 티켓 수를 지정합니다. 예를 들어, 10개의 티켓을 만드는 거래를 준비하려면:
나중에 검증되었는지 여부를 확인할 수 있도록 트랜잭션의 해시와 LastLedgerSequence
값을 기록하세요.
이전 단계에서 만든 서명된 트랜잭션 Blob을 제출합니다. 예를 들어:
대부분의 트랜잭션은 제출된 후 다음 ledger 버전으로 승인됩니다. 즉, 트랜잭션 결과가 최종 결과가 되기까지 4-7초가 걸릴 수 있습니다. XRP Ledger가 사용 중이거나 네트워크 연결 상태가 좋지 않아 트랜잭션이 네트워크 전체에 전달되는 것이 지연되면 트랜잭션을 확인하는 데 시간이 더 오래 걸릴 수 있습니다. (거래 만료 설정 방법에 대한 자세한 내용은 신뢰할 수 있는 거래 제출을 참조하세요.)
거래 ID:
(없음)
최신 검증 원장 인덱스:
(연결되지 않은)
제출 시점의 원장 인덱스:
(제출하지 않은)
거래 LastLedgerSequence
:
(미준비)
티켓의 장점은 티켓 거래를 준비하는 동안 평소와 같이 계정의 비즈니스를 계속할 수 있다는 것입니다. 티켓을 사용하여 트랜잭션을 전송하려는 경우 다른 티켓을 사용하는 트랜잭션을 포함하여 다른 전송 트랜잭션과 병렬로 수행하고 언제든지 티켓이 있는 트랜잭션을 제출할 수 있습니다. 유일한 제약은 각 티켓이 한 번만 사용할 수 있다는 것입니다.
발권된 트랜잭션을 보내려면 사용할 티켓 시퀀스 번호를 알아야 합니다. 계정을 주의 깊게 추적해 왔다면 어떤 티켓이 있는지 이미 알고 있지만 확실하지 않은 경우 account_objects 메서드를 사용하여 사용 가능한 티켓을 조회할 수 있습니다. 예를 들어:
이제 사용 가능한 티켓이 있으므로 이를 사용하는 트랜잭션을 준비할 수 있습니다.
원하는 모든 유형의 트랜잭션이 될 수 있습니다. 다음 예제에서는 ledger에 다른 설정이 필요하지 않으므로 no-op AccountSet 트랜잭션을 사용합니다. Sequence
필드를 0으로 설정하고 사용 가능한 티켓 중 하나의 TicketSequence
번호가 있는 티켓 시퀀스 필드를 포함합니다.
이전 단계에서 만든 서명된 트랜잭션 Blob을 제출합니다. 예를 들어:
티켓 거래는 순차 거래와 동일한 방식으로 합의 프로세스를 거칩니다.
거래 ID:
(없음)
최신 검증 원장 인덱스:
(연결되지 않은)
제출 시점의 원장 인덱스:
(제출하지 않은)
거래 LastLedgerSequence
:
(미준비)
티켓의 주요 사용 사례 중 하나는 여러 다중 서명 트랜잭션 에 대한 서명을 병렬로 수집할 수 있는 것입니다. 티켓을 사용하면 어떤 것이 먼저 준비될지 걱정할 필요 없이 완전히 서명되고 준비가 되는 즉시 다중 서명 트랜잭션을 보낼 수 있습니다.
이 시나리오에서는 8단계 "발권 거래 준비" 가 약간 다릅니다. 한 번에 모두 준비하고 서명하는 대신 다중 서명된 트랜잭션을 보내는 단계를 따릅니다. 먼저 트랜잭션을 준비한 다음 신뢰할 수 있는 서명자 간에 순환하여 서명을 수집하고 마지막으로 서명을 최종적으로 다중 서명된 트랜잭션으로 결합합니다.
각각 다른 티켓을 사용하는 한 여러 잠재적 트랜잭션에 대해 이 작업을 병렬로 수행할 수 있습니다.
티켓의 주요 사용 사례 중 하나는 여러 개의 다중 서명 트랜잭션에 대한 서명을 병렬로 수집할 수 있는 것입니다. 티켓을 사용하면 여러 서명된 트랜잭션이 완전히 서명되고 준비되는 즉시 어떤 트랜잭션이 먼저 준비될지 걱정하지 않고 전송할 수 있습니다.
이 시나리오에서는 8단계, "발권된 트랜잭션 준비"와 약간 다릅니다. 동시에 준비하고 서명하는 대신 다중 서명 트랜잭션을 전송하는 단계를 따릅니다. 먼저 트랜잭션을 준비한 다음 신뢰할 수 있는 서명자 간에 트랜잭션을 순환하여 서명을 수집하고 마지막으로 서명을 최종 다중 서명 트랜잭션에 결합합니다.
각각 다른 티켓을 사용하는 경우 여러 잠재적 트랜잭션에 대해 병렬로 이 작업을 수행할 수 있습니다.
이 튜토리얼의 코드 샘플은 JavaScript의 패턴을 사용하며, 비동기 함수 내에서 await를 사용해야 하므로 여기서 시작된 main() 함수 내에서 계속 진행되도록 나머지 코드 샘플을 작성합니다. 원하는 경우 대신 Promise 메소드 .then() 및 .catch()를 사용할 수도 있습니다.