-
Notifications
You must be signed in to change notification settings - Fork 22
[draft] MD-117: Ximen (Postconfirmations) Standards #117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
l-monninger
wants to merge
9
commits into
main
Choose a base branch
from
l-monninger/ximen-standards
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
28cda4e
feat: ximen standards.
l-monninger 036f69a
add example
apenzk d5a1aa5
mermaid
apenzk 5eb7e81
add mermaid and update content
apenzk f4db1a8
attempt different figure
apenzk a771056
next attempt
apenzk 8aac4a5
final diagram updates
apenzk 99a0c06
apply review
apenzk 3df5248
Merge pull request #119 from movementlabsxyz/md/ximen-standards-updates
l-monninger File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| # MD-117: Ximen Standards for Postconfirmation protocols | ||
|
|
||
| - **Description**: Provides a set of liveness and correctness requirements for Postconfirmation protocols that may be more safety-favoring than the [Dongmen Standards](https://github.com/movementlabsxyz/MIP/pull/116). | ||
| - **Authors**: [Liam Monninger](mailto:[email protected]) | ||
| - **Approval**: | ||
| - **Etymology**: These standards were originally drafted as a planned but later alternative to the [Dongmen Standards](https://github.com/movementlabsxyz/MIP/pull/116) and so bear the name of a "younger" Taipei neighborhood, Ximen. | ||
|
|
||
| ## Overview | ||
|
|
||
| The [Dongmen Standards](https://github.com/movementlabsxyz/MIP/pull/116) (MD-116) acknowledge the inability of quasi-synchronous protocols to satisfy traditional BFT assumptions. These standards accept MD-116.D2,3 but reject [MD-116.D1](https://github.com/movementlabsxyz/MIP/tree/l-monninger/dongmen-standards/MD/md-n#d1-fully-synchronous) (quasi-synchronicity) instead proposing [MD-117.D1](#d1-partially-synchronous) (quasi-partial-synchronicity, defined in MD-116) in its place. | ||
|
|
||
| As a result, [MD-116.D4](https://github.com/movementlabsxyz/MIP/tree/l-monninger/dongmen-standards/MD/md-n#d4-minority-aware) (minority awareness) is no longer relevant. However, a request for a clear consideration of attacks on the indefinite nature of the agreement synchronicity is requested. | ||
|
|
||
| ## Definitions | ||
|
|
||
| - **Commitment Hostage Attack**: An adversarial strategy in which a network or participant delays confirmation of a block (or decision) indefinitely by exploiting asynchrony, forcing the protocol into a state of limbo. These attacks often require post-facto reasoning or off-path resolution to identify and mitigate. | ||
|
|
||
| - **Message Timing Attack**: A broader class of strategies in which an adversary manipulates message timing or node behavior to degrade the liveness or fairness of a consensus protocol, often without violating safety directly. | ||
|
|
||
| ## Desiderata | ||
|
|
||
| ### D1: Safety-favoring and quasi-partially-synchronous | ||
|
|
||
| **User journey**: Consumers of Ximen Postconfirmations consensus can rely on agreement to be achieved at some finite point in time w.r.t. to the confirming ledger. | ||
|
|
||
| **Justification**: | ||
| A quasi-partially synchronous protocol, as defined in [MD-116](https://github.com/movementlabsxyz/MIP/tree/l-monninger/dongmen-standards/MD/md-n), provides a way of changing the view on who decides the progress of the protocol. It is safety-favoring. | ||
|
|
||
| The requirement of **quasi-partial-synchronicity** means that for a given height, if a supermajority decision is not made by some time $\Delta$, a new committee will be elected for the protocol to make progress. However, it is not known when this progress will happen. | ||
|
|
||
| In essence this means that the protocol is **safety-favoring**, see Appendix [A1.2]() of [MD-116](https://github.com/movementlabsxyz/MIP/tree/l-monninger/dongmen-standards/MD/md-n), rather than liveness-favoring. This is because it does not render predictable points in time at which consensus will be known. However, by changing the committee, we give the protocol the chance to recover from an inactive committee. | ||
|
|
||
| ### D2: Describe attacks on indefinite quasi-asynchronicity | ||
|
|
||
| **User journey**: Consumers of Ximen Postconfirmations consensus can interpret a well-considered discussion of attacks on the indefinite nature of quasi-asynchronicity. For a given Ximen Postconfirmation protocol, best efforts should be made to mitigate these attacks. | ||
|
|
||
| **Justification**: The Ximen Standards seek to ensure common synchronicity attacks, such as [Commitment Hostage Attacks](https://github.com/movementlabsxyz/MIP/tree/main/MD/md-3), are well-considered for an adhering protocol. Owing to the complexity and often [off-path](https://economics.stackexchange.com/questions/57998/on-and-off-equilibrium-path-game-theory) nature of these attacks, the Ximen Standards recognize that full and rigorous criteria for protections against these attacks are not practical. | ||
|
|
||
| ## Appendix | ||
|
|
||
| ### A1: Example | ||
|
|
||
| We build on the example of [MD-116.A6.3](https://github.com/movementlabsxyz/MIP/tree/l-monninger/dongmen-standards/MD/md-n#a63-revotes-single-counting-with-propagation) to build a simple example of a protocol that satisfies the desiderata above. | ||
|
|
||
| We assume the protocol progresses through epochs, which we argue in this this example is similar to a view change. If the epoch changes, new voters must vote on the oldest not decided height. | ||
|
|
||
| We change step 2 of the algorithm to be: | ||
|
|
||
| 1. For each undecided height $h^+ < h$ | ||
| 1. If $\sigma(s_h^+) > \frac{2}{3}N$ AND $t \leq t_h^+ + \Delta$, accept the tuple $(s_h^+, h^+)$. Continue processing slot $h^++1$. | ||
| 3. Else Return | ||
|
|
||
| **What can go wrong?** | ||
|
|
||
| - Liveness may get stuck for epoch lengths. The L1 synchronizes the committee at epoch boundaries, and if enough committee members are honest and live eventually the protocol will be live again. | ||
|
|
||
| ```mermaid | ||
| graph TD | ||
| %% Subgraph for Fig 1 b | ||
| subgraph "Fig 1 b)" | ||
| s_0b["s_0"] --> s_1b["s_1"] | ||
| s_1b -->|70%| s_2b["s_2"] | ||
| s_1b -->|30%| s_2b'["s_2'"] | ||
| s_2b -->|70%| s_3b["s_3"] | ||
|
|
||
| style s_2b fill:#afa,stroke:#0a0,stroke-width:2px | ||
| style s_2b' fill:#afa,stroke:#0a0,stroke-width:2px | ||
| style s_3b fill:#afa,stroke:#0a0,stroke-width:2px | ||
| end | ||
|
|
||
| %% Subgraph for Fig 1 a | ||
| subgraph "Fig 1 a)" | ||
| s_0a["s_0"] -->|70%| s_1a["s_1"] | ||
| s_1a -->|50%| s_2a["s_2"] | ||
| s_1a -->|50%| s_2a'["s_2'"] | ||
| s_2a -->|50%| s_3a["s_3"] | ||
|
|
||
| style s_1a fill:#faa,stroke:#f00,stroke-width:2px | ||
| style s_2a fill:#faa,stroke:#f00,stroke-width:2px | ||
| style s_2a' fill:#faa,stroke:#f00,stroke-width:2px | ||
| style s_3a fill:#faa,stroke:#f00,stroke-width:2px | ||
| end | ||
| ``` | ||
|
|
||
| *Fig 1 a: Committee A (🟥 ). Time = Δ. Committee A (red) was active in time (0..Δ]. `s_1` gathers 70% of votes and will be committed. Votes for `s_2` and `s_2'` will be ignored.* | ||
|
|
||
| *Fig 1 b: Committee B (🟩 ). Time = 2Δ. Committee B (green) was active in time (Δ..2Δ]. `s_3` will be committed.* | ||
|
|
||
| ## Changelog | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So overall, this sort implies that joining or leaving the set of voters must be handled carefully and requires synchronisation with the rounds on the L2?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The committee is defined on the L1 and the L2 has the synchronize with the L1 iff there are fast confirmations. The number of rounds on the L2 to L1 mapping can be deterministic, e.g. every N L2blocks we submit a commitment to L1.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@l-monninger i think we need explain more on epoch change being equal to some sort of view change more. Essentially as the epoch rollover updates the committee there may come a time (GST) when there is a committee that is live again and has the same view on the L2.