10
UMLClass
160
60
180
90
Find the latest validated ledger index. Call this value A.
style=wordwrap
Relation
50
50
130
70
lt=<-
110.0;50.0;10.0;50.0;10.0;10.0
UMLSpecialState
50
40
20
20
type=initial
UMLClass
390
50
180
110
Construct transaction JSON including Sequence and LastLedgerSequence.
(LastLedgerSequence is > A)
style=wordwrap
Relation
330
90
80
30
lt=<-
60.0;10.0;10.0;10.0
Relation
560
90
70
30
lt=<-
50.0;10.0;10.0;10.0
UMLClass
610
80
180
50
Sign transaction.
style=wordwrap
UMLClass
840
50
180
130
Save transaction to persistent storage. Be sure to include the hash, Sequence, LastLedgerSequence, and the validated ledger index.
style=wordwrap
Relation
780
90
80
30
lt=<-
60.0;10.0;10.0;10.0
Relation
1010
90
80
30
lt=<-
60.0;10.0;10.0;10.0
Text
10
10
160
30
New transaction
style=wordwrap
UMLClass
1070
80
180
50
Submit transaction.
style=wordwrap
UMLTimer
1080
230
140
90
Wait ~4s for next
validated ledger
UMLClass
90
530
180
50
Check status of transaction by hash.
style=wordwrap
UMLSpecialState
370
530
40
40
type=decision
Relation
260
540
130
30
lt=<-
110.0;10.0;10.0;10.0
Relation
400
530
240
60
lt=<-
[transaction not found,
or is found in a
non-validated ledger]
220.0;20.0;10.0;20.0
Relation
160
560
250
120
lt=<-
[transaction is
in a validated ledger]
10.0;100.0;10.0;60.0;230.0;60.0;230.0;10.0
UMLClass
90
660
180
50
Save final outcome to persistent storage.
style=wordwrap
UMLSpecialState
160
740
20
20
type=final
Relation
160
700
30
60
lt=<-
10.0;40.0;10.0;10.0
Text
150
760
60
30
Done
style=wordwrap
UMLSpecialState
620
530
40
40
type=decision
Relation
630
240
640
310
lt=<-
r2=[latest validated ledger \nis < LastLedgerSequence]
r2pos=20,5
550.0;10.0;620.0;10.0;620.0;270.0;10.0;270.0;10.0;290.0
Relation
650
540
240
50
lt=<-
r1=[latest validated ledger \nis ≥ LastLedgerSequence]
r1pos=-10,30
220.0;10.0;10.0;10.0
UMLSpecialState
870
530
40
40
type=decision
Relation
420
560
490
160
lt=<-
[server has continuous ledger history
from A to LastLedgerSequence, inclusive]
10.0;140.0;10.0;90.0;470.0;90.0;470.0;10.0
UMLSpecialState
630
710
40
40
type=decision
Relation
520
720
130
30
lt=<-
110.0;10.0;10.0;10.0
Relation
900
530
230
130
lt=<-
[server does not
have continuous
ledger history
from A to
LastLedgerSequence
(inclusive)]
210.0;20.0;10.0;20.0
UMLClass
1110
530
180
60
Wait for gaps to fill in or ask a different server.
style=wordwrap
Relation
1240
240
90
330
lt=<-
10.0;10.0;70.0;10.0;70.0;310.0;50.0;310.0
UMLClass
350
700
180
70
Look up account Sequence number in latest validated ledger.
style=wordwrap
Relation
240
740
430
140
lt=<-
[Account Sequence is
less than or equal to
transaction Sequence]
10.0;120.0;10.0;70.0;410.0;70.0;410.0;10.0
UMLSpecialState
690
880
20
20
type=flow_final
UMLClass
200
860
180
80
Transaction has not been included in any validated ledger and never will be.
style=wordwrap
UMLClass
450
870
180
50
Save final outcome to persistent storage.
style=wordwrap
Relation
370
880
100
30
lt=<-
80.0;10.0;10.0;10.0
Relation
620
880
90
30
lt=<-
70.0;10.0;10.0;10.0
Text
680
900
60
30
Done
style=wordwrap
UMLSpecialState
50
220
20
20
type=initial
Text
10
190
190
30
Recover from outage
style=wordwrap
Relation
660
710
240
60
lt=<-
[Account Sequence is
greater than transaction
Sequence]
220.0;20.0;10.0;20.0
UMLClass
880
700
180
80
Unknown transaction has been validated. Manual intervention recommended.
style=wordwrap
UMLClass
160
240
180
80
Check persistent storage for transactions without a final outcome saved.
style=wordwrap
Relation
50
230
130
60
lt=<-
110.0;40.0;10.0;40.0;10.0;10.0
Relation
330
260
100
30
lt=<-
80.0;10.0;10.0;10.0
UMLSpecialState
410
250
40
40
type=decision
Relation
420
280
150
130
lt=<-
[final outcomes of
all transactions
are recorded]
10.0;110.0;10.0;10.0
Text
410
410
60
30
Done
style=wordwrap
UMLSpecialState
420
390
20
20
type=final
Relation
440
250
230
60
lt=<-
[final outcomes of
some transactions
are not recorded]
210.0;20.0;10.0;20.0
Relation
1140
120
30
130
lt=<-
10.0;110.0;10.0;10.0
UMLClass
650
220
180
100
Repeat the following steps for each transaction without a final outcome recorded.
style=wordwrap
Relation
850
310
320
160
lt=<-
10.0;140.0;300.0;140.0;300.0;10.0
UMLNote
1080
700
230
230
bg=yellow
transparency=0
style=wordwrap
Some reasons an unknown transaction may have been validated:
- The transaction was malleable and succeeded with a different hash.
- A different program or person with your secret key is also sending transactions from the same account.
- You previously sent a transaction, but lost your record of it.
Relation
50
260
830
310
lt=<-
40.0;290.0;10.0;290.0;10.0;190.0;810.0;190.0;810.0;10.0;780.0;10.0