본문으둜 κ±΄λ„ˆλ›°κΈ°

μˆ˜ν‘œ (Checks)

XRP Ledger의 Checks κΈ°λŠ₯은 μ‚¬μš©μžκ°€ λ°›λŠ” μ‚¬λžŒμ—κ²Œ μ·¨μ†Œν•˜κ±°λ‚˜ ν˜„κΈˆν™”ν•  수 μžˆλŠ” μ§€μ—°λœ 결제λ₯Ό λ§Œλ“œλŠ” 것을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. 개인용 쒅이 μˆ˜ν‘œμ™€ 같이, XRP Ledger의 ChecksλŠ” μžκΈˆμ„ λ³΄λ‚΄λŠ” μ‚¬λžŒμ΄ κΈˆμ•‘κ³Ό μˆ˜λ ΉμΈμ„ μ§€μ •ν•˜λŠ” Checkλ₯Ό λ§Œλ“œλŠ” κ²ƒμœΌλ‘œ μ‹œμž‘ν•©λ‹ˆλ‹€. μˆ˜λ ΉμΈμ€ μžμ‹ μ˜ κ³„μ •μœΌλ‘œ 보낸 μžκΈˆμ„ λŒμ–΄λ“€μ΄κΈ° μœ„ν•΄ μˆ˜ν‘œλ₯Ό ν˜„κΈˆν™”ν•©λ‹ˆλ‹€. λ°›λŠ” μ‚¬λžŒμ΄ μˆ˜ν‘œλ₯Ό ν˜„κΈˆν™”ν•˜κΈ° μ „κΉŒμ§€ λˆμ€ μ΄λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μˆ˜ν‘œλ₯Ό λ§Œλ“€ λ•Œ μžκΈˆμ„ 보λ₯˜ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, 보낸 μ‚¬λžŒμ΄ λ°›λŠ” μ‚¬λžŒμ΄ 그것을 ν˜„κΈˆν™”ν•˜λ €κ³  ν•  λ•Œ μΆ©λΆ„ν•œ 자금이 μ—†λ‹€λ©΄ μˆ˜ν‘œλ₯Ό ν˜„κΈˆν™”ν•˜λŠ” 것이 μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜ν‘œ ν˜„κΈˆν™”κ°€ μ‹€νŒ¨ν•˜λ©΄, μˆ˜ν‘œμ˜ μˆ˜μ‹ μžλŠ” μˆ˜ν‘œκ°€ 만료될 λ•ŒκΉŒμ§€ μž¬μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

XRP Ledger Checksμ—λŠ” 더 이상 ν˜„κΈˆν™”ν•  수 μ—†λŠ” 만료 μ‹œκ°„μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜μ‹ μžκ°€ 만료 전에 μ„±κ³΅μ μœΌλ‘œ μˆ˜ν‘œλ₯Ό ν˜„κΈˆν™”ν•˜μ§€ λͺ»ν•˜λ©΄, μˆ˜ν‘œλŠ” 더 이상 ν˜„κΈˆν™”ν•  수 μ—†μ§€λ§Œ, XRP Ledger에 객체가 남아 μžˆμŠ΅λ‹ˆλ‹€. λˆ„κ΅¬λ“ μ§€ 만료 후에 μˆ˜ν‘œλ₯Ό μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 만료 μ „μ—λŠ” 보낸 μ‚¬λžŒκ³Ό λ°›λŠ” μ‚¬λžŒλ§Œ μˆ˜ν‘œλ₯Ό μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 보낸 μ‚¬λžŒμ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν‘œλ₯Ό ν˜„κΈˆν™”ν•˜κ±°λ‚˜ λˆ„κ΅°κ°€κ°€ 그것을 μ·¨μ†Œν•˜λ©΄ μˆ˜ν‘œ κ°μ²΄λŠ” Ledgerμ—μ„œ μ œκ±°λ©λ‹ˆλ‹€.

ChecksλŠ” Escrow와 Payment Channels와 일뢀 μœ μ‚¬μ„±μ΄ μžˆμ§€λ§Œ, μ΄λŸ¬ν•œ κΈ°λŠ₯κ³Ό Checks μ‚¬μ΄μ—λŠ” λͺ‡ 가지 μ€‘μš”ν•œ 차이점이 μžˆμŠ΅λ‹ˆλ‹€:

  • Checks둜 토큰을 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. Payment Channels와 Escrowλ‘œλŠ” XRP만 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ChecksλŠ” μ–΄λ–€ μžκΈˆλ„ μž κ·Έκ±°λ‚˜ μ˜ˆμ•½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Payment Channels와 Escrow에 κ΄€λ ¨λœ XRPλŠ” 보낸 μ‚¬λžŒμ΄ μ œκ³΅ν•œ 청ꡬ에 μ˜ν•΄ (Payment Channels) ν˜„κΈˆν™”λ˜κ±°λ‚˜, λ§Œλ£Œλ‚˜ μ•”ν˜Έ 쑰건에 μ˜ν•΄ (Escrow) ν•΄μ œλ  λ•ŒκΉŒμ§€ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • Escrowλ₯Ό 톡해 μžμ‹ μ—κ²Œ XRPλ₯Ό 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. μžμ‹ μ—κ²Œ Checksλ₯Ό 보낼 μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

Checks의 λͺ©μ β€‹

전톡적인 쒅이 μˆ˜ν‘œλŠ” μ‚¬λžŒλ“€μ΄ μ‹€μ œ 톡화λ₯Ό μ¦‰μ‹œ κ΅ν™˜ν•˜μ§€ μ•Šκ³ λ„ μžκΈˆμ„ 이체할 수 있게 ν•΄μ€λ‹ˆλ‹€. XRP Ledger ChecksλŠ” μ‚¬λžŒλ“€μ΄ 은행 μ—…κ³„μ—μ„œ μ΅μˆ™ν•˜κ²Œ λ°›μ•„λ“€μ—¬μ§€λŠ” 과정을 μ‚¬μš©ν•˜μ—¬ λΉ„λ™κΈ°μ μœΌλ‘œ μžκΈˆμ„ κ΅ν™˜ν•  수 있게 ν•©λ‹ˆλ‹€.

XRP Ledger ChecksλŠ” λ˜ν•œ XRP Ledger에 κ³ μœ ν•œ 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€: μ‚¬μš©μžκ°€ μ›μΉ˜ μ•ŠλŠ” 결제λ₯Ό κ±°λΆ€ν•˜κ±°λ‚˜ 결제의 μΌλΆ€λ§Œμ„ μˆ˜λ½ν•  수 있게 ν•©λ‹ˆλ‹€. μ΄λŠ” μ»΄ν”ŒλΌμ΄μ–ΈμŠ€ 이유둜 결제λ₯Ό μ‹ μ€‘ν•˜κ²Œ λ°›μ•„μ•Ό ν•˜λŠ” κΈ°κ΄€λ“€μ—κ²Œ μœ μš©ν•©λ‹ˆλ‹€.

μ‚¬μš© 사둀: 결제 μŠΉμΈβ€‹

문제: BSA, KYC, AML, and CFT와 같은 κ·œμ •μ„ μ€€μˆ˜ν•˜κΈ° μœ„ν•΄, 금육 기관은 받은 자금의 μΆœμ²˜μ— λŒ€ν•œ λ¬Έμ„œλ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ·œμ •μ€ 기관이 그듀이 μ²˜λ¦¬ν•˜λŠ” λͺ¨λ“  결제의 μΆœμ²˜μ™€ λͺ©μ μ§€λ₯Ό μ•Œμ•„μ•Ό ν•˜λ„λ‘ ν•˜μ—¬ λΆˆλ²•μ μΈ 자금 이체λ₯Ό λ°©μ§€ν•˜λ €κ³  ν•©λ‹ˆλ‹€. XRP Ledger의 μ„±μ§ˆλ‘œ 인해, λˆ„κ΅¬λ“ μ§€ μ›ν•˜λŠ” 경우 XRP (그리고 νŠΉμ • 쑰건 ν•˜μ—μ„œ 토큰)λ₯Ό κΈ°κ΄€μ˜ XRP Ledger κ³„μ •μœΌλ‘œ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ›μΉ˜ μ•ŠλŠ” 결제λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것은 μ΄λŸ¬ν•œ κΈ°κ΄€μ˜ μ»΄ν”ŒλΌμ΄μ–ΈμŠ€ λΆ€μ„œμ— μƒλ‹Ήν•œ λΉ„μš©κ³Ό μ‹œκ°„ 지연을 μΆ”κ°€ν•˜λ©°, 잠재적으둜 λ²ŒκΈˆμ΄λ‚˜ 제재λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄κ²°μ±…: 기관은 AccountSet νŠΈλžœμž­μ…˜μ—μ„œ asfDepositAuth ν”Œλž˜κ·Έλ₯Ό μ„€μ •ν•˜μ—¬ κ·Έλ“€μ˜ XRP Ledger 계정에 Deposit Authorization을 ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 계정이 결제 νŠΈλžœμž­μ…˜μ„ 받을 수 μ—†κ²Œ λ§Œλ“­λ‹ˆλ‹€. Deposit Authorization이 ν™œμ„±ν™”λœ 계정은 였직 Escrow, Payment Channels, λ˜λŠ” Checksλ₯Ό ν†΅ν•΄μ„œλ§Œ μžκΈˆμ„ 받을 수 μžˆμŠ΅λ‹ˆλ‹€. Deposit Authorization이 ν™œμ„±ν™”λœ 경우, ChecksλŠ” μžκΈˆμ„ μ΄μ²΄ν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•˜κ³  μΉœμˆ™ν•˜λ©° μœ μ—°ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

μ‚¬μš©λ²•β€‹

XRP Ledger의 ChecksλŠ” μ•„λž˜ κ·Έλ¦Όκ³Ό 같은 생애주기λ₯Ό 보톡 κ°€μ§‘λ‹ˆλ‹€.

checks_flow_happy

단계 1: 체크λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄, λ°œμ‹ μžλŠ” [CheckCreate][] νŠΈλžœμž­μ…˜μ„ μ œμΆœν•˜κ³  μˆ˜μ‹ μž(Destination), 만료 μ‹œκ°„(Expiration), 그리고 λ°œμ‹ μž κ³„μ •μ—μ„œ 인좜될 수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘(SendMax)을 μ§€μ •ν•©λ‹ˆλ‹€.

단계 2: CheckCreate νŠΈλžœμž­μ…˜μ΄ 처리된 ν›„, XRP Ledger 상에 Check 객체가 μƒμ„±λ©λ‹ˆλ‹€. 이 κ°μ²΄λŠ” 그것을 μƒμ„±ν•œ νŠΈλžœμž­μ…˜μ— μ˜ν•΄ μ •μ˜λœ 체크의 속성을 ν¬ν•¨ν•©λ‹ˆλ‹€. 이 κ°μ²΄λŠ” 만료 μ‹œκ°„μ΄ μ§€λ‚˜κΈ° 전에 λ°œμ‹ μž(체크λ₯Ό [CheckCancel][] νŠΈλžœμž­μ…˜μœΌλ‘œ μ·¨μ†Œν•˜λŠ” 경우) λ˜λŠ” μˆ˜μ‹ μž(체크λ₯Ό μ·¨μ†Œν•˜κ±°λ‚˜ ν˜„κΈˆν™”ν•˜λŠ” 경우)에 μ˜ν•΄μ„œλ§Œ 변경될 수 μžˆμŠ΅λ‹ˆλ‹€. 만료 μ‹œκ°„μ΄ μ§€λ‚œ ν›„μ—λŠ” λˆ„κ΅¬λ“ μ§€ 체크λ₯Ό μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

단계 3: 체크λ₯Ό ν˜„κΈˆν™”ν•˜κΈ° μœ„ν•΄, μˆ˜μ‹ μžλŠ” [CheckCash][] νŠΈλžœμž­μ…˜μ„ μ œμΆœν•©λ‹ˆλ‹€. μˆ˜μ‹ μžλŠ” 체크λ₯Ό ν˜„κΈˆν™”ν•˜λŠ” 두 가지 μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€:

  • Amount β€” μˆ˜μ‹ μžλŠ” 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ ν˜„κΈˆν™”ν•  μ •ν™•ν•œ κΈˆμ•‘μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ°œμ‹ μžκ°€ κ°€λŠ₯ν•œ 이체 수수료λ₯Ό μ»€λ²„ν•˜κΈ° μœ„ν•΄ 체크λ₯Ό νŒ¨λ”©ν•˜κ³  μˆ˜μ‹ μžκ°€ 솑μž₯μ΄λ‚˜ λ‹€λ₯Έ 계약에 λͺ…μ‹œλœ μ •ν™•ν•œ κΈˆμ•‘μ„ 받아듀이기 μ›ν•˜λŠ” κ²½μš°μ— μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • DeliverMin β€” μˆ˜μ‹ μžλŠ” 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ²΄ν¬μ—μ„œ 받을 μ΅œμ†Œ κΈˆμ•‘μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜μ‹ μžκ°€ 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄, XRP LedgerλŠ” κ°€λŠ₯ν•œ 많이 μ „λ‹¬ν•˜λ €κ³  μ‹œλ„ν•˜κ³  항상 적어도 이 κΈˆμ•‘μ„ μ „λ‹¬ν•©λ‹ˆλ‹€. μˆ˜μ‹ μžμ—κ²Œ μž…κΈˆλ  수 μžˆλŠ” κΈˆμ•‘μ΄ μš”μ²­ν•œ κΈˆμ•‘ 이상이 μ•„λ‹ˆλΌλ©΄, νŠΈλžœμž­μ…˜μ€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

λ°œμ‹ μžκ°€ 체크λ₯Ό 컀버할 μΆ©λΆ„ν•œ μžκΈˆμ„ 가지고 있고 만료 μ‹œκ°„μ΄ 아직 μ§€λ‚˜μ§€ μ•Šμ•˜λ‹€λ©΄, μžκΈˆμ€ λ°œμ‹ μžμ˜ κ³„μ •μ—μ„œ 차감되고 μˆ˜μ‹ μžμ˜ κ³„μ •μœΌλ‘œ μž…κΈˆλ˜λ©°, 체크 κ°μ²΄λŠ” νŒŒκ΄΄λ©λ‹ˆλ‹€.

만료 κ²½μš°β€‹

만료의 경우, μ²΄ν¬λŠ” μ•„λž˜ κ·Έλ¦Όκ³Ό 같은 생애주기λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

checks_flow_expiration

λͺ¨λ“  μ²΄ν¬λŠ” λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ‹œμž‘ν•˜λ―€λ‘œ 단계 1κ³Ό 2λŠ” λ™μΌν•©λ‹ˆλ‹€.

단계 3a: μˆ˜μ‹ μžκ°€ 체크λ₯Ό ν˜„κΈˆν™”ν•˜κΈ° 전에 체크가 만료된 경우, μ²΄ν¬λŠ” 더 이상 ν˜„κΈˆν™”λ  수 μ—†μ§€λ§Œ κ°μ²΄λŠ” Ledger에 남아 μžˆμŠ΅λ‹ˆλ‹€.

단계 4a: 체크가 만료된 ν›„μ—λŠ” λˆ„κ΅¬λ“ μ§€ [CheckCancel][] νŠΈλžœμž­μ…˜μ„ μ œμΆœν•˜μ—¬ μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ νŠΈλžœμž­μ…˜μ€ 체크λ₯Ό Ledgerμ—μ„œ μ œκ±°ν•©λ‹ˆλ‹€.

체크의 JSON ν‘œν˜„β€‹

체크의 JSON ν‘œν˜„μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

{
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"TransactionType": "CheckCreate",
"Fee": "12",
"SendMax": "100000000",
"Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
"Expiration": 570113521,
"InvoiceID": "46060241FABCF692D4D934BA2A6C442898318206E51EDE1F824F300A",
"DestinationTag": 1,
"Sequence": 2
}

이 JSON μ½”λ“œλŠ” XRP Ledgerμ—μ„œ Checkλ₯Ό μƒμ„±ν•˜λŠ” TransactionType인 CheckCreateλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. AccountλŠ” 체크λ₯Ό λ§Œλ“œλŠ” 계정을, Destination은 체크λ₯Ό λ°›λŠ” 계정을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. SendMaxλŠ” μ²΄ν¬μ—μ„œ μΈμΆœν•  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. Expiration은 체크가 λ§Œλ£Œλ˜λŠ” μ‹œκ°„μ„ λ‚˜νƒ€λ‚΄λ©°, 이 μ‹œκ°„ μ΄ν›„λ‘œλŠ” 체크λ₯Ό μΈμΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€. InvoiceIDλŠ” 체크와 μ—°κ²°λœ 솑μž₯의 IDλ₯Ό, DestinationTagλŠ” λͺ©μ μ§€ 계정에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. SequenceλŠ” ν•΄λ‹Ή κ³„μ •μ—μ„œ λͺ‡ 번째 νŠΈλžœμž­μ…˜μΈμ§€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

체크 κ΄€λ ¨ νŠΈλžœμž­μ…˜ νƒ€μž…β€‹

체크와 κ΄€λ ¨λœ νŠΈλžœμž­μ…˜μ€ μ„Έ 가지 νƒ€μž…μ΄ μžˆμŠ΅λ‹ˆλ‹€: CheckCreate, CheckCash, CheckCancel. 각 νŠΈλžœμž­μ…˜ νƒ€μž…μ˜ μ‚¬μš© 방법과 주의 사항에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ΄…μ‹œλ‹€.

CheckCreate​

CheckCreate νŠΈλžœμž­μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 체크λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 체크λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 정보가 ν•„μš”ν•©λ‹ˆλ‹€:

  • Account : 체크λ₯Ό λ§Œλ“œλŠ” κ³„μ •μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€.
  • Destination : 체크λ₯Ό λ°›λŠ” κ³„μ •μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€.
  • SendMax : μ²΄ν¬μ—μ„œ μΈμΆœν•  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘μž…λ‹ˆλ‹€. 이 κΈˆμ•‘μ€ XRP λ˜λŠ” νŠΉμ • ν†΅ν™”λ‘œ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • Expiration (선택사항) : 체크가 λ§Œλ£Œλ˜λŠ” μ‹œκ°„μ„ λ‚˜νƒ€λ‚΄λŠ” λ¦¬ν”Œ νƒ€μž„μŠ€νƒ¬ν”„μž…λ‹ˆλ‹€.
  • InvoiceID (선택사항) : 체크와 μ—°κ²°λœ 솑μž₯의 IDμž…λ‹ˆλ‹€.
  • SourceTag (선택사항) : 원본 계정에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μˆ«μžμž…λ‹ˆλ‹€.
  • DestinationTag (선택사항) : λͺ©μ μ§€ 계정에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μˆ«μžμž…λ‹ˆλ‹€.

CheckCash​

CheckCash νŠΈλžœμž­μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 체크λ₯Ό ν˜„κΈˆν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 체크λ₯Ό ν˜„κΈˆν™”ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 정보가 ν•„μš”ν•©λ‹ˆλ‹€:

  • Account : 체크λ₯Ό ν˜„κΈˆν™”ν•˜λŠ” κ³„μ •μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€. 이 계정은 체크의 μˆ˜μ·¨μΈμ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • CheckID : ν˜„κΈˆν™”ν•  체크의 IDμž…λ‹ˆλ‹€.
  • Amount (선택사항) : μ²΄ν¬μ—μ„œ μΈμΆœν•˜λ €λŠ” κΈˆμ•‘μž…λ‹ˆλ‹€. 이 ν•„λ“œλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ DeliverMin ν•„λ“œλ₯Ό 지정해야 ν•©λ‹ˆλ‹€.
  • DeliverMin (선택사항) : μ²΄ν¬μ—μ„œ 받아듀일 μ΅œμ†Œ κΈˆμ•‘μž…λ‹ˆλ‹€. 이 ν•„λ“œλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ Amount ν•„λ“œλ₯Ό 지정해야 ν•©λ‹ˆλ‹€.

CheckCancel​

CheckCancel νŠΈλžœμž­μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 체크λ₯Ό μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 체크λ₯Ό μ·¨μ†Œν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 정보가 ν•„μš”ν•©λ‹ˆλ‹€:

  • Account : 체크λ₯Ό μ·¨μ†Œν•˜λŠ” κ³„μ •μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€. 이 계정은 체크의 μ†‘μ‹ μžμ΄κ±°λ‚˜ 만료된 체크의 μˆ˜μ·¨μΈμ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • CheckID : μ·¨μ†Œν•  체크의 IDμž…λ‹ˆλ‹€.

μ½”λ“œ κ΅¬ν˜„β€‹

XRP Ledgerμ—μ„œ Checkλ₯Ό μ‚¬μš©ν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€λ₯Ό λ‹€μŒκ³Ό 같이 κ°€μ •ν•˜μ—¬ μ½”λ“œλ‘œ κ΅¬ν˜„ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. AliceλŠ” Bobμ—κ²Œ 50 XRPλ₯Ό 보낼 μˆ˜ν‘œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  2. AliceλŠ” μˆ˜ν‘œλ₯Ό XRPL에 μ „μ†‘ν•©λ‹ˆλ‹€.
  3. a. Bob은 μˆ˜ν‘œλ₯Ό ν™•μΈν•˜κ³  ν˜„κΈˆμœΌλ‘œ κ΅ν™˜ν•©λ‹ˆλ‹€.
    b. Alice λ˜λŠ” Bob이 μˆ˜ν‘œλ₯Ό μ·¨μ†Œν•©λ‹ˆλ‹€.

μˆ˜ν‘œ 생성​

from xrpl.models.transactions import CheckCreate
from xrpl.wallet import Wallet
from xrpl.clients import JsonRpcClient
from xrpl.transaction import (
safe_sign_and_autofill_transaction,
safe_sign_and_submit_transaction,
)

JSON_RPC_URL = "https://s.altnet.rippletest.net:51234" # Ripple testnet JSON-RPC URL
alice_wallet = Wallet(seed="alice's seed", sequence=1) # Alice's wallet
bob_address = "bob's address" # Bob's address

client = JsonRpcClient(JSON_RPC_URL)

# Alice creates a check
check_create = CheckCreate(
account=alice_wallet.classic_address,
sequence=alice_wallet.sequence,
destination=bob_address,
send_max="50000000", # 50 XRP
)

# Alice signs and submits the CheckCreate transaction
response = safe_sign_and_submit_transaction(check_create, alice_wallet, client)

print(response.result["engine_result"]) # Output: tesSUCCESS

μˆ˜ν‘œ ν˜„κΈˆν™”β€‹

from xrpl.models.transactions import CheckCash
from xrpl.core.binarycodec import encode_for_signing_check_cash

bob_wallet = Wallet(seed="bob's seed", sequence=1) # Bob's wallet
check_id = response.result["hash"] # Check's ID

# Bob cashes the check
check_cash = CheckCash(
account=bob_wallet.classic_address,
sequence=bob_wallet.sequence,
check_id=check_id,
amount="50000000", # 50 XRP
)

# Bob signs and submits the CheckCash transaction
response = safe_sign_and_submit_transaction(check_cash, bob_wallet, client)

print(response.result["engine_result"]) # Output: tesSUCCESS

μˆ˜ν‘œ μ·¨μ†Œβ€‹

from xrpl.models.transactions import CheckCancel

# Alice cancels the check
check_cancel = CheckCancel(
account=alice_wallet.classic_address,
sequence=alice_wallet.sequence,
check_id=check_id, # ID of the check to be cancelled
)

# Alice signs and submits the CheckCancel transaction
response = safe_sign_and_submit_transaction(check_cancel, alice_wallet, client)

print(response.result["engine_result"]) # Output: tesSUCCESS