11 Relation 451 44 319 121 lt=<- 1. Payer: create channel (PaymentChannelCreate transaction) fg=#27a2db 10.0;90.0;10.0;10.0 UMLState 396 143 198 44 Channel is created UMLSpecialState 451 33 22 22 type=initial Relation 451 176 264 99 lt=<- 2. Payee: check channel state (account_channels command) 10.0;70.0;10.0;10.0 UMLState 396 253 198 44 Both parties are ready to use the channel Relation 484 286 242 99 lt=<- 3. Payer: sign claim(s) (channel_authorize method) 10.0;70.0;10.0;10.0 UMLState 396 363 198 44 Payer is ready to pay Relation 484 396 341 99 lt=<- 4. Payer: transmit signed claim to payee (using any communication method) 10.0;70.0;10.0;10.0 UMLState 396 473 198 44 Payment initiated Relation 484 506 242 121 lt=<- 5. Payee: Verify claim's signature and amount (channel_verify and account_channels method) 10.0;90.0;10.0;10.0 UMLState 396 605 198 44 Payment confirmed Relation 484 638 319 77 lt=<- 6. Payee: Provide goods and services 10.0;50.0;10.0;10.0 UMLState 396 693 198 44 Business transaction complete Relation 297 715 220 154 lt=<- 8. Payee: Redeem claim (PaymentChannelClaim transaction) Payee receives XRP if channel isn't expired. fg=#27a2db 10.0;120.0;10.0;10.0;90.0;10.0 UMLTimer 1100 242 176 121 Immutable Expiration ("CancelAfter" field) Relation 583 154 803 121 lt=<.. (Immutable expiration is defined by PaymentChannelCreate transaction) 550.0;80.0;550.0;10.0;10.0;10.0 UMLTimer 979 902 154 121 Mutable Expiration ("Expiration" field) UMLSpecialState 286 847 44 44 type=decision Relation 110 253 308 638 lt=<.. Payee's PaymentChannelClaim transaction did not use tfClose flag 260.0;10.0;10.0;10.0;10.0;560.0;160.0;560.0 UMLState 484 1111 231 88 Channel is closed and removed from ledger. Unclaimed XRP is returned to payer Relation 583 715 429 209 lt=<- 9a. Payer: request to close channel (PaymentChannelClaim transaction with tfClose flag) fg=#27a2db 210.0;170.0;210.0;10.0;10.0;10.0 Relation 1133 341 77 825 lt=<- 10.0;720.0;50.0;720.0;50.0;10.0 Relation 1045 1012 33 121 lt=<- 10.0;90.0;10.0;10.0 UMLState 957 1111 187 44 Channel is expired Relation 550 726 209 407 lt=<- 9b. Payee: request to close channel (PaymentChannelClaim transaction with tfClose flag) fg=#27a2db 10.0;350.0;10.0;10.0 UMLSpecialState 792 902 44 44 type=decision Relation 825 902 231 66 lt=<.. Channel has XRP left; sets Expiration 190.0;20.0;10.0;20.0 Relation 704 1111 275 88 lt=<- 10. Anyone: close channel (PaymentChannelClose or PaymentChannelFund transaction) fg=#27a2db 10.0;20.0;230.0;20.0 Relation 671 935 165 198 lt=<.. Channel is out of XRP 10.0;160.0;10.0;90.0;130.0;90.0;130.0;10.0 UMLSpecialState 396 1144 22 22 type=final Relation 407 1144 99 33 lt=<- 10.0;10.0;70.0;10.0 Relation 297 880 242 253 lt=<.. Payee's PaymentChannelClaim transaction used tfClose flag 200.0;210.0;200.0;130.0;10.0;130.0;10.0;10.0 Relation 847 297 231 627 lt=<.. (Mutable expiration can be updated by PaymentChannelFund transaction) 190.0;550.0;190.0;320.0;10.0;320.0;10.0;10.0 Relation 297 275 187 451 lt=<- 7. Repeat as desired 90.0;10.0;10.0;10.0;10.0;390.0;90.0;390.0 Relation 583 253 407 55 lt=<- Payer: Add more XRP to channel (PaymentChannelFund transaction) fg=#27a2db 10.0;10.0;110.0;10.0;110.0;30.0;10.0;30.0 UMLClass 121 22 231 231 Legend -- group=2 Relation 132 55 209 66 lt=<- Off-ledger step (happens as fast as can be calculated) group=2 170.0;20.0;10.0;20.0 Relation 132 121 209 66 lt=<- XRP Ledger transaction (needs 3-5 seconds for consensus) fg=#27a2db group=2 170.0;20.0;10.0;20.0 Relation 132 187 209 66 lt=<.. Transaction effect (happens as part of a previous step) group=2 170.0;20.0;10.0;20.0