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