Reliable tx submission diagram (draft)

This commit is contained in:
mDuo13
2019-03-13 20:27:49 -07:00
parent 52e63e9494
commit 36cc55e75a

View File

@@ -0,0 +1,666 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<zoom_level>10</zoom_level>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>80</y>
<w>180</w>
<h>90</h>
</coordinates>
<panel_attributes>Find the latest validated ledger index. Call this value A.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>40</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>540</x>
<y>30</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=initial</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>200</y>
<w>180</w>
<h>110</h>
</coordinates>
<panel_attributes>Construct transaction JSON including Sequence and LastLedgerSequence.
(LastLedgerSequence is &gt; A)
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>160</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>300</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>340</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>Sign transaction.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>420</y>
<w>180</w>
<h>130</h>
</coordinates>
<panel_attributes>Save transaction to persistent storage. Be sure to include the hash, Sequence, LastLedgerSequence, and the validated ledger index.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>380</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>540</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>490</x>
<y>0</y>
<w>160</w>
<h>30</h>
</coordinates>
<panel_attributes>New transaction
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>580</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>Submit transaction.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLTimer</id>
<coordinates>
<x>480</x>
<y>660</y>
<w>140</w>
<h>90</h>
</coordinates>
<panel_attributes>Wait ~4s for next
validated ledger</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>460</x>
<y>790</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>Check status of transaction by hash.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>740</y>
<w>30</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;50.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>530</x>
<y>880</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>830</y>
<w>30</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;50.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>560</x>
<y>880</y>
<w>220</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=&lt;-
[transaction is not
in a validated ledger]</panel_attributes>
<additional_attributes>200.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>910</y>
<w>180</w>
<h>130</h>
</coordinates>
<panel_attributes>lt=&lt;-
[transaction is
in a validated ledger]</panel_attributes>
<additional_attributes>10.0;110.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>460</x>
<y>1020</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>Save final outcome to persistent storage.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>540</x>
<y>1100</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>1060</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>530</x>
<y>1120</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>760</x>
<y>880</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>570</x>
<y>670</y>
<w>410</w>
<h>230</h>
</coordinates>
<panel_attributes>lt=&lt;-
r2=[latest validated leger \nis &lt; LastLedgerSequence]</panel_attributes>
<additional_attributes>10.0;10.0;210.0;10.0;210.0;210.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>770</x>
<y>910</y>
<w>280</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;-
r1=[latest validated leger \nis ≥ LastLedgerSequence]</panel_attributes>
<additional_attributes>260.0;50.0;10.0;50.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>1030</x>
<y>940</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1040</x>
<y>970</y>
<w>320</w>
<h>90</h>
</coordinates>
<panel_attributes>lt=&lt;-
[server has continuous ledger history
from A to LastLedgerSequence, inclusive]
</panel_attributes>
<additional_attributes>10.0;70.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>1030</x>
<y>1140</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1040</x>
<y>1100</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1060</x>
<y>710</y>
<w>300</w>
<h>270</h>
</coordinates>
<panel_attributes>lt=&lt;-
[server does not have
continuous ledger history
from A to LastLedgerSequence
(inclusive)]
</panel_attributes>
<additional_attributes>70.0;10.0;70.0;250.0;10.0;250.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>1020</x>
<y>660</y>
<w>180</w>
<h>60</h>
</coordinates>
<panel_attributes>Wait for gaps to fill in or ask a different server.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>770</x>
<y>670</y>
<w>270</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;10.0;250.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>970</x>
<y>1040</y>
<w>180</w>
<h>70</h>
</coordinates>
<panel_attributes>Look up account Sequence number in latest validated ledger.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>860</x>
<y>1140</y>
<w>190</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-
[Account Sequence is
less than or equal to
transaction Sequence]</panel_attributes>
<additional_attributes>10.0;20.0;170.0;20.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>770</x>
<y>1310</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=flow_final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>690</x>
<y>1120</y>
<w>180</w>
<h>80</h>
</coordinates>
<panel_attributes>Transaction has not been included in any validated ledger and never will be.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>690</x>
<y>1230</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>Save final outcome to persistent storage.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>770</x>
<y>1190</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>770</x>
<y>1270</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>760</x>
<y>1330</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>210</x>
<y>250</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=initial</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Text</id>
<coordinates>
<x>140</x>
<y>220</y>
<w>190</w>
<h>30</h>
</coordinates>
<panel_attributes>Recover from outage
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1060</x>
<y>1140</y>
<w>260</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-
[Account Sequence is
greater than transaction
Sequence]</panel_attributes>
<additional_attributes>240.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>1300</x>
<y>1130</y>
<w>180</w>
<h>80</h>
</coordinates>
<panel_attributes>Unknown transaction has been validated. Manual intervention recommended.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>140</x>
<y>300</y>
<w>180</w>
<h>80</h>
</coordinates>
<panel_attributes>Check persistent storage for transactions without a final outcome saved.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>210</x>
<y>260</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>210</x>
<y>370</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>200</x>
<y>410</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>230</x>
<y>420</y>
<w>210</w>
<h>110</h>
</coordinates>
<panel_attributes>lt=&lt;-
[final outcomes of
all transactions
are recorded]</panel_attributes>
<additional_attributes>70.0;90.0;70.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>280</x>
<y>530</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>290</x>
<y>510</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>0</x>
<y>420</y>
<w>240</w>
<h>250</h>
</coordinates>
<panel_attributes>lt=&lt;-
r2=[final outcomes of\nsome transactions\nare not recorded]
r2pos=-50,100</panel_attributes>
<additional_attributes>220.0;230.0;220.0;190.0;140.0;190.0;140.0;10.0;200.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>540</x>
<y>620</y>
<w>30</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>140</x>
<y>650</y>
<w>180</w>
<h>100</h>
</coordinates>
<panel_attributes>Repeat the following steps for each transaction without a final outcome recorded.
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>220</x>
<y>740</y>
<w>260</w>
<h>90</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>240.0;70.0;10.0;70.0;10.0;10.0</additional_attributes>
</element>
</diagram>