From 8b5c5385c08303b8254830e700868bdd726b1a59 Mon Sep 17 00:00:00 2001 From: mDuo13 Date: Fri, 16 Oct 2020 14:04:07 -0700 Subject: [PATCH] Negative UNL diagrams, markers. --- ...negative-unl-1.uxf => negative-unl-01.uxf} | 130 ++-- ...negative-unl-2.uxf => negative-unl-02.uxf} | 0 ...negative-unl-4.uxf => negative-unl-04.uxf} | 0 ...negative-unl-5.uxf => negative-unl-06.uxf} | 0 ...negative-unl-7.uxf => negative-unl-07.uxf} | 0 ...negative-unl-9.uxf => negative-unl-09.uxf} | 0 .../consensus-network/negative-unl.md | 32 +- .../ledger-object-types/negativeunl.md | 1 + .../pseudo-transaction-types/unlmodify.md | 10 + dactyl-config.yml | 10 + img/negative-unl-01.svg | 299 +++++++++ img/negative-unl-02.svg | 342 +++++++++++ img/negative-unl-04.svg | 357 +++++++++++ img/negative-unl-06.svg | 579 ++++++++++++++++++ img/negative-unl-07.svg | 571 +++++++++++++++++ img/negative-unl-09.svg | 575 +++++++++++++++++ img/negative-unl-10.svg | 567 +++++++++++++++++ img/negative-unl-11.svg | 293 +++++++++ 18 files changed, 3679 insertions(+), 87 deletions(-) rename content/_img-sources/{negative-unl-1.uxf => negative-unl-01.uxf} (83%) rename content/_img-sources/{negative-unl-2.uxf => negative-unl-02.uxf} (100%) rename content/_img-sources/{negative-unl-4.uxf => negative-unl-04.uxf} (100%) rename content/_img-sources/{negative-unl-5.uxf => negative-unl-06.uxf} (100%) rename content/_img-sources/{negative-unl-7.uxf => negative-unl-07.uxf} (100%) rename content/_img-sources/{negative-unl-9.uxf => negative-unl-09.uxf} (100%) create mode 100644 img/negative-unl-01.svg create mode 100644 img/negative-unl-02.svg create mode 100644 img/negative-unl-04.svg create mode 100644 img/negative-unl-06.svg create mode 100644 img/negative-unl-07.svg create mode 100644 img/negative-unl-09.svg create mode 100644 img/negative-unl-10.svg create mode 100644 img/negative-unl-11.svg diff --git a/content/_img-sources/negative-unl-1.uxf b/content/_img-sources/negative-unl-01.uxf similarity index 83% rename from content/_img-sources/negative-unl-1.uxf rename to content/_img-sources/negative-unl-01.uxf index d71c86c365..5910a67e34 100644 --- a/content/_img-sources/negative-unl-1.uxf +++ b/content/_img-sources/negative-unl-01.uxf @@ -5,7 +5,7 @@ UMLClass 50 - 110 + 100 20 20 @@ -16,7 +16,7 @@ Text 40 - 40 + 30 270 30 @@ -28,13 +28,13 @@ Configured UNL UMLClass 360 - 80 + 70 310 220 -- To Disable: -*UnsteadyB* +(none) To Re-Enable: (none) @@ -48,7 +48,7 @@ Disabled: UMLClass 80 - 110 + 100 20 20 @@ -59,7 +59,7 @@ Disabled: UMLClass 110 - 110 + 100 20 20 @@ -70,7 +70,7 @@ Disabled: UMLClass 140 - 110 + 100 20 20 @@ -81,7 +81,7 @@ Disabled: UMLClass 170 - 110 + 100 20 20 @@ -92,7 +92,7 @@ Disabled: UMLClass 200 - 110 + 100 20 20 @@ -103,7 +103,7 @@ Disabled: UMLClass 230 - 110 + 100 20 20 @@ -114,7 +114,7 @@ Disabled: UMLClass 260 - 110 + 100 20 20 @@ -125,7 +125,7 @@ Disabled: UMLClass 50 - 150 + 140 20 20 @@ -136,7 +136,7 @@ Disabled: UMLClass 80 - 150 + 140 20 20 @@ -147,7 +147,7 @@ Disabled: UMLClass 110 - 150 + 140 20 20 @@ -158,7 +158,7 @@ Disabled: UMLClass 140 - 150 + 140 20 20 @@ -169,7 +169,7 @@ Disabled: UMLClass 170 - 150 + 140 20 20 @@ -180,7 +180,7 @@ Disabled: UMLClass 200 - 150 + 140 20 20 @@ -191,7 +191,7 @@ Disabled: UMLClass 230 - 150 + 140 20 20 @@ -202,7 +202,7 @@ Disabled: UMLClass 260 - 150 + 140 20 20 @@ -213,7 +213,7 @@ Disabled: UMLClass 50 - 190 + 180 20 20 @@ -224,7 +224,7 @@ Disabled: UMLClass 80 - 190 + 180 20 20 @@ -235,7 +235,7 @@ Disabled: UMLClass 110 - 190 + 180 20 20 @@ -246,7 +246,7 @@ Disabled: UMLClass 140 - 190 + 180 20 20 @@ -257,7 +257,7 @@ Disabled: UMLClass 170 - 190 + 180 20 20 @@ -268,7 +268,7 @@ Disabled: UMLClass 200 - 190 + 180 20 20 @@ -279,7 +279,7 @@ Disabled: UMLClass 230 - 190 + 180 20 20 @@ -290,7 +290,7 @@ Disabled: UMLClass 260 - 190 + 180 20 20 @@ -301,7 +301,7 @@ Disabled: UMLClass 50 - 230 + 220 20 20 @@ -312,7 +312,7 @@ Disabled: UMLClass 80 - 230 + 220 20 20 @@ -323,7 +323,7 @@ Disabled: UMLClass 110 - 230 + 220 20 20 @@ -334,7 +334,7 @@ Disabled: UMLClass 140 - 230 + 220 20 20 @@ -345,7 +345,7 @@ Disabled: UMLClass 170 - 230 + 220 20 20 @@ -356,7 +356,7 @@ Disabled: UMLClass 200 - 230 + 220 20 20 @@ -367,7 +367,7 @@ Disabled: UMLClass 230 - 230 + 220 20 20 @@ -378,19 +378,18 @@ Disabled: UMLClass 230 - 270 + 260 20 20 - lt=. -fg=gray + fg=gray UMLClass 50 - 270 + 260 20 20 @@ -401,7 +400,7 @@ fg=gray UMLClass 80 - 270 + 260 20 20 @@ -412,7 +411,7 @@ fg=gray UMLClass 110 - 270 + 260 20 20 @@ -423,7 +422,7 @@ fg=gray UMLClass 140 - 270 + 260 20 20 @@ -434,7 +433,7 @@ fg=gray UMLClass 170 - 270 + 260 20 20 @@ -445,19 +444,18 @@ fg=gray UMLClass 200 - 270 + 260 20 20 - lt=. -fg=gray + fg=gray Text 360 - 40 + 30 270 30 @@ -469,7 +467,7 @@ Negative UNL (on-ledger) UMLClass 40 - 80 + 70 250 220 @@ -481,7 +479,7 @@ lt=. UMLClass 40 - 80 + 70 250 180 @@ -489,40 +487,4 @@ lt=. lt=. - - Relation - - 200 - 280 - 40 - 70 - - lt=<- - 10.0;10.0;20.0;50.0 - - - Relation - - 230 - 280 - 40 - 70 - - lt=<- - 10.0;10.0;20.0;50.0 - - - UMLNote - - 210 - 330 - 130 - 70 - - MissingA and UnsteadyB go offline -bg=yellow -transparency=0 -style=wordwrap - - diff --git a/content/_img-sources/negative-unl-2.uxf b/content/_img-sources/negative-unl-02.uxf similarity index 100% rename from content/_img-sources/negative-unl-2.uxf rename to content/_img-sources/negative-unl-02.uxf diff --git a/content/_img-sources/negative-unl-4.uxf b/content/_img-sources/negative-unl-04.uxf similarity index 100% rename from content/_img-sources/negative-unl-4.uxf rename to content/_img-sources/negative-unl-04.uxf diff --git a/content/_img-sources/negative-unl-5.uxf b/content/_img-sources/negative-unl-06.uxf similarity index 100% rename from content/_img-sources/negative-unl-5.uxf rename to content/_img-sources/negative-unl-06.uxf diff --git a/content/_img-sources/negative-unl-7.uxf b/content/_img-sources/negative-unl-07.uxf similarity index 100% rename from content/_img-sources/negative-unl-7.uxf rename to content/_img-sources/negative-unl-07.uxf diff --git a/content/_img-sources/negative-unl-9.uxf b/content/_img-sources/negative-unl-09.uxf similarity index 100% rename from content/_img-sources/negative-unl-9.uxf rename to content/_img-sources/negative-unl-09.uxf diff --git a/content/concepts/consensus-network/negative-unl.md b/content/concepts/consensus-network/negative-unl.md index cd3b7ef1fb..9776cd6aeb 100644 --- a/content/concepts/consensus-network/negative-unl.md +++ b/content/concepts/consensus-network/negative-unl.md @@ -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.") }} diff --git a/content/references/rippled-api/ledger-data-formats/ledger-object-types/negativeunl.md b/content/references/rippled-api/ledger-data-formats/ledger-object-types/negativeunl.md index ef6ab117b9..13b6c230e3 100644 --- a/content/references/rippled-api/ledger-data-formats/ledger-object-types/negativeunl.md +++ b/content/references/rippled-api/ledger-data-formats/ledger-object-types/negativeunl.md @@ -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 diff --git a/content/references/rippled-api/transaction-formats/pseudo-transaction-types/unlmodify.md b/content/references/rippled-api/transaction-formats/pseudo-transaction-types/unlmodify.md index a143eb5c2d..bc22793c08 100644 --- a/content/references/rippled-api/transaction-formats/pseudo-transaction-types/unlmodify.md +++ b/content/references/rippled-api/transaction-formats/pseudo-transaction-types/unlmodify.md @@ -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. diff --git a/dactyl-config.yml b/dactyl-config.yml index dc502b6f91..adda5a58b6 100644 --- a/dactyl-config.yml +++ b/dactyl-config.yml @@ -5304,6 +5304,11 @@ pages: targets: - ja + - md: references/rippled-api/ledger-data-formats/ledger-object-types/negativeunl.md + targets: + - en + - ja + - md: references/rippled-api/ledger-data-formats/ledger-object-types/offer.md html: offer.html funnel: Build @@ -5922,6 +5927,11 @@ pages: targets: - ja + - md: references/rippled-api/transaction-formats/pseudo-transaction-types/unlmodify.md + targets: + - en + - ja + - md: references/rippled-api/transaction-formats/transaction-results/transaction-results.md html: transaction-results.html funnel: Build diff --git a/img/negative-unl-01.svg b/img/negative-unl-01.svg new file mode 100644 index 0000000000..2becb6446c --- /dev/null +++ b/img/negative-unl-01.svg @@ -0,0 +1,299 @@ + + +Quorum: 31/38Negative UNL (on-ledger)To Disable:(none)To Re-Enable:(none)Disabled:(none)Configured UNL diff --git a/img/negative-unl-02.svg b/img/negative-unl-02.svg new file mode 100644 index 0000000000..e529908333 --- /dev/null +++ b/img/negative-unl-02.svg @@ -0,0 +1,342 @@ + + +To Disable:UnsteadyBTo Re-Enable:(none)Disabled:(none)UnsteadyB ischosen to bedisabled.MissingA andUnsteadyB gooffline.Quorum: 31/38Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-04.svg b/img/negative-unl-04.svg new file mode 100644 index 0000000000..dd13e29352 --- /dev/null +++ b/img/negative-unl-04.svg @@ -0,0 +1,357 @@ + + +To Disable:MissingATo Re-Enable:(none)Disabled:UnsteadyBUnsteadyB getsmoved to theactively disabledlist.MissingA is nowalso scheduled tobe disabled.MissingA andUnsteadyB arestill offline.Quorum: 31/38Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-06.svg b/img/negative-unl-06.svg new file mode 100644 index 0000000000..0fe5f20de2 --- /dev/null +++ b/img/negative-unl-06.svg @@ -0,0 +1,579 @@ + + +To Disable:MissingATo Re-Enable:(none)Disabled:UnsteadyBQuorum: 30/37Effective UNLUnsteadyBcomes backonline, but it'scurrentlydisabledQuorum: 31/38Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-07.svg b/img/negative-unl-07.svg new file mode 100644 index 0000000000..520fe609f0 --- /dev/null +++ b/img/negative-unl-07.svg @@ -0,0 +1,571 @@ + + +To Disable:(none)To Re-Enable:UnsteadyBDisabled:UnsteadyBMissingAQuorum: 29/36Effective UNLMissingA ismoved to theDisabled list, asscheduled.UnsteadyB isscheduled to bere-enabled.Quorum: 31/38Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-09.svg b/img/negative-unl-09.svg new file mode 100644 index 0000000000..f3a81535e5 --- /dev/null +++ b/img/negative-unl-09.svg @@ -0,0 +1,575 @@ + + +To Disable:(none)To Re-Enable:(none)Disabled:MissingAQuorum: 30/37Effective UNLUnsteadyB isre-enabled, asscheduled.Quorum: 31/38Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-10.svg b/img/negative-unl-10.svg new file mode 100644 index 0000000000..2ac1324edf --- /dev/null +++ b/img/negative-unl-10.svg @@ -0,0 +1,567 @@ + + +To Disable:(none)To Re-Enable:MissingADisabled:MissingAQuorum: 30/37Effective UNLAdmins remove MissingAfrom their configuredUNLs. As a result, it'sscheduled to be removedfrom the Negative UNL.Quorum: 30/37Negative UNL (on-ledger)Configured UNL diff --git a/img/negative-unl-11.svg b/img/negative-unl-11.svg new file mode 100644 index 0000000000..bc08f79246 --- /dev/null +++ b/img/negative-unl-11.svg @@ -0,0 +1,293 @@ + + +To Disable:(none)To Re-Enable:(none)Disabled:(none)Quorum: 30/37Negative UNL (on-ledger)Configured UNL