mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 03:35:51 +00:00
Negative UNL diagrams, markers.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>50</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -16,7 +16,7 @@
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>40</x>
|
||||
<y>40</y>
|
||||
<y>30</y>
|
||||
<w>270</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
@@ -28,13 +28,13 @@ Configured UNL</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>360</x>
|
||||
<y>80</y>
|
||||
<y>70</y>
|
||||
<w>310</w>
|
||||
<h>220</h>
|
||||
</coordinates>
|
||||
<panel_attributes>--
|
||||
To Disable:
|
||||
*UnsteadyB*
|
||||
(none)
|
||||
|
||||
To Re-Enable:
|
||||
(none)
|
||||
@@ -48,7 +48,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -59,7 +59,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>110</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -70,7 +70,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -81,7 +81,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>170</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -92,7 +92,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -103,7 +103,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -114,7 +114,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>260</x>
|
||||
<y>110</y>
|
||||
<y>100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -125,7 +125,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>50</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -136,7 +136,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -147,7 +147,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>110</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -158,7 +158,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -169,7 +169,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>170</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -180,7 +180,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -191,7 +191,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -202,7 +202,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>260</x>
|
||||
<y>150</y>
|
||||
<y>140</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -213,7 +213,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>50</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -224,7 +224,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -235,7 +235,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>110</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -246,7 +246,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -257,7 +257,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>170</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -268,7 +268,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -279,7 +279,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -290,7 +290,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>260</x>
|
||||
<y>190</y>
|
||||
<y>180</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -301,7 +301,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>50</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -312,7 +312,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -323,7 +323,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>110</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -334,7 +334,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -345,7 +345,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>170</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -356,7 +356,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -367,7 +367,7 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>230</y>
|
||||
<y>220</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -378,19 +378,18 @@ Disabled:
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=.
|
||||
fg=gray</panel_attributes>
|
||||
<panel_attributes>fg=gray</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>50</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -401,7 +400,7 @@ fg=gray</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>80</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -412,7 +411,7 @@ fg=gray</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>110</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -423,7 +422,7 @@ fg=gray</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -434,7 +433,7 @@ fg=gray</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>170</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
@@ -445,19 +444,18 @@ fg=gray</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>270</y>
|
||||
<y>260</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=.
|
||||
fg=gray</panel_attributes>
|
||||
<panel_attributes>fg=gray</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>360</x>
|
||||
<y>40</y>
|
||||
<y>30</y>
|
||||
<w>270</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
@@ -469,7 +467,7 @@ Negative UNL (on-ledger)</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>40</x>
|
||||
<y>80</y>
|
||||
<y>70</y>
|
||||
<w>250</w>
|
||||
<h>220</h>
|
||||
</coordinates>
|
||||
@@ -481,7 +479,7 @@ lt=.</panel_attributes>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>40</x>
|
||||
<y>80</y>
|
||||
<y>70</y>
|
||||
<w>250</w>
|
||||
<h>180</h>
|
||||
</coordinates>
|
||||
@@ -489,40 +487,4 @@ lt=.</panel_attributes>
|
||||
lt=.</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>280</y>
|
||||
<w>40</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;20.0;50.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>280</y>
|
||||
<w>40</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;20.0;50.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLNote</id>
|
||||
<coordinates>
|
||||
<x>210</x>
|
||||
<y>330</y>
|
||||
<w>130</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>MissingA and UnsteadyB go offline
|
||||
bg=yellow
|
||||
transparency=0
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
</diagram>
|
||||
@@ -3,6 +3,7 @@ html: negative-unl.html
|
||||
funnel: Build
|
||||
doc_type: Concepts
|
||||
category: Consensus Network
|
||||
status: not_enabled
|
||||
blurb: Understand how Negative UNL improves the ledger's resilience during partial outages.
|
||||
---
|
||||
# Negative UNL
|
||||
@@ -114,18 +115,43 @@ During the consensus process, validators in the parent ledger's Negative UNL are
|
||||
|
||||
### Example
|
||||
|
||||
**TODO: maybe a diagram or animation would help to visualize this?**
|
||||
|
||||
The following example demonstrates how the Negative UNL affects the consensus process:
|
||||
|
||||
1. Suppose your server's UNL consists of 38 trusted validators, so an 80% quorum is at least 31 of 38 trusted validators.
|
||||
|
||||
{{ include_svg("img/negative-unl-01.svg", "Diagram: Normal case: Negative UNL unused, quorum is 80% of configured validators.") }}
|
||||
|
||||
2. Imagine 2 of those validators, named MissingA and UnsteadyB, appear to have gone offline. (Both of them have reliability scores < 50%.) During the consensus process for ledger _N_, many of the remaining validators propose adding UnsteadyB to the negative UNL. The motion passes via a quorum of at least 31 of the remaining validators, and ledger _N_ becomes validated with UnsteadyB scheduled to be disabled.
|
||||
|
||||
{{ include_svg("img/negative-unl-02.svg", "Diagram: UnsteadyB is scheduled to be disabled.") }}
|
||||
|
||||
|
||||
3. For ledgers _N+1_ through _N+256_, the consensus process continues without changes.
|
||||
|
||||
4. In the next flag ledger, ledger _N+256_, UnsteadyB gets automatically moved from "scheduled" to the "disabled" list in the ledger. Also, since MissingA is still offline, a consensus of validators schedules MissingA to be disabled in the next flag ledger.
|
||||
|
||||
{{ include_svg("img/negative-unl-04.svg", "Diagram: UnsteadyB gets disabled and MissingA is scheduled to be disabled, too.") }}
|
||||
|
||||
5. For ledgers _N+257_ through _N+512_, the quorum is now 30 of 37 validators.
|
||||
|
||||
6. UnsteadyB comes back online in ledger _N+270_. It sends validation votes that agree with the rest of the network for ledgers _N+270_ through _N+511_, giving it a reliability score of > 80%.
|
||||
7. In the next flag ledger, _N+256_, MissingA gets automatically moved to the disabled list, as scheduled. Meanwhile, a consensus of validators schedule UnsteadyB to be removed from the Negative UNL.
|
||||
|
||||
{{ include_svg("img/negative-unl-06.svg", "Diagram: UnsteadyB comes back online, but it's still disabled.") }}
|
||||
|
||||
7. In the next flag ledger, _N+256_, MissingA gets automatically moved to the disabled list, as scheduled. Meanwhile, a consensus of validators schedule UnsteadyB to be removed from the Negative UNL, due to its improved reliability score.
|
||||
|
||||
{{ include_svg("img/negative-unl-07.svg", "Diagram: MissingA is disabled and UnsteadyB is scheduled to be re-enabled.") }}
|
||||
|
||||
8. For ledgers _N+513_ through _N+768_, the quorum is 29 of 36 validators. UnsteadyB continues to send validations stably while MissingA remains offline.
|
||||
|
||||
9. In flag ledger _N+768_, UnsteadyB gets automatically removed from the disabled list, as scheduled.
|
||||
|
||||
{{ include_svg("img/negative-unl-09.svg", "Diagram: UnsteadyB is removed from the disabled list.") }}
|
||||
|
||||
10. Eventually, you decide that MissingA is probably not coming back, so you remove it from your server's configured UNL. Your server starts proposing removing MissingA from the Negative UNL each flag ledger thereafter.
|
||||
|
||||
{{ include_svg("img/negative-unl-10.svg", "Diagram: After removing MissingA from the configured UNL, it's proposed for removal from the Negative UNL, too.") }}
|
||||
|
||||
11. As validator operators remove MissingA from their configured UNLs, their validators vote to also remove MissingA from the Negative UNL. When enough validators have done so, the proposal to remove MissingA achieves a consensus, and MissingA is scheduled, then finally removed from the Negative UNL.
|
||||
|
||||
{{ include_svg("img/negative-unl-11.svg", "Diagram: MissingA is removed from the Negative UNL.") }}
|
||||
|
||||
@@ -5,6 +5,7 @@ doc_type: References
|
||||
supercategory: rippled API
|
||||
category: Ledger Data Formats
|
||||
subcategory: Ledger Object Types
|
||||
status: not_enabled
|
||||
blurb: List of validators currently believed to be offline.
|
||||
---
|
||||
# NegativeUNL
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
---
|
||||
html: unlmodify.html
|
||||
funnel: Build
|
||||
doc_type: References
|
||||
supercategory: rippled API
|
||||
category: Transaction Formats
|
||||
subcategory: Pseudo-Transaction Types
|
||||
status: not_enabled
|
||||
blurb: Change the list of trusted validators currently considered offline.
|
||||
---
|
||||
# UNLModify
|
||||
|
||||
A `UNLModify` [pseudo-transaction](pseudo-transaction-types.html) marks a change to the [Negative UNL](negative-unl.html), indicating that a trusted validator has gone offline or come back online.
|
||||
|
||||
Reference in New Issue
Block a user