Payment Kit 표준
Sui Payment Kit은 Sui에서 안전하고 유연한 payment processing을 위한 프레임워크이다. 이는 persistent 및 ephemeral payment option, event-driven architecture, 그리고 built-in duplicate prevention을 제공한다.
Payment Kit은 Sui에서 payment processing을 표준화하여, developer가 common payment verification 및 receipt 관리 로직을 다시 구현하지 않고도 견고한 payment flow를 구축할 수 있게 한다. Payment Kit을 사용하는 애플리케이션은 battle-tested security pattern과 ecosystem 전반에서 일관된 payment handling의 이점을 누린다.
주요 기능
Payment Kit은 다음의 핵심 capability를 제공한다:
- 안전한 결제 처리: payment amount를 검증하고 코인을 안전하게 전송한다.
- payment registry: duplicate detection이 포함된 payment receipt를 위한 optional persistent storage이다.
- 유연한 receipt 관리: payment tracking 및 verification을 위한 receipt를 생성한다.
- event-driven architecture: off-chain tracking 및 integration을 위한 event를 emit한다.
- multi-코인 support: 어떤 Sui 코인 타입과도 함께 동작한다.
- Transaction URI: user friendly payment flow를 위한 encoded link를 생성할 수 있도록 표준화된 URI format이다.
아키텍처 구성 요소
Payment Kit은 다음의 주요 component로 구성된다:
결제 처리 core
코인 transfer, payment validation, 그리고 receipt generation을 처리한다. core는 다음을 검증한다:
- payment amount가 expected value와 일치한다
- 코인이 충분한 잔액을 가진다
- 전송이 성공적으로 완료된다
- receipt에 정확한 payment 정보가 포함된다
registry system
payment history를 추적하고 duplicate payment를 방지하는 optional persistent storage이다. registry는 다음을 제공한다:
- composite key를 사용한 payment record storage
- payment record를 위한 configurable expiration 정책
- 누적된 fund에 대한 출금 capability
- capability를 통한 administrative control
핵심 개념
결제 mode
Payment Kit은 두 가지 payment processing mode를 지원한다:
1. Registry payments: duplicate prevention과 persistent receipt가 포함된 PaymentRegistry를 통해 payment를 처리한다. 다음의 경우 이 mode를 사용한다:
- duplicate payment를 방지해야 한다
- payment history를 추적해야 한다
- 컴플라이언스 또는 auditing에 payment record가 필요하다
- fund가 관리되는 registry에 누적되어야 한다
2. Ephemeral payments: persistent storage 없이 one-time payment를 처리한다. 다음의 경우 이 mode를 사용한다:
- duplicate prevention이 강제되지 않는다
중복 방지
duplicate prevention은 PaymentRegistry를 통해 payment를 처리할 때 강제된다. 시스템은 다음으로부터 derived된 composite PaymentKey를 사용한다:
- Nonce: 각 payment에 대한 unique identifier이다
(UUIDv4). - Amount: 코인 unit으로 나타낸 payment value이다.
- Coin type: 특정 코인 타입이다.
- Receiver 주소: payment destination 주소이다.
이 composite key는 amount 또는 receiver와 같은 개별 구성 요소가 서로 다른 payment에서 재사용되더라도, 동일한 payment가 두 번 처리될 수 없도록 보장한다.
결제 receipt
처리된 모든 payment는 다음을 포함하는 PaymentReceipt 객체를 생성한다:
- 레퍼런스를 위한 payment nonce
- 지급된 amount
- 사용된 코인 타입
- receiver 주소
- payment 타임스탬프
- registry 정보(registry payment에만 해당하며 ephemeral payment에는 적용되지 않는다)
receipt는 payment proof 역할을 하며, off-chain verification, accounting, 또는 다른 시스템과의 integration에 사용할 수 있다.