Files
xrpl-dev-portal/content/_img-sources/reliable-tx-submission.uxf
mDuo13 72002fd773 Support theme-aware diagrams:
- SVG diagrams can adapt to the visual theme of the site through CSS.
- Use the include_svg filter to include a diagram that adapts to the
  theme.
- The styles/_diagrams.scss file controls the color mappings for
  theme-aware digrams.
- Theme-aware diagrams are limited to specific colors and diagram
  styles. Use UMLet or Google Draw and confirm that the diagram is still
  legible when you build it.
- This commit updates existing diagrams in most places to be
  theme-aware.
2020-08-17 13:12:01 -07:00

690 lines
16 KiB
XML

<?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>160</x>
<y>60</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>50</x>
<y>50</y>
<w>130</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>110.0;50.0;10.0;50.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>50</x>
<y>40</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=initial</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>390</x>
<y>50</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>330</x>
<y>90</y>
<w>80</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>560</x>
<y>90</y>
<w>70</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>50.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>610</x>
<y>80</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>840</x>
<y>50</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>780</x>
<y>90</y>
<w>80</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1010</x>
<y>90</y>
<w>80</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>60.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>10</x>
<y>10</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>1070</x>
<y>80</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>1080</x>
<y>230</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>90</x>
<y>530</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>UMLSpecialState</id>
<coordinates>
<x>370</x>
<y>530</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>260</x>
<y>540</y>
<w>130</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>110.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>400</x>
<y>530</y>
<w>240</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-
[transaction not found,
or is found in a
non-validated ledger]</panel_attributes>
<additional_attributes>220.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>160</x>
<y>560</y>
<w>250</w>
<h>120</h>
</coordinates>
<panel_attributes>lt=&lt;-
[transaction is
in a validated ledger]</panel_attributes>
<additional_attributes>10.0;100.0;10.0;60.0;230.0;60.0;230.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>90</x>
<y>660</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>160</x>
<y>740</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>160</x>
<y>700</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>150</x>
<y>760</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>620</x>
<y>530</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>630</x>
<y>240</y>
<w>640</w>
<h>310</h>
</coordinates>
<panel_attributes>lt=&lt;-
r2=[latest validated ledger \nis &lt; LastLedgerSequence]
r2pos=20,5</panel_attributes>
<additional_attributes>550.0;10.0;620.0;10.0;620.0;270.0;10.0;270.0;10.0;290.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>650</x>
<y>540</y>
<w>240</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=&lt;-
r1=[latest validated ledger \nis ≥ LastLedgerSequence]
r1pos=-10,30</panel_attributes>
<additional_attributes>220.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>870</x>
<y>530</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>420</x>
<y>560</y>
<w>490</w>
<h>160</h>
</coordinates>
<panel_attributes>lt=&lt;-
[server has continuous ledger history
from A to LastLedgerSequence, inclusive]
</panel_attributes>
<additional_attributes>10.0;140.0;10.0;90.0;470.0;90.0;470.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>630</x>
<y>710</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>520</x>
<y>720</y>
<w>130</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>110.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>900</x>
<y>530</y>
<w>230</w>
<h>130</h>
</coordinates>
<panel_attributes>lt=&lt;-
[server does not
have continuous
ledger history
from A to
LastLedgerSequence
(inclusive)]
</panel_attributes>
<additional_attributes>210.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>1110</x>
<y>530</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>1240</x>
<y>240</y>
<w>90</w>
<h>330</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;10.0;70.0;10.0;70.0;310.0;50.0;310.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>350</x>
<y>700</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>240</x>
<y>740</y>
<w>430</w>
<h>140</h>
</coordinates>
<panel_attributes>lt=&lt;-
[Account Sequence is
less than or equal to
transaction Sequence]</panel_attributes>
<additional_attributes>10.0;120.0;10.0;70.0;410.0;70.0;410.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>690</x>
<y>880</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=flow_final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>200</x>
<y>860</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>450</x>
<y>870</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>370</x>
<y>880</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>80.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>620</x>
<y>880</y>
<w>90</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>70.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>680</x>
<y>900</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>50</x>
<y>220</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=initial</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Text</id>
<coordinates>
<x>10</x>
<y>190</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>660</x>
<y>710</y>
<w>240</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-
[Account Sequence is
greater than transaction
Sequence]</panel_attributes>
<additional_attributes>220.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>880</x>
<y>700</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>160</x>
<y>240</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>50</x>
<y>230</y>
<w>130</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>110.0;40.0;10.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>330</x>
<y>260</y>
<w>100</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>80.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>410</x>
<y>250</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes>type=decision</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>420</x>
<y>280</y>
<w>150</w>
<h>130</h>
</coordinates>
<panel_attributes>lt=&lt;-
[final outcomes of
all transactions
are recorded]</panel_attributes>
<additional_attributes>10.0;110.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>410</x>
<y>410</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>Done
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSpecialState</id>
<coordinates>
<x>420</x>
<y>390</y>
<w>20</w>
<h>20</h>
</coordinates>
<panel_attributes>type=final</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>440</x>
<y>250</y>
<w>230</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;-
[final outcomes of
some transactions
are not recorded]</panel_attributes>
<additional_attributes>210.0;20.0;10.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>1140</x>
<y>120</y>
<w>30</w>
<h>130</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;110.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>650</x>
<y>220</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>850</x>
<y>310</y>
<w>320</w>
<h>160</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>10.0;140.0;300.0;140.0;300.0;10.0</additional_attributes>
</element>
<element>
<id>UMLNote</id>
<coordinates>
<x>1080</x>
<y>700</y>
<w>230</w>
<h>230</h>
</coordinates>
<panel_attributes>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.</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>50</x>
<y>260</y>
<w>830</w>
<h>310</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>40.0;290.0;10.0;290.0;10.0;190.0;810.0;190.0;810.0;10.0;780.0;10.0</additional_attributes>
</element>
</diagram>