From 2ce0433002c673326465ae3f0e929a9c09eabe8d Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 10:01:14 +0200 Subject: [PATCH 01/28] docs: update recap day 3 --- docs/workshop/day-3-recap.md | 323 ++++++++++++++++++++++++++++++++++- 1 file changed, 321 insertions(+), 2 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 3dd6013f2..10e164fb0 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -4,9 +4,328 @@ Agenda [1. First Full Leios Simulation Analysis](https://github.com/input-output-hk/ouroboros-leios/blob/main/analysis/sims/2025w13/analysis.ipynb) -2. Optimistic Ledger State Options +2. Optimistic Ledger State References 3. Community > [!Note] -> Check again later this week. \ No newline at end of file +> Check again later this week. + +## 2. Optimistic Ledger State References + +The discussion focused on different approaches for handling optimistic ledger state references in the Leios protocol. The core problem is how to validate Input Blocks (IBs) against a ledger state that is not yet settled in a Ranking Block (RB). This is essential for enabling transaction chaining, where new transactions can build upon the outputs of previous transactions that haven't yet been settled in a stable chain state, striking a careful balance between security and latency. + +### Problem Statement + +Validating an Input Block (IB) requires a reference to a ledger state that can be used to verify the validity of its transactions. The choice of this reference state involves a fundamental trade-off between security and latency. The most secure approach is to reference the RB from k blocks ago (the stability horizon in Praos), where k represents the length of the volatile suffix. This provides perfect security as we can be confident that such blocks will be included in all possible futures of the chain. However, this approach introduces significant latency (potentially hours), making it impractical for many use cases that require quick transaction confirmation. + +As we move to more recent blocks to reduce latency, we face increasing security challenges. Not every node in the network may have seen the same recent blocks due to network latency or temporary forks. For example, if an IB references the most recent RB, nodes that haven't received that RB yet cannot validate the IB. This creates a coordination problem where we need to ensure that the reference state is available to enough nodes to reach consensus on IB validity. + +### Validation Requirements + +For an IB to be valid, it must be validated against a ledger state that: +1. Is available to a majority of nodes in the network +2. Has sufficient security guarantees (e.g., certified or stable) +3. Contains all necessary UTXOs and account states for transaction validation + +The validation process requires: +- A deterministic way to reconstruct the ledger state +- Agreement among nodes about which state to use for validation +- Ability to handle cases where different nodes might have different views of the chain + +This is particularly challenging because: +- Nodes may be at different points in the chain due to network conditions +- Short forks can create temporary inconsistencies +- The need for low latency conflicts with the need for stable reference points +- The stability horizon (k blocks) provides perfect security but introduces impractical latency + +The trade-off between security and latency is fundamental: +- Using the stability horizon (k blocks back) provides perfect security but high latency +- Using more recent blocks reduces latency but requires additional mechanisms to ensure security +- Certified Endorsement Blocks (EBs) offer a middle ground, providing security guarantees with lower latency than the stability horizon + +### Approaches + +| Approach | Description | Pros | Cons | +|----------|-------------|------|------| +| RB Reference | IBs reference an older RB | - Simple to understand
- High security guarantees | - High latency
- Impractical for recent UTXOs | +| EB Reference | IBs reference a certified Endorsement Block (EB) | - Lower latency than RB reference
- Certified EBs provide stability | - Need to handle EB ordering
- More complex state management | +| IB Reference | IBs reference other IBs | - Lowest possible latency
- Most flexible | - Highest complexity
- Security challenges
- Harder to validate | + +### Data Flow Diagrams + +```d2 +title: { + label: "RB Reference Approach" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +# Styles +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#ffd700" # Gold color for RBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + ib: { + style: { + stroke: "#2a2a2a" + fill: "#90EE90" # Light green for IBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + reference: { + style: { + stroke: "#1a73e8" + fill: "#e8f0fe" + font-color: "#1a73e8" + border-radius: 15 + bold: true + } + } +} + +# Blocks +RB1: { + class: rb + label: "RB1\n(Stable)" +} + +RB2: { + class: rb + label: "RB2\n(Stable)" +} + +IB1: { + class: ib + label: "IB1" +} + +IB2: { + class: ib + label: "IB2" +} + +# References +IB1 -> RB1: "References" +IB2 -> RB1: "References" + +# Note +note: { + class: reference + label: "High Latency\nBut Simple" +} + +# Layout +direction: right +``` + +```d2 +title: { + label: "EB Reference Approach" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +# Styles +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#ffd700" # Gold color for RBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + eb: { + style: { + stroke: "#2a2a2a" + fill: "#87CEEB" # Sky blue for EBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + ib: { + style: { + stroke: "#2a2a2a" + fill: "#90EE90" # Light green for IBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + reference: { + style: { + stroke: "#1a73e8" + fill: "#e8f0fe" + font-color: "#1a73e8" + border-radius: 15 + bold: true + } + } +} + +# Blocks +RB1: { + class: rb + label: "RB1\n(Stable)" +} + +EB1: { + class: eb + label: "EB1\n(Certified)" +} + +EB2: { + class: eb + label: "EB2\n(Certified)" +} + +IB1: { + class: ib + label: "IB1" +} + +IB2: { + class: ib + label: "IB2" +} + +# References +EB1 -> RB1: "References" +EB2 -> EB1: "References" +IB1 -> EB1: "References" +IB2 -> EB2: "References" + +# Note +note: { + class: reference + label: "Balanced Latency\nAnd Security" +} + +# Layout +direction: right +``` + +```d2 +title: { + label: "IB Reference Approach" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +# Styles +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#ffd700" # Gold color for RBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + ib: { + style: { + stroke: "#2a2a2a" + fill: "#90EE90" # Light green for IBs + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + shadow: true + } + } + reference: { + style: { + stroke: "#1a73e8" + fill: "#e8f0fe" + font-color: "#1a73e8" + border-radius: 15 + bold: true + } + } +} + +# Blocks +RB1: { + class: rb + label: "RB1\n(Stable)" +} + +IB1: { + class: ib + label: "IB1" +} + +IB2: { + class: ib + label: "IB2" +} + +IB3: { + class: ib + label: "IB3" +} + +# References +IB1 -> RB1: "References" +IB2 -> IB1: "References" +IB3 -> IB2: "References" + +# Note +note: { + class: reference + label: "Lowest Latency\nBut Insecure" +} + +# Layout +direction: right +``` + +### Key Considerations + +1. **Security vs Latency Trade-off**: Each approach represents a different balance between security guarantees and latency reduction. + +2. **State Management**: The certified EB reference approach requires careful management of EB ordering and state reconstruction, but provides a good balance of security and latency. + +3. **Certification**: Certified EBs provide stability similar to RBs but with lower latency, making them a promising middle ground. + +4. **Implementation Complexity**: The IB reference approach, while offering the lowest latency, introduces significant complexity in validation and security guarantees. + +### Next Steps + +1. Further analysis of the EB reference approach, particularly around: + - EB ordering mechanisms + - State reconstruction efficiency + - Security guarantees + +2. Simulation studies to quantify: + - Latency improvements + - State management overhead + - Security properties + +3. Consider hybrid approaches that combine elements from different strategies based on specific use cases. \ No newline at end of file From d947da30a67b3b27306039cf0cceeb9cb2507b84 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 10:11:23 +0200 Subject: [PATCH 02/28] docs: updated approach table --- docs/workshop/day-3-recap.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 10e164fb0..b69cf38ef 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -46,11 +46,13 @@ The trade-off between security and latency is fundamental: ### Approaches -| Approach | Description | Pros | Cons | -|----------|-------------|------|------| -| RB Reference | IBs reference an older RB | - Simple to understand
- High security guarantees | - High latency
- Impractical for recent UTXOs | -| EB Reference | IBs reference a certified Endorsement Block (EB) | - Lower latency than RB reference
- Certified EBs provide stability | - Need to handle EB ordering
- More complex state management | -| IB Reference | IBs reference other IBs | - Lowest possible latency
- Most flexible | - Highest complexity
- Security challenges
- Harder to validate | +Each of the following approaches describes a solution where an Input Block (IB) references a different block variant which provides a ledger reference for validation. + +| Reference | Description | Security | Latency | Implementation Complexity | +|-----------|-------------|----------|---------|--------------------------| +| RB | IBs reference an older RB | Best | Worst | Best | +| EB | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | +| IB | IBs reference other IBs | Worst | Best | Worst | ### Data Flow Diagrams From bdc5a9604e3c8fb56051fa169dac284279a4dd6c Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 10:13:33 +0200 Subject: [PATCH 03/28] docs: updated approach table --- docs/workshop/day-3-recap.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index b69cf38ef..3314a0859 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -48,11 +48,11 @@ The trade-off between security and latency is fundamental: Each of the following approaches describes a solution where an Input Block (IB) references a different block variant which provides a ledger reference for validation. -| Reference | Description | Security | Latency | Implementation Complexity | -|-----------|-------------|----------|---------|--------------------------| -| RB | IBs reference an older RB | Best | Worst | Best | -| EB | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | -| IB | IBs reference other IBs | Worst | Best | Worst | +| Reference | Description | Security | Latency | Implementation
Complexity | Computational
Cost | +|-----------|-------------|----------|---------|--------------------------|-------------------| +| RB | IBs reference an older RB | Best | Worst | Best | Min | +| EB | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | Medium | +| IB | IBs reference other IBs | Worst | Best | Worst | Max | ### Data Flow Diagrams From a41a6503abc454753f286fed986c76c61ee09976 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 10:48:25 +0200 Subject: [PATCH 04/28] docs: remove d2 code and replace by embedded svg; add note for computational work for ledger states --- docs/workshop/day-3-recap.md | 257 +---------------------------------- 1 file changed, 7 insertions(+), 250 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 3314a0859..5a6495966 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -54,259 +54,16 @@ Each of the following approaches describes a solution where an Input Block (IB) | EB | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | Medium | | IB | IBs reference other IBs | Worst | Best | Worst | Max | -### Data Flow Diagrams - -```d2 -title: { - label: "RB Reference Approach" - near: top-center - style.font-size: 24 - style.bold: true - style.fill: "#ffffff" - style.stroke: "#ffffff" -} - -# Styles -classes: { - rb: { - style: { - stroke: "#2a2a2a" - fill: "#ffd700" # Gold color for RBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - ib: { - style: { - stroke: "#2a2a2a" - fill: "#90EE90" # Light green for IBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - reference: { - style: { - stroke: "#1a73e8" - fill: "#e8f0fe" - font-color: "#1a73e8" - border-radius: 15 - bold: true - } - } -} - -# Blocks -RB1: { - class: rb - label: "RB1\n(Stable)" -} - -RB2: { - class: rb - label: "RB2\n(Stable)" -} - -IB1: { - class: ib - label: "IB1" -} - -IB2: { - class: ib - label: "IB2" -} - -# References -IB1 -> RB1: "References" -IB2 -> RB1: "References" - -# Note -note: { - class: reference - label: "High Latency\nBut Simple" -} - -# Layout -direction: right -``` - -```d2 -title: { - label: "EB Reference Approach" - near: top-center - style.font-size: 24 - style.bold: true - style.fill: "#ffffff" - style.stroke: "#ffffff" -} - -# Styles -classes: { - rb: { - style: { - stroke: "#2a2a2a" - fill: "#ffd700" # Gold color for RBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - eb: { - style: { - stroke: "#2a2a2a" - fill: "#87CEEB" # Sky blue for EBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - ib: { - style: { - stroke: "#2a2a2a" - fill: "#90EE90" # Light green for IBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - reference: { - style: { - stroke: "#1a73e8" - fill: "#e8f0fe" - font-color: "#1a73e8" - border-radius: 15 - bold: true - } - } -} - -# Blocks -RB1: { - class: rb - label: "RB1\n(Stable)" -} - -EB1: { - class: eb - label: "EB1\n(Certified)" -} - -EB2: { - class: eb - label: "EB2\n(Certified)" -} - -IB1: { - class: ib - label: "IB1" -} - -IB2: { - class: ib - label: "IB2" -} - -# References -EB1 -> RB1: "References" -EB2 -> EB1: "References" -IB1 -> EB1: "References" -IB2 -> EB2: "References" - -# Note -note: { - class: reference - label: "Balanced Latency\nAnd Security" -} - -# Layout -direction: right -``` - -```d2 -title: { - label: "IB Reference Approach" - near: top-center - style.font-size: 24 - style.bold: true - style.fill: "#ffffff" - style.stroke: "#ffffff" -} - -# Styles -classes: { - rb: { - style: { - stroke: "#2a2a2a" - fill: "#ffd700" # Gold color for RBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - ib: { - style: { - stroke: "#2a2a2a" - fill: "#90EE90" # Light green for IBs - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - shadow: true - } - } - reference: { - style: { - stroke: "#1a73e8" - fill: "#e8f0fe" - font-color: "#1a73e8" - border-radius: 15 - bold: true - } - } -} - -# Blocks -RB1: { - class: rb - label: "RB1\n(Stable)" -} - -IB1: { - class: ib - label: "IB1" -} - -IB2: { - class: ib - label: "IB2" -} - -IB3: { - class: ib - label: "IB3" -} +> [!Note] +> The choice of referenceable ledger states cannot be arbitrary, not only due to security considerations but also due to practical system constraints. Maintaining too many potential reference states would lead to excessive memory usage and computational overhead as each node would need to track and validate multiple parallel ledger states. This creates a natural tension between flexibility in reference selection and system efficiency. -# References -IB1 -> RB1: "References" -IB2 -> IB1: "References" -IB3 -> IB2: "References" +### Data Flow Diagrams -# Note -note: { - class: reference - label: "Lowest Latency\nBut Insecure" -} +#### RB Reference Approach +![RB Reference Approach](rb-reference.svg) -# Layout -direction: right -``` +#### EB Reference Approach +![EB Reference Approach](eb-reference.svg) ### Key Considerations From f0b9c8cf1557a3204b9967b7ee4df1084ec31d75 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 12:19:54 +0200 Subject: [PATCH 05/28] docs: add ib ref rb diagram --- docs/workshop/rb-reference.d2 | 136 +++++++++++++++++++++++++++++++++ docs/workshop/rb-reference.svg | 120 +++++++++++++++++++++++++++++ 2 files changed, 256 insertions(+) create mode 100644 docs/workshop/rb-reference.d2 create mode 100644 docs/workshop/rb-reference.svg diff --git a/docs/workshop/rb-reference.d2 b/docs/workshop/rb-reference.d2 new file mode 100644 index 000000000..fdaa6e8d9 --- /dev/null +++ b/docs/workshop/rb-reference.d2 @@ -0,0 +1,136 @@ +title: { + label: "RB Reference Approach" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +# Styles +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + rb_stacked: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + multiple: true + } + } + ib: { + style: { + stroke: "#aaaaaa" + fill: "#FFFACD" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + horizon: { + style: { + stroke-dash: 7 + stroke: "#2a2a2a" + } + } + container: { + style: { + stroke: "#dedede" + fill: "#f5f5f5" + font-color: "#666666" + font-size: 16 + border-radius: 8 + } + } + rb_arrow: { + style: { + stroke: "#2a2a2a" + } + } + ib_arrow: { + style: { + stroke: "#aaaaaa" + } + } +} + +# Blocks with explicit positioning + +stable: { + label: "Stable chain prefix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(genesis, tip-k-2)" + } + + RB: { + class: rb + label: "RB\n(tip-k-1)" + } +} + +volatile: { + label: "Volatile chain suffix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(tip-k, tip-2)" + } + + RB1: { + class: rb + label: "RB\n(tip-1)" + } + + RB: { + class: rb + label: "RB\n(tip)" + } +} + +IB1: { + class: ib + label: "IB 1" +} + +IB2: { + class: ib + label: "IB 2" +} + +# References with explicit direction +volatile.RB -> volatile.RB1: { + class: rb_arrow +} +volatile.RB1 -> volatile.RBs: { + class: rb_arrow +} +volatile.RBs -> stable.RB: { + class: rb_arrow +} +stable.RB -> stable.RBs: { + class: rb_arrow +} + +IB1 -> stable.RB: "Highest latency\nmost secure" { + class: ib_arrow +} + +IB2 -> volatile.RB: "Lowest latency\nleast secure" { + class: ib_arrow +} + +direction: left diff --git a/docs/workshop/rb-reference.svg b/docs/workshop/rb-reference.svg new file mode 100644 index 000000000..def8ad47d --- /dev/null +++ b/docs/workshop/rb-reference.svg @@ -0,0 +1,120 @@ +RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure + + + + + + + + + + + + + + From 9a7ea9205d06007a56a75673d3e72828532d470e Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 12:25:13 +0200 Subject: [PATCH 06/28] docs: add links to diagrams & note for IB-to-IB ref approach --- docs/workshop/day-3-recap.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 5a6495966..91054177c 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -50,9 +50,9 @@ Each of the following approaches describes a solution where an Input Block (IB) | Reference | Description | Security | Latency | Implementation
Complexity | Computational
Cost | |-----------|-------------|----------|---------|--------------------------|-------------------| -| RB | IBs reference an older RB | Best | Worst | Best | Min | -| EB | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | Medium | -| IB | IBs reference other IBs | Worst | Best | Worst | Max | +| [RB](#rb-reference-approach) | IBs reference an older RB | Best | Worst | Best | Min | +| [EB](#eb-reference-approach) | IBs reference a certified Endorsement Block (EB) | Medium | Medium | Medium | Medium | +| [IB](#) | IBs reference other IBs | Worst | Best | Worst | Max | > [!Note] > The choice of referenceable ledger states cannot be arbitrary, not only due to security considerations but also due to practical system constraints. Maintaining too many potential reference states would lead to excessive memory usage and computational overhead as each node would need to track and validate multiple parallel ledger states. This creates a natural tension between flexibility in reference selection and system efficiency. @@ -65,6 +65,15 @@ Each of the following approaches describes a solution where an Input Block (IB) #### EB Reference Approach ![EB Reference Approach](eb-reference.svg) +#### IB Reference Approach + +> [!Warning] +> We have not discussed this approach further and decided against progressing on it as it does not +> meet the security requirements. It also comes with a high implementation complexity and +> computational overhead. The IB reference approach would require maintaining multiple speculative +> ledger states, creating potential for state explosion and significantly increasing validation costs +> without providing adequate security guarantees. + ### Key Considerations 1. **Security vs Latency Trade-off**: Each approach represents a different balance between security guarantees and latency reduction. From c5c2d5ec79607263ca3a9f381fea0a29cbd122ef Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 13:20:27 +0200 Subject: [PATCH 07/28] docs: add direct eb ref approach --- docs/workshop/day-3-recap.md | 25 ++++- docs/workshop/eb-reference-01.d2 | 180 ++++++++++++++++++++++++++++++ docs/workshop/eb-reference-01.svg | 120 ++++++++++++++++++++ 3 files changed, 320 insertions(+), 5 deletions(-) create mode 100644 docs/workshop/eb-reference-01.d2 create mode 100644 docs/workshop/eb-reference-01.svg diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 91054177c..7aed236c7 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -4,13 +4,10 @@ Agenda [1. First Full Leios Simulation Analysis](https://github.com/input-output-hk/ouroboros-leios/blob/main/analysis/sims/2025w13/analysis.ipynb) -2. Optimistic Ledger State References +[2. Optimistic Ledger State References](#2-optimistic-ledger-state-references) 3. Community -> [!Note] -> Check again later this week. - ## 2. Optimistic Ledger State References The discussion focused on different approaches for handling optimistic ledger state references in the Leios protocol. The core problem is how to validate Input Blocks (IBs) against a ledger state that is not yet settled in a Ranking Block (RB). This is essential for enabling transaction chaining, where new transactions can build upon the outputs of previous transactions that haven't yet been settled in a stable chain state, striking a careful balance between security and latency. @@ -63,7 +60,25 @@ Each of the following approaches describes a solution where an Input Block (IB) ![RB Reference Approach](rb-reference.svg) #### EB Reference Approach -![EB Reference Approach](eb-reference.svg) + +The EB reference approach offers a middle ground between security and latency. Certified EBs (those that have received votes from a majority of stake) provide security guarantees with lower latency than the [RB-reference approach](#rb-reference-approach), as they indicate that enough nodes have seen and validated them. Several core variations of the EB reference approach were discussed: + +1. **Direct EB Reference**: IBs directly reference certified EBs, which themselves reference an older RB. +![EB Reference Approach](eb-reference-01.svg) + +2. **EB Chain Reference**: IBs reference a chain of certified EBs, where each EB references a previous EB, creating a chain of references back to an RB. This approach allows for more recent state references and covers edge cases where multiple certified EBs have been produced in parallel in the recent past. + +3. **RB + EB Hybrid Reference**: IBs can reference either an RB or a certified EB, with the EB itself referencing an older RB. This provides flexibility while ensuring security. This was regarded as a bootstrap mechanism. + +**Extensions and Implementation Details:** + +- **Minimum Age Requirement**: A constraint where EBs must reference an RB that is at least a certain age (e.g., 5 minutes old) to ensure it's widely available in the network. + +- **EB Ordering by Slot**: In the Leios protocol, multiple pipelines run in parallel, each ideally producing one RB. With parameters set for 1.5 EBs per stage (with randomness via VRF functions potentially producing more), there may be multiple EBs to choose from for inclusion in an RB. This approach orders EBs by slot number and VRF hash, with a predefined ordering function to resolve conflicts when multiple EBs exist for the same slot or from different pipelines. + +- **Orphan Prevention**: A mechanism where RBs should not include EBs that reference orphaned EBs (those not included in previous RBs), helping to maintain a clear reference chain across pipelines. + +- **EB State Reuse**: An optimization technique where, when computing ledger states for EBs in a chain, we reuse the ledger state from referenced EBs and only replay the IBs in the current EB, reducing computational overhead, especially important when dealing with multiple pipelines and stages. #### IB Reference Approach diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 new file mode 100644 index 000000000..bda6e63c2 --- /dev/null +++ b/docs/workshop/eb-reference-01.d2 @@ -0,0 +1,180 @@ +title: { + label: "Direct certified EB Reference Approach" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +# Styles +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + rb_stacked: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + multiple: true + } + } + eb: { + style: { + stroke: "#aaaaaa" + fill: "#FFE4C4" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + ib: { + style: { + stroke: "#aaaaaa" + fill: "#FFFACD" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + container: { + style: { + stroke: "#dedede" + fill: "#f5f5f5" + font-color: "#666666" + font-size: 16 + border-radius: 8 + } + } + rb_arrow: { + style: { + stroke: "#2a2a2a" + } + } + eb_cert: { + style: { + stroke: "#2a2a2a" + stroke-dash: 7 + } + } + ib_arrow: { + style: { + stroke: "#aaaaaa" + } + } +} + +# Blocks with explicit positioning + +volatile: { + label: "Volatile chain suffix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(tip-k, tip-3)" + } + + RB2: { + class: rb + label: "RB\n(tip-2)" + } + + RB1: { + class: rb + label: "RB\n(tip-1)" + } + + RB: { + class: rb + label: "RB\n(tip)" + } +} + +EB1: { + class: eb + label: "EB" +} + +EB: { + class: eb + label: "EB" +} + +IB3: { + class: ib + label: "IB" +} + +IB2: { + class: ib + label: "IB" +} + +IB1: { + class: ib + label: "IB" +} + +IB: { + class: ib + label: "IB" +} + +# RB references +volatile.RB -> volatile.RB1: { + class: rb_arrow +} +volatile.RB1 -> volatile.RB2: { + class: rb_arrow +} +volatile.RB2 -> volatile.RBs: { + class: rb_arrow +} + +# EB certificates +volatile.RB1 -> EB1: "Contains\nEB Certificate" { + class: eb_cert +} + +volatile.RB -> EB: "Contains\nEB Certificate" { + class: eb_cert +} + +# EB references +EB1 -> volatile.RB2: "References" { + class: rb_arrow +} + +EB -> volatile.RB1: "References" { + class: rb_arrow +} + +# IB references + +IB3 -> EB1: { + class: ib_arrow +} + +IB2 -> EB1: { + class: ib_arrow +} + +IB1 -> EB1: { + class: ib_arrow +} + +IB -> EB: { + class: ib_arrow +} + +direction: left diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg new file mode 100644 index 000000000..def8ad47d --- /dev/null +++ b/docs/workshop/eb-reference-01.svg @@ -0,0 +1,120 @@ +RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure + + + + + + + + + + + + + + From 23b09d8a337ecda1bc654f43ef7100c5e50da4ef Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 13:21:22 +0200 Subject: [PATCH 08/28] docs: update eb ref diagram --- docs/workshop/eb-reference-01.svg | 200 +++++++++++++++--------------- 1 file changed, 102 insertions(+), 98 deletions(-) diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index def8ad47d..f98bff5d0 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,24 +1,24 @@ -RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure - - - - - - - - - - - - - + .d2-2975979344 .fill-N1{fill:#0A0F25;} + .d2-2975979344 .fill-N2{fill:#676C7E;} + .d2-2975979344 .fill-N3{fill:#9499AB;} + .d2-2975979344 .fill-N4{fill:#CFD2DD;} + .d2-2975979344 .fill-N5{fill:#DEE1EB;} + .d2-2975979344 .fill-N6{fill:#EEF1F8;} + .d2-2975979344 .fill-N7{fill:#FFFFFF;} + .d2-2975979344 .fill-B1{fill:#0D32B2;} + .d2-2975979344 .fill-B2{fill:#0D32B2;} + .d2-2975979344 .fill-B3{fill:#E3E9FD;} + .d2-2975979344 .fill-B4{fill:#E3E9FD;} + .d2-2975979344 .fill-B5{fill:#EDF0FD;} + .d2-2975979344 .fill-B6{fill:#F7F8FE;} + .d2-2975979344 .fill-AA2{fill:#4A6FF3;} + .d2-2975979344 .fill-AA4{fill:#EDF0FD;} + .d2-2975979344 .fill-AA5{fill:#F7F8FE;} + .d2-2975979344 .fill-AB4{fill:#EDF0FD;} + .d2-2975979344 .fill-AB5{fill:#F7F8FE;} + .d2-2975979344 .stroke-N1{stroke:#0A0F25;} + .d2-2975979344 .stroke-N2{stroke:#676C7E;} + .d2-2975979344 .stroke-N3{stroke:#9499AB;} + .d2-2975979344 .stroke-N4{stroke:#CFD2DD;} + .d2-2975979344 .stroke-N5{stroke:#DEE1EB;} + .d2-2975979344 .stroke-N6{stroke:#EEF1F8;} + .d2-2975979344 .stroke-N7{stroke:#FFFFFF;} + .d2-2975979344 .stroke-B1{stroke:#0D32B2;} + .d2-2975979344 .stroke-B2{stroke:#0D32B2;} + .d2-2975979344 .stroke-B3{stroke:#E3E9FD;} + .d2-2975979344 .stroke-B4{stroke:#E3E9FD;} + .d2-2975979344 .stroke-B5{stroke:#EDF0FD;} + .d2-2975979344 .stroke-B6{stroke:#F7F8FE;} + .d2-2975979344 .stroke-AA2{stroke:#4A6FF3;} + .d2-2975979344 .stroke-AA4{stroke:#EDF0FD;} + .d2-2975979344 .stroke-AA5{stroke:#F7F8FE;} + .d2-2975979344 .stroke-AB4{stroke:#EDF0FD;} + .d2-2975979344 .stroke-AB5{stroke:#F7F8FE;} + .d2-2975979344 .background-color-N1{background-color:#0A0F25;} + .d2-2975979344 .background-color-N2{background-color:#676C7E;} + .d2-2975979344 .background-color-N3{background-color:#9499AB;} + .d2-2975979344 .background-color-N4{background-color:#CFD2DD;} + .d2-2975979344 .background-color-N5{background-color:#DEE1EB;} + .d2-2975979344 .background-color-N6{background-color:#EEF1F8;} + .d2-2975979344 .background-color-N7{background-color:#FFFFFF;} + .d2-2975979344 .background-color-B1{background-color:#0D32B2;} + .d2-2975979344 .background-color-B2{background-color:#0D32B2;} + .d2-2975979344 .background-color-B3{background-color:#E3E9FD;} + .d2-2975979344 .background-color-B4{background-color:#E3E9FD;} + .d2-2975979344 .background-color-B5{background-color:#EDF0FD;} + .d2-2975979344 .background-color-B6{background-color:#F7F8FE;} + .d2-2975979344 .background-color-AA2{background-color:#4A6FF3;} + .d2-2975979344 .background-color-AA4{background-color:#EDF0FD;} + .d2-2975979344 .background-color-AA5{background-color:#F7F8FE;} + .d2-2975979344 .background-color-AB4{background-color:#EDF0FD;} + .d2-2975979344 .background-color-AB5{background-color:#F7F8FE;} + .d2-2975979344 .color-N1{color:#0A0F25;} + .d2-2975979344 .color-N2{color:#676C7E;} + .d2-2975979344 .color-N3{color:#9499AB;} + .d2-2975979344 .color-N4{color:#CFD2DD;} + .d2-2975979344 .color-N5{color:#DEE1EB;} + .d2-2975979344 .color-N6{color:#EEF1F8;} + .d2-2975979344 .color-N7{color:#FFFFFF;} + .d2-2975979344 .color-B1{color:#0D32B2;} + .d2-2975979344 .color-B2{color:#0D32B2;} + .d2-2975979344 .color-B3{color:#E3E9FD;} + .d2-2975979344 .color-B4{color:#E3E9FD;} + .d2-2975979344 .color-B5{color:#EDF0FD;} + .d2-2975979344 .color-B6{color:#F7F8FE;} + .d2-2975979344 .color-AA2{color:#4A6FF3;} + .d2-2975979344 .color-AA4{color:#EDF0FD;} + .d2-2975979344 .color-AA5{color:#F7F8FE;} + .d2-2975979344 .color-AB4{color:#EDF0FD;} + .d2-2975979344 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2975979344);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2975979344);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2975979344);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2975979344);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2975979344);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2975979344);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2975979344);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2975979344);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences + + + + + + + + + + + + + + + + + From 7f108ef9d0db60d6d1f1d1322b4dd625067c64dc Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:08:50 +0200 Subject: [PATCH 09/28] docs: add detailed rb ref diagram --- docs/workshop/rb-reference-detailed.d2 | 151 ++++++++++++++++++++++++ docs/workshop/rb-reference-detailed.svg | 132 +++++++++++++++++++++ 2 files changed, 283 insertions(+) create mode 100644 docs/workshop/rb-reference-detailed.d2 create mode 100644 docs/workshop/rb-reference-detailed.svg diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 new file mode 100644 index 000000000..977394135 --- /dev/null +++ b/docs/workshop/rb-reference-detailed.d2 @@ -0,0 +1,151 @@ +...@styles + +title: { + label: "RB Reference Approach (detailed)" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +stable: { + label: "Stable chain prefix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(genesis, tip-k-2)" + } + + RB: { + class: rb + label: "RB\n(tip-k-1)" + } +} + +volatile: { + label: "Volatile chain suffix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(tip-k, tip-2)" + } + + RB1: { + class: rb + label: "RB\n(tip-1)" + } + + RB: { + class: rb + label: "RB\n(tip)" + } + + RB0: { + class: rb + label: "RB" + style: { + stroke-dash: 7 + fill: "#D0F0FF" + } + } +} + +# Most secure, highest latency + +secure: { + label: "Most secure, highest latency" + class: container + + EB: { + class: eb + label: "EB" + } + IB1: { + class: ib + label: "IB" + } + + IB: { + class: ib + label: "IB" + } +} + +fast: { + label: "Fast, least secure" + class: container + + EB: { + class: eb + label: "EB" + } + IB: { + class: ib + label: "IB" + } +} + +# Links + +# Stable chain prefix +stable.RB -> stable.RBs: { + class: rb_arrow +} + +# Volatile chain suffix +volatile.RB -> volatile.RB1: { + class: rb_arrow +} +volatile.RB1 -> volatile.RBs: { + class: rb_arrow +} +volatile.RBs -> stable.RB: { + class: rb_arrow +} +volatile.RB0 -> volatile.RB: { + class: rb_arrow + style: { + stroke-dash: 7 + } +} + +volatile.RB0 -> secure.EB: "Contains\nEB certificate" { + class: eb_cert +} + +volatile.RB0 -> fast.EB: "Contains\nEB certificate" { + class: eb_cert +} + +# EB links + +secure.EB -> secure.IB1: "Ref" { + class: eb_arrow +} + +secure.EB -> secure.IB: "Ref" { + class: eb_arrow +} + +fast.EB -> fast.IB: "Ref" { + class: eb_arrow +} + +# IB links + +secure.IB -> stable.RB: "Ref" { + class: ib_arrow +} + +secure.IB1 -> stable.RB: "Ref" { + class: ib_arrow +} + +fast.IB -> volatile.RB: "Ref" { + class: ib_arrow +} + +direction: left diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg new file mode 100644 index 000000000..9552a0888 --- /dev/null +++ b/docs/workshop/rb-reference-detailed.svg @@ -0,0 +1,132 @@ +RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixMost secure, highest latencyFast, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)RBEBIBIBEBIB ContainsEB certificateContainsEB certificate RefRefRefRefRefRef + + + + + + + + + + + + + + + + + + + + + + + + + + From e21b4d1f0262aeaaa655dad6a255e1afa47aac76 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:10:36 +0200 Subject: [PATCH 10/28] docs: define styles once --- docs/workshop/day-3-recap.md | 3 ++ docs/workshop/rb-reference.d2 | 61 +------------------------------ docs/workshop/styles.d2 | 69 +++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 59 deletions(-) create mode 100644 docs/workshop/styles.d2 diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 7aed236c7..d520f2dac 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -59,6 +59,9 @@ Each of the following approaches describes a solution where an Input Block (IB) #### RB Reference Approach ![RB Reference Approach](rb-reference.svg) +> [!Note] +> There is a more detailed version of this including EBs, [here](./rb-reference-detailed.svg). + #### EB Reference Approach The EB reference approach offers a middle ground between security and latency. Certified EBs (those that have received votes from a majority of stake) provide security guarantees with lower latency than the [RB-reference approach](#rb-reference-approach), as they indicate that enough nodes have seen and validated them. Several core variations of the EB reference approach were discussed: diff --git a/docs/workshop/rb-reference.d2 b/docs/workshop/rb-reference.d2 index fdaa6e8d9..e15304754 100644 --- a/docs/workshop/rb-reference.d2 +++ b/docs/workshop/rb-reference.d2 @@ -1,3 +1,5 @@ +...@styles + title: { label: "RB Reference Approach" near: top-center @@ -7,65 +9,6 @@ title: { style.stroke: "#ffffff" } -# Styles -classes: { - rb: { - style: { - stroke: "#2a2a2a" - fill: "#B0E2FF" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - } - } - rb_stacked: { - style: { - stroke: "#2a2a2a" - fill: "#B0E2FF" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - multiple: true - } - } - ib: { - style: { - stroke: "#aaaaaa" - fill: "#FFFACD" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - } - } - horizon: { - style: { - stroke-dash: 7 - stroke: "#2a2a2a" - } - } - container: { - style: { - stroke: "#dedede" - fill: "#f5f5f5" - font-color: "#666666" - font-size: 16 - border-radius: 8 - } - } - rb_arrow: { - style: { - stroke: "#2a2a2a" - } - } - ib_arrow: { - style: { - stroke: "#aaaaaa" - } - } -} - -# Blocks with explicit positioning - stable: { label: "Stable chain prefix" class: container diff --git a/docs/workshop/styles.d2 b/docs/workshop/styles.d2 new file mode 100644 index 000000000..ef166e8dd --- /dev/null +++ b/docs/workshop/styles.d2 @@ -0,0 +1,69 @@ +classes: { + rb: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + rb_stacked: { + style: { + stroke: "#2a2a2a" + fill: "#B0E2FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + multiple: true + } + } + eb: { + style: { + stroke: "#aaaaaa" + fill: "#FFE4C4" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + ib: { + style: { + stroke: "#aaaaaa" + fill: "#FFFACD" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + } + } + container: { + style: { + stroke: "#dedede" + fill: "#f5f5f5" + font-color: "#666666" + font-size: 16 + border-radius: 8 + } + } + rb_arrow: { + style: { + stroke: "#2a2a2a" + } + } + eb_cert: { + style: { + stroke: "#2a2a2a" + stroke-dash: 7 + } + } + eb_arrow: { + style: { + stroke: "#aaaaaa" + } + } + ib_arrow: { + style: { + stroke: "#aaaaaa" + } + } +} From 978256a52b8df8d20bafcab8ba9b76336e42775e Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:17:56 +0200 Subject: [PATCH 11/28] docs: update detailed rb-ref example --- docs/workshop/rb-reference-detailed.d2 | 22 +++++----------------- docs/workshop/styles.d2 | 10 ++++++++++ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index 977394135..dae45edac 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -63,19 +63,15 @@ secure: { class: eb label: "EB" } - IB1: { - class: ib - label: "IB" - } IB: { - class: ib + class: ib_stacked label: "IB" } } fast: { - label: "Fast, least secure" + label: "Lowest latency, least secure" class: container EB: { @@ -83,7 +79,7 @@ fast: { label: "EB" } IB: { - class: ib + class: ib_stacked label: "IB" } } @@ -122,15 +118,11 @@ volatile.RB0 -> fast.EB: "Contains\nEB certificate" { # EB links -secure.EB -> secure.IB1: "Ref" { - class: eb_arrow -} - -secure.EB -> secure.IB: "Ref" { +secure.EB -> secure.IB: "Ref(s)" { class: eb_arrow } -fast.EB -> fast.IB: "Ref" { +fast.EB -> fast.IB: "Ref(s)" { class: eb_arrow } @@ -140,10 +132,6 @@ secure.IB -> stable.RB: "Ref" { class: ib_arrow } -secure.IB1 -> stable.RB: "Ref" { - class: ib_arrow -} - fast.IB -> volatile.RB: "Ref" { class: ib_arrow } diff --git a/docs/workshop/styles.d2 b/docs/workshop/styles.d2 index ef166e8dd..be942a169 100644 --- a/docs/workshop/styles.d2 +++ b/docs/workshop/styles.d2 @@ -36,6 +36,16 @@ classes: { border-radius: 10 } } + ib_stacked: { + style: { + stroke: "#aaaaaa" + fill: "#FFFACD" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + multiple: true + } + } container: { style: { stroke: "#dedede" From c6776d94192816a3c42ff67f4af4ef1691e57642 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:31:13 +0200 Subject: [PATCH 12/28] docs: update detailed rb ref example --- docs/workshop/rb-reference-detailed.d2 | 18 +- docs/workshop/rb-reference-detailed.svg | 217 ++++++++++++------------ docs/workshop/styles.d2 | 10 ++ 3 files changed, 124 insertions(+), 121 deletions(-) diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index dae45edac..25402e78d 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -42,15 +42,11 @@ volatile: { class: rb label: "RB\n(tip)" } +} - RB0: { - class: rb - label: "RB" - style: { - stroke-dash: 7 - fill: "#D0F0FF" - } - } +RB0: { + class: rb_unconfirmed + label: "RB" } # Most secure, highest latency @@ -101,18 +97,18 @@ volatile.RB1 -> volatile.RBs: { volatile.RBs -> stable.RB: { class: rb_arrow } -volatile.RB0 -> volatile.RB: { +RB0 -> volatile.RB: { class: rb_arrow style: { stroke-dash: 7 } } -volatile.RB0 -> secure.EB: "Contains\nEB certificate" { +RB0 -> secure.EB: "Contains\nEB certificate" { class: eb_cert } -volatile.RB0 -> fast.EB: "Contains\nEB certificate" { +RB0 -> fast.EB: "Contains\nEB certificate" { class: eb_cert } diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index 9552a0888..742363eb8 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,24 +1,24 @@ -RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixMost secure, highest latencyFast, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)RBEBIBIBEBIB ContainsEB certificateContainsEB certificate RefRefRefRefRefRef - - - - - - - - - - - - - - - - - - - - - - - - - + .d2-680123164 .fill-N1{fill:#0A0F25;} + .d2-680123164 .fill-N2{fill:#676C7E;} + .d2-680123164 .fill-N3{fill:#9499AB;} + .d2-680123164 .fill-N4{fill:#CFD2DD;} + .d2-680123164 .fill-N5{fill:#DEE1EB;} + .d2-680123164 .fill-N6{fill:#EEF1F8;} + .d2-680123164 .fill-N7{fill:#FFFFFF;} + .d2-680123164 .fill-B1{fill:#0D32B2;} + .d2-680123164 .fill-B2{fill:#0D32B2;} + .d2-680123164 .fill-B3{fill:#E3E9FD;} + .d2-680123164 .fill-B4{fill:#E3E9FD;} + .d2-680123164 .fill-B5{fill:#EDF0FD;} + .d2-680123164 .fill-B6{fill:#F7F8FE;} + .d2-680123164 .fill-AA2{fill:#4A6FF3;} + .d2-680123164 .fill-AA4{fill:#EDF0FD;} + .d2-680123164 .fill-AA5{fill:#F7F8FE;} + .d2-680123164 .fill-AB4{fill:#EDF0FD;} + .d2-680123164 .fill-AB5{fill:#F7F8FE;} + .d2-680123164 .stroke-N1{stroke:#0A0F25;} + .d2-680123164 .stroke-N2{stroke:#676C7E;} + .d2-680123164 .stroke-N3{stroke:#9499AB;} + .d2-680123164 .stroke-N4{stroke:#CFD2DD;} + .d2-680123164 .stroke-N5{stroke:#DEE1EB;} + .d2-680123164 .stroke-N6{stroke:#EEF1F8;} + .d2-680123164 .stroke-N7{stroke:#FFFFFF;} + .d2-680123164 .stroke-B1{stroke:#0D32B2;} + .d2-680123164 .stroke-B2{stroke:#0D32B2;} + .d2-680123164 .stroke-B3{stroke:#E3E9FD;} + .d2-680123164 .stroke-B4{stroke:#E3E9FD;} + .d2-680123164 .stroke-B5{stroke:#EDF0FD;} + .d2-680123164 .stroke-B6{stroke:#F7F8FE;} + .d2-680123164 .stroke-AA2{stroke:#4A6FF3;} + .d2-680123164 .stroke-AA4{stroke:#EDF0FD;} + .d2-680123164 .stroke-AA5{stroke:#F7F8FE;} + .d2-680123164 .stroke-AB4{stroke:#EDF0FD;} + .d2-680123164 .stroke-AB5{stroke:#F7F8FE;} + .d2-680123164 .background-color-N1{background-color:#0A0F25;} + .d2-680123164 .background-color-N2{background-color:#676C7E;} + .d2-680123164 .background-color-N3{background-color:#9499AB;} + .d2-680123164 .background-color-N4{background-color:#CFD2DD;} + .d2-680123164 .background-color-N5{background-color:#DEE1EB;} + .d2-680123164 .background-color-N6{background-color:#EEF1F8;} + .d2-680123164 .background-color-N7{background-color:#FFFFFF;} + .d2-680123164 .background-color-B1{background-color:#0D32B2;} + .d2-680123164 .background-color-B2{background-color:#0D32B2;} + .d2-680123164 .background-color-B3{background-color:#E3E9FD;} + .d2-680123164 .background-color-B4{background-color:#E3E9FD;} + .d2-680123164 .background-color-B5{background-color:#EDF0FD;} + .d2-680123164 .background-color-B6{background-color:#F7F8FE;} + .d2-680123164 .background-color-AA2{background-color:#4A6FF3;} + .d2-680123164 .background-color-AA4{background-color:#EDF0FD;} + .d2-680123164 .background-color-AA5{background-color:#F7F8FE;} + .d2-680123164 .background-color-AB4{background-color:#EDF0FD;} + .d2-680123164 .background-color-AB5{background-color:#F7F8FE;} + .d2-680123164 .color-N1{color:#0A0F25;} + .d2-680123164 .color-N2{color:#676C7E;} + .d2-680123164 .color-N3{color:#9499AB;} + .d2-680123164 .color-N4{color:#CFD2DD;} + .d2-680123164 .color-N5{color:#DEE1EB;} + .d2-680123164 .color-N6{color:#EEF1F8;} + .d2-680123164 .color-N7{color:#FFFFFF;} + .d2-680123164 .color-B1{color:#0D32B2;} + .d2-680123164 .color-B2{color:#0D32B2;} + .d2-680123164 .color-B3{color:#E3E9FD;} + .d2-680123164 .color-B4{color:#E3E9FD;} + .d2-680123164 .color-B5{color:#EDF0FD;} + .d2-680123164 .color-B6{color:#F7F8FE;} + .d2-680123164 .color-AA2{color:#4A6FF3;} + .d2-680123164 .color-AA4{color:#EDF0FD;} + .d2-680123164 .color-AA5{color:#F7F8FE;} + .d2-680123164 .color-AB4{color:#EDF0FD;} + .d2-680123164 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-680123164);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-680123164);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-680123164);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-680123164);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-680123164);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-680123164);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-680123164);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-680123164);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/workshop/styles.d2 b/docs/workshop/styles.d2 index be942a169..19096ffe2 100644 --- a/docs/workshop/styles.d2 +++ b/docs/workshop/styles.d2 @@ -18,6 +18,16 @@ classes: { multiple: true } } + rb_unconfirmed: { + style: { + stroke: "#2a2a2a" + fill: "#D0F0FF" + font-color: "#2a2a2a" + font-size: 16 + border-radius: 10 + stroke-dash: 7 + } + } eb: { style: { stroke: "#aaaaaa" From a1fcc8dfba8e9f9d29fdfc11c4bddfc1110e29f3 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:49:31 +0200 Subject: [PATCH 13/28] docs: update eb ref example one --- docs/workshop/eb-reference-01.d2 | 90 ++++---------------------------- docs/workshop/styles.d2 | 26 ++++----- 2 files changed, 23 insertions(+), 93 deletions(-) diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 index bda6e63c2..b9ce76b82 100644 --- a/docs/workshop/eb-reference-01.d2 +++ b/docs/workshop/eb-reference-01.d2 @@ -1,3 +1,5 @@ +...@styles + title: { label: "Direct certified EB Reference Approach" near: top-center @@ -7,74 +9,6 @@ title: { style.stroke: "#ffffff" } -# Styles -classes: { - rb: { - style: { - stroke: "#2a2a2a" - fill: "#B0E2FF" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - } - } - rb_stacked: { - style: { - stroke: "#2a2a2a" - fill: "#B0E2FF" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - multiple: true - } - } - eb: { - style: { - stroke: "#aaaaaa" - fill: "#FFE4C4" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - } - } - ib: { - style: { - stroke: "#aaaaaa" - fill: "#FFFACD" - font-color: "#2a2a2a" - font-size: 16 - border-radius: 10 - } - } - container: { - style: { - stroke: "#dedede" - fill: "#f5f5f5" - font-color: "#666666" - font-size: 16 - border-radius: 8 - } - } - rb_arrow: { - style: { - stroke: "#2a2a2a" - } - } - eb_cert: { - style: { - stroke: "#2a2a2a" - stroke-dash: 7 - } - } - ib_arrow: { - style: { - stroke: "#aaaaaa" - } - } -} - -# Blocks with explicit positioning - volatile: { label: "Volatile chain suffix" class: container @@ -132,13 +66,13 @@ IB: { # RB references volatile.RB -> volatile.RB1: { - class: rb_arrow + class: to_rb_arrow } volatile.RB1 -> volatile.RB2: { - class: rb_arrow + class: to_rb_arrow } volatile.RB2 -> volatile.RBs: { - class: rb_arrow + class: to_rb_arrow } # EB certificates @@ -152,29 +86,25 @@ volatile.RB -> EB: "Contains\nEB Certificate" { # EB references EB1 -> volatile.RB2: "References" { - class: rb_arrow + class: to_rb_arrow } EB -> volatile.RB1: "References" { - class: rb_arrow + class: to_rb_arrow } # IB references -IB3 -> EB1: { - class: ib_arrow -} - IB2 -> EB1: { - class: ib_arrow + class: to_eb_arrow } IB1 -> EB1: { - class: ib_arrow + class: to_eb_arrow } IB -> EB: { - class: ib_arrow + class: to_eb_arrow } direction: left diff --git a/docs/workshop/styles.d2 b/docs/workshop/styles.d2 index 19096ffe2..045b0c499 100644 --- a/docs/workshop/styles.d2 +++ b/docs/workshop/styles.d2 @@ -1,7 +1,7 @@ classes: { rb: { style: { - stroke: "#2a2a2a" + stroke: "#6A9BC7" fill: "#B0E2FF" font-color: "#2a2a2a" font-size: 16 @@ -10,7 +10,7 @@ classes: { } rb_stacked: { style: { - stroke: "#2a2a2a" + stroke: "#6A9BC7" fill: "#B0E2FF" font-color: "#2a2a2a" font-size: 16 @@ -20,7 +20,7 @@ classes: { } rb_unconfirmed: { style: { - stroke: "#2a2a2a" + stroke: "#6A9BC7" fill: "#D0F0FF" font-color: "#2a2a2a" font-size: 16 @@ -30,7 +30,7 @@ classes: { } eb: { style: { - stroke: "#aaaaaa" + stroke: "#D4A76A" fill: "#FFE4C4" font-color: "#2a2a2a" font-size: 16 @@ -39,7 +39,7 @@ classes: { } ib: { style: { - stroke: "#aaaaaa" + stroke: "#D4C76A" fill: "#FFFACD" font-color: "#2a2a2a" font-size: 16 @@ -48,7 +48,7 @@ classes: { } ib_stacked: { style: { - stroke: "#aaaaaa" + stroke: "#D4C76A" fill: "#FFFACD" font-color: "#2a2a2a" font-size: 16 @@ -65,25 +65,25 @@ classes: { border-radius: 8 } } - rb_arrow: { + to_rb_arrow: { style: { - stroke: "#2a2a2a" + stroke: "#6A9BC7" } } eb_cert: { style: { - stroke: "#2a2a2a" + stroke: "#D4A76A" stroke-dash: 7 } } - eb_arrow: { + to_eb_arrow: { style: { - stroke: "#aaaaaa" + stroke: "#D4A76A" } } - ib_arrow: { + to_ib_arrow: { style: { - stroke: "#aaaaaa" + stroke: "#D4C76A" } } } From 9ea6e967585f1952af386676e8e21d8f7e78be2e Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:49:51 +0200 Subject: [PATCH 14/28] docs: rerendered svg --- docs/workshop/eb-reference-01.svg | 182 +++++++++++++++--------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index f98bff5d0..a1e0b3f7d 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,23 +1,23 @@ -Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences - + .d2-61947351 .fill-N1{fill:#0A0F25;} + .d2-61947351 .fill-N2{fill:#676C7E;} + .d2-61947351 .fill-N3{fill:#9499AB;} + .d2-61947351 .fill-N4{fill:#CFD2DD;} + .d2-61947351 .fill-N5{fill:#DEE1EB;} + .d2-61947351 .fill-N6{fill:#EEF1F8;} + .d2-61947351 .fill-N7{fill:#FFFFFF;} + .d2-61947351 .fill-B1{fill:#0D32B2;} + .d2-61947351 .fill-B2{fill:#0D32B2;} + .d2-61947351 .fill-B3{fill:#E3E9FD;} + .d2-61947351 .fill-B4{fill:#E3E9FD;} + .d2-61947351 .fill-B5{fill:#EDF0FD;} + .d2-61947351 .fill-B6{fill:#F7F8FE;} + .d2-61947351 .fill-AA2{fill:#4A6FF3;} + .d2-61947351 .fill-AA4{fill:#EDF0FD;} + .d2-61947351 .fill-AA5{fill:#F7F8FE;} + .d2-61947351 .fill-AB4{fill:#EDF0FD;} + .d2-61947351 .fill-AB5{fill:#F7F8FE;} + .d2-61947351 .stroke-N1{stroke:#0A0F25;} + .d2-61947351 .stroke-N2{stroke:#676C7E;} + .d2-61947351 .stroke-N3{stroke:#9499AB;} + .d2-61947351 .stroke-N4{stroke:#CFD2DD;} + .d2-61947351 .stroke-N5{stroke:#DEE1EB;} + .d2-61947351 .stroke-N6{stroke:#EEF1F8;} + .d2-61947351 .stroke-N7{stroke:#FFFFFF;} + .d2-61947351 .stroke-B1{stroke:#0D32B2;} + .d2-61947351 .stroke-B2{stroke:#0D32B2;} + .d2-61947351 .stroke-B3{stroke:#E3E9FD;} + .d2-61947351 .stroke-B4{stroke:#E3E9FD;} + .d2-61947351 .stroke-B5{stroke:#EDF0FD;} + .d2-61947351 .stroke-B6{stroke:#F7F8FE;} + .d2-61947351 .stroke-AA2{stroke:#4A6FF3;} + .d2-61947351 .stroke-AA4{stroke:#EDF0FD;} + .d2-61947351 .stroke-AA5{stroke:#F7F8FE;} + .d2-61947351 .stroke-AB4{stroke:#EDF0FD;} + .d2-61947351 .stroke-AB5{stroke:#F7F8FE;} + .d2-61947351 .background-color-N1{background-color:#0A0F25;} + .d2-61947351 .background-color-N2{background-color:#676C7E;} + .d2-61947351 .background-color-N3{background-color:#9499AB;} + .d2-61947351 .background-color-N4{background-color:#CFD2DD;} + .d2-61947351 .background-color-N5{background-color:#DEE1EB;} + .d2-61947351 .background-color-N6{background-color:#EEF1F8;} + .d2-61947351 .background-color-N7{background-color:#FFFFFF;} + .d2-61947351 .background-color-B1{background-color:#0D32B2;} + .d2-61947351 .background-color-B2{background-color:#0D32B2;} + .d2-61947351 .background-color-B3{background-color:#E3E9FD;} + .d2-61947351 .background-color-B4{background-color:#E3E9FD;} + .d2-61947351 .background-color-B5{background-color:#EDF0FD;} + .d2-61947351 .background-color-B6{background-color:#F7F8FE;} + .d2-61947351 .background-color-AA2{background-color:#4A6FF3;} + .d2-61947351 .background-color-AA4{background-color:#EDF0FD;} + .d2-61947351 .background-color-AA5{background-color:#F7F8FE;} + .d2-61947351 .background-color-AB4{background-color:#EDF0FD;} + .d2-61947351 .background-color-AB5{background-color:#F7F8FE;} + .d2-61947351 .color-N1{color:#0A0F25;} + .d2-61947351 .color-N2{color:#676C7E;} + .d2-61947351 .color-N3{color:#9499AB;} + .d2-61947351 .color-N4{color:#CFD2DD;} + .d2-61947351 .color-N5{color:#DEE1EB;} + .d2-61947351 .color-N6{color:#EEF1F8;} + .d2-61947351 .color-N7{color:#FFFFFF;} + .d2-61947351 .color-B1{color:#0D32B2;} + .d2-61947351 .color-B2{color:#0D32B2;} + .d2-61947351 .color-B3{color:#E3E9FD;} + .d2-61947351 .color-B4{color:#E3E9FD;} + .d2-61947351 .color-B5{color:#EDF0FD;} + .d2-61947351 .color-B6{color:#F7F8FE;} + .d2-61947351 .color-AA2{color:#4A6FF3;} + .d2-61947351 .color-AA4{color:#EDF0FD;} + .d2-61947351 .color-AA5{color:#F7F8FE;} + .d2-61947351 .color-AB4{color:#EDF0FD;} + .d2-61947351 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-61947351);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-61947351);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-61947351);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-61947351);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-61947351);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-61947351);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-61947351);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-61947351);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences + - - + + + - - + - - - - + + + + From 4c83d48e264ca581b4cb498fdec932ea0ecfce45 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:51:21 +0200 Subject: [PATCH 15/28] docs: update rb ref example --- docs/workshop/rb-reference.d2 | 12 +-- docs/workshop/rb-reference.svg | 164 ++++++++++++++++----------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/docs/workshop/rb-reference.d2 b/docs/workshop/rb-reference.d2 index e15304754..30ddf2927 100644 --- a/docs/workshop/rb-reference.d2 +++ b/docs/workshop/rb-reference.d2 @@ -56,24 +56,24 @@ IB2: { # References with explicit direction volatile.RB -> volatile.RB1: { - class: rb_arrow + class: to_rb_arrow } volatile.RB1 -> volatile.RBs: { - class: rb_arrow + class: to_rb_arrow } volatile.RBs -> stable.RB: { - class: rb_arrow + class: to_rb_arrow } stable.RB -> stable.RBs: { - class: rb_arrow + class: to_rb_arrow } IB1 -> stable.RB: "Highest latency\nmost secure" { - class: ib_arrow + class: to_rb_arrow } IB2 -> volatile.RB: "Lowest latency\nleast secure" { - class: ib_arrow + class: to_rb_arrow } direction: left diff --git a/docs/workshop/rb-reference.svg b/docs/workshop/rb-reference.svg index def8ad47d..d09d009ca 100644 --- a/docs/workshop/rb-reference.svg +++ b/docs/workshop/rb-reference.svg @@ -1,23 +1,23 @@ -RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure + .d2-3775943478 .fill-N1{fill:#0A0F25;} + .d2-3775943478 .fill-N2{fill:#676C7E;} + .d2-3775943478 .fill-N3{fill:#9499AB;} + .d2-3775943478 .fill-N4{fill:#CFD2DD;} + .d2-3775943478 .fill-N5{fill:#DEE1EB;} + .d2-3775943478 .fill-N6{fill:#EEF1F8;} + .d2-3775943478 .fill-N7{fill:#FFFFFF;} + .d2-3775943478 .fill-B1{fill:#0D32B2;} + .d2-3775943478 .fill-B2{fill:#0D32B2;} + .d2-3775943478 .fill-B3{fill:#E3E9FD;} + .d2-3775943478 .fill-B4{fill:#E3E9FD;} + .d2-3775943478 .fill-B5{fill:#EDF0FD;} + .d2-3775943478 .fill-B6{fill:#F7F8FE;} + .d2-3775943478 .fill-AA2{fill:#4A6FF3;} + .d2-3775943478 .fill-AA4{fill:#EDF0FD;} + .d2-3775943478 .fill-AA5{fill:#F7F8FE;} + .d2-3775943478 .fill-AB4{fill:#EDF0FD;} + .d2-3775943478 .fill-AB5{fill:#F7F8FE;} + .d2-3775943478 .stroke-N1{stroke:#0A0F25;} + .d2-3775943478 .stroke-N2{stroke:#676C7E;} + .d2-3775943478 .stroke-N3{stroke:#9499AB;} + .d2-3775943478 .stroke-N4{stroke:#CFD2DD;} + .d2-3775943478 .stroke-N5{stroke:#DEE1EB;} + .d2-3775943478 .stroke-N6{stroke:#EEF1F8;} + .d2-3775943478 .stroke-N7{stroke:#FFFFFF;} + .d2-3775943478 .stroke-B1{stroke:#0D32B2;} + .d2-3775943478 .stroke-B2{stroke:#0D32B2;} + .d2-3775943478 .stroke-B3{stroke:#E3E9FD;} + .d2-3775943478 .stroke-B4{stroke:#E3E9FD;} + .d2-3775943478 .stroke-B5{stroke:#EDF0FD;} + .d2-3775943478 .stroke-B6{stroke:#F7F8FE;} + .d2-3775943478 .stroke-AA2{stroke:#4A6FF3;} + .d2-3775943478 .stroke-AA4{stroke:#EDF0FD;} + .d2-3775943478 .stroke-AA5{stroke:#F7F8FE;} + .d2-3775943478 .stroke-AB4{stroke:#EDF0FD;} + .d2-3775943478 .stroke-AB5{stroke:#F7F8FE;} + .d2-3775943478 .background-color-N1{background-color:#0A0F25;} + .d2-3775943478 .background-color-N2{background-color:#676C7E;} + .d2-3775943478 .background-color-N3{background-color:#9499AB;} + .d2-3775943478 .background-color-N4{background-color:#CFD2DD;} + .d2-3775943478 .background-color-N5{background-color:#DEE1EB;} + .d2-3775943478 .background-color-N6{background-color:#EEF1F8;} + .d2-3775943478 .background-color-N7{background-color:#FFFFFF;} + .d2-3775943478 .background-color-B1{background-color:#0D32B2;} + .d2-3775943478 .background-color-B2{background-color:#0D32B2;} + .d2-3775943478 .background-color-B3{background-color:#E3E9FD;} + .d2-3775943478 .background-color-B4{background-color:#E3E9FD;} + .d2-3775943478 .background-color-B5{background-color:#EDF0FD;} + .d2-3775943478 .background-color-B6{background-color:#F7F8FE;} + .d2-3775943478 .background-color-AA2{background-color:#4A6FF3;} + .d2-3775943478 .background-color-AA4{background-color:#EDF0FD;} + .d2-3775943478 .background-color-AA5{background-color:#F7F8FE;} + .d2-3775943478 .background-color-AB4{background-color:#EDF0FD;} + .d2-3775943478 .background-color-AB5{background-color:#F7F8FE;} + .d2-3775943478 .color-N1{color:#0A0F25;} + .d2-3775943478 .color-N2{color:#676C7E;} + .d2-3775943478 .color-N3{color:#9499AB;} + .d2-3775943478 .color-N4{color:#CFD2DD;} + .d2-3775943478 .color-N5{color:#DEE1EB;} + .d2-3775943478 .color-N6{color:#EEF1F8;} + .d2-3775943478 .color-N7{color:#FFFFFF;} + .d2-3775943478 .color-B1{color:#0D32B2;} + .d2-3775943478 .color-B2{color:#0D32B2;} + .d2-3775943478 .color-B3{color:#E3E9FD;} + .d2-3775943478 .color-B4{color:#E3E9FD;} + .d2-3775943478 .color-B5{color:#EDF0FD;} + .d2-3775943478 .color-B6{color:#F7F8FE;} + .d2-3775943478 .color-AA2{color:#4A6FF3;} + .d2-3775943478 .color-AA4{color:#EDF0FD;} + .d2-3775943478 .color-AA5{color:#F7F8FE;} + .d2-3775943478 .color-AB4{color:#EDF0FD;} + .d2-3775943478 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3775943478);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3775943478);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3775943478);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3775943478);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3775943478);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3775943478);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3775943478);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3775943478);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure From 3e81cde9a8d6a0b618c13884083630e2ad5cad8e Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:53:15 +0200 Subject: [PATCH 16/28] docs: update detailed rb ref example --- docs/workshop/rb-reference-detailed.d2 | 14 +- docs/workshop/rb-reference-detailed.svg | 164 ++++++++++++------------ 2 files changed, 89 insertions(+), 89 deletions(-) diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index 25402e78d..b663c5422 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -84,21 +84,21 @@ fast: { # Stable chain prefix stable.RB -> stable.RBs: { - class: rb_arrow + class: to_rb_arrow } # Volatile chain suffix volatile.RB -> volatile.RB1: { - class: rb_arrow + class: to_rb_arrow } volatile.RB1 -> volatile.RBs: { - class: rb_arrow + class: to_rb_arrow } volatile.RBs -> stable.RB: { - class: rb_arrow + class: to_rb_arrow } RB0 -> volatile.RB: { - class: rb_arrow + class: to_rb_arrow style: { stroke-dash: 7 } @@ -125,11 +125,11 @@ fast.EB -> fast.IB: "Ref(s)" { # IB links secure.IB -> stable.RB: "Ref" { - class: ib_arrow + class: to_rb_arrow } fast.IB -> volatile.RB: "Ref" { - class: ib_arrow + class: to_rb_arrow } direction: left diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index 742363eb8..276809b35 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,23 +1,23 @@ -RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef + .d2-659326599 .fill-N1{fill:#0A0F25;} + .d2-659326599 .fill-N2{fill:#676C7E;} + .d2-659326599 .fill-N3{fill:#9499AB;} + .d2-659326599 .fill-N4{fill:#CFD2DD;} + .d2-659326599 .fill-N5{fill:#DEE1EB;} + .d2-659326599 .fill-N6{fill:#EEF1F8;} + .d2-659326599 .fill-N7{fill:#FFFFFF;} + .d2-659326599 .fill-B1{fill:#0D32B2;} + .d2-659326599 .fill-B2{fill:#0D32B2;} + .d2-659326599 .fill-B3{fill:#E3E9FD;} + .d2-659326599 .fill-B4{fill:#E3E9FD;} + .d2-659326599 .fill-B5{fill:#EDF0FD;} + .d2-659326599 .fill-B6{fill:#F7F8FE;} + .d2-659326599 .fill-AA2{fill:#4A6FF3;} + .d2-659326599 .fill-AA4{fill:#EDF0FD;} + .d2-659326599 .fill-AA5{fill:#F7F8FE;} + .d2-659326599 .fill-AB4{fill:#EDF0FD;} + .d2-659326599 .fill-AB5{fill:#F7F8FE;} + .d2-659326599 .stroke-N1{stroke:#0A0F25;} + .d2-659326599 .stroke-N2{stroke:#676C7E;} + .d2-659326599 .stroke-N3{stroke:#9499AB;} + .d2-659326599 .stroke-N4{stroke:#CFD2DD;} + .d2-659326599 .stroke-N5{stroke:#DEE1EB;} + .d2-659326599 .stroke-N6{stroke:#EEF1F8;} + .d2-659326599 .stroke-N7{stroke:#FFFFFF;} + .d2-659326599 .stroke-B1{stroke:#0D32B2;} + .d2-659326599 .stroke-B2{stroke:#0D32B2;} + .d2-659326599 .stroke-B3{stroke:#E3E9FD;} + .d2-659326599 .stroke-B4{stroke:#E3E9FD;} + .d2-659326599 .stroke-B5{stroke:#EDF0FD;} + .d2-659326599 .stroke-B6{stroke:#F7F8FE;} + .d2-659326599 .stroke-AA2{stroke:#4A6FF3;} + .d2-659326599 .stroke-AA4{stroke:#EDF0FD;} + .d2-659326599 .stroke-AA5{stroke:#F7F8FE;} + .d2-659326599 .stroke-AB4{stroke:#EDF0FD;} + .d2-659326599 .stroke-AB5{stroke:#F7F8FE;} + .d2-659326599 .background-color-N1{background-color:#0A0F25;} + .d2-659326599 .background-color-N2{background-color:#676C7E;} + .d2-659326599 .background-color-N3{background-color:#9499AB;} + .d2-659326599 .background-color-N4{background-color:#CFD2DD;} + .d2-659326599 .background-color-N5{background-color:#DEE1EB;} + .d2-659326599 .background-color-N6{background-color:#EEF1F8;} + .d2-659326599 .background-color-N7{background-color:#FFFFFF;} + .d2-659326599 .background-color-B1{background-color:#0D32B2;} + .d2-659326599 .background-color-B2{background-color:#0D32B2;} + .d2-659326599 .background-color-B3{background-color:#E3E9FD;} + .d2-659326599 .background-color-B4{background-color:#E3E9FD;} + .d2-659326599 .background-color-B5{background-color:#EDF0FD;} + .d2-659326599 .background-color-B6{background-color:#F7F8FE;} + .d2-659326599 .background-color-AA2{background-color:#4A6FF3;} + .d2-659326599 .background-color-AA4{background-color:#EDF0FD;} + .d2-659326599 .background-color-AA5{background-color:#F7F8FE;} + .d2-659326599 .background-color-AB4{background-color:#EDF0FD;} + .d2-659326599 .background-color-AB5{background-color:#F7F8FE;} + .d2-659326599 .color-N1{color:#0A0F25;} + .d2-659326599 .color-N2{color:#676C7E;} + .d2-659326599 .color-N3{color:#9499AB;} + .d2-659326599 .color-N4{color:#CFD2DD;} + .d2-659326599 .color-N5{color:#DEE1EB;} + .d2-659326599 .color-N6{color:#EEF1F8;} + .d2-659326599 .color-N7{color:#FFFFFF;} + .d2-659326599 .color-B1{color:#0D32B2;} + .d2-659326599 .color-B2{color:#0D32B2;} + .d2-659326599 .color-B3{color:#E3E9FD;} + .d2-659326599 .color-B4{color:#E3E9FD;} + .d2-659326599 .color-B5{color:#EDF0FD;} + .d2-659326599 .color-B6{color:#F7F8FE;} + .d2-659326599 .color-AA2{color:#4A6FF3;} + .d2-659326599 .color-AA4{color:#EDF0FD;} + .d2-659326599 .color-AA5{color:#F7F8FE;} + .d2-659326599 .color-AB4{color:#EDF0FD;} + .d2-659326599 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-659326599);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-659326599);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-659326599);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-659326599);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-659326599);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-659326599);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-659326599);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-659326599);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef From 8b6689f0732aad7fdcee7deba68d92a0a49f809d Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 14:57:04 +0200 Subject: [PATCH 17/28] fix: eb ref diagramn --- docs/workshop/eb-reference-01.d2 | 6 +- docs/workshop/eb-reference-01.svg | 172 +++++++++++++++--------------- 2 files changed, 91 insertions(+), 87 deletions(-) diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 index b9ce76b82..7da01e19a 100644 --- a/docs/workshop/eb-reference-01.d2 +++ b/docs/workshop/eb-reference-01.d2 @@ -95,11 +95,15 @@ EB -> volatile.RB1: "References" { # IB references +IB3 -> EB1: { + class: to_eb_arrow +} + IB2 -> EB1: { class: to_eb_arrow } -IB1 -> EB1: { +IB1 -> EB: { class: to_eb_arrow } diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index a1e0b3f7d..c5e4e69ce 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,23 +1,23 @@ -Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences + .d2-3354737385 .fill-N1{fill:#0A0F25;} + .d2-3354737385 .fill-N2{fill:#676C7E;} + .d2-3354737385 .fill-N3{fill:#9499AB;} + .d2-3354737385 .fill-N4{fill:#CFD2DD;} + .d2-3354737385 .fill-N5{fill:#DEE1EB;} + .d2-3354737385 .fill-N6{fill:#EEF1F8;} + .d2-3354737385 .fill-N7{fill:#FFFFFF;} + .d2-3354737385 .fill-B1{fill:#0D32B2;} + .d2-3354737385 .fill-B2{fill:#0D32B2;} + .d2-3354737385 .fill-B3{fill:#E3E9FD;} + .d2-3354737385 .fill-B4{fill:#E3E9FD;} + .d2-3354737385 .fill-B5{fill:#EDF0FD;} + .d2-3354737385 .fill-B6{fill:#F7F8FE;} + .d2-3354737385 .fill-AA2{fill:#4A6FF3;} + .d2-3354737385 .fill-AA4{fill:#EDF0FD;} + .d2-3354737385 .fill-AA5{fill:#F7F8FE;} + .d2-3354737385 .fill-AB4{fill:#EDF0FD;} + .d2-3354737385 .fill-AB5{fill:#F7F8FE;} + .d2-3354737385 .stroke-N1{stroke:#0A0F25;} + .d2-3354737385 .stroke-N2{stroke:#676C7E;} + .d2-3354737385 .stroke-N3{stroke:#9499AB;} + .d2-3354737385 .stroke-N4{stroke:#CFD2DD;} + .d2-3354737385 .stroke-N5{stroke:#DEE1EB;} + .d2-3354737385 .stroke-N6{stroke:#EEF1F8;} + .d2-3354737385 .stroke-N7{stroke:#FFFFFF;} + .d2-3354737385 .stroke-B1{stroke:#0D32B2;} + .d2-3354737385 .stroke-B2{stroke:#0D32B2;} + .d2-3354737385 .stroke-B3{stroke:#E3E9FD;} + .d2-3354737385 .stroke-B4{stroke:#E3E9FD;} + .d2-3354737385 .stroke-B5{stroke:#EDF0FD;} + .d2-3354737385 .stroke-B6{stroke:#F7F8FE;} + .d2-3354737385 .stroke-AA2{stroke:#4A6FF3;} + .d2-3354737385 .stroke-AA4{stroke:#EDF0FD;} + .d2-3354737385 .stroke-AA5{stroke:#F7F8FE;} + .d2-3354737385 .stroke-AB4{stroke:#EDF0FD;} + .d2-3354737385 .stroke-AB5{stroke:#F7F8FE;} + .d2-3354737385 .background-color-N1{background-color:#0A0F25;} + .d2-3354737385 .background-color-N2{background-color:#676C7E;} + .d2-3354737385 .background-color-N3{background-color:#9499AB;} + .d2-3354737385 .background-color-N4{background-color:#CFD2DD;} + .d2-3354737385 .background-color-N5{background-color:#DEE1EB;} + .d2-3354737385 .background-color-N6{background-color:#EEF1F8;} + .d2-3354737385 .background-color-N7{background-color:#FFFFFF;} + .d2-3354737385 .background-color-B1{background-color:#0D32B2;} + .d2-3354737385 .background-color-B2{background-color:#0D32B2;} + .d2-3354737385 .background-color-B3{background-color:#E3E9FD;} + .d2-3354737385 .background-color-B4{background-color:#E3E9FD;} + .d2-3354737385 .background-color-B5{background-color:#EDF0FD;} + .d2-3354737385 .background-color-B6{background-color:#F7F8FE;} + .d2-3354737385 .background-color-AA2{background-color:#4A6FF3;} + .d2-3354737385 .background-color-AA4{background-color:#EDF0FD;} + .d2-3354737385 .background-color-AA5{background-color:#F7F8FE;} + .d2-3354737385 .background-color-AB4{background-color:#EDF0FD;} + .d2-3354737385 .background-color-AB5{background-color:#F7F8FE;} + .d2-3354737385 .color-N1{color:#0A0F25;} + .d2-3354737385 .color-N2{color:#676C7E;} + .d2-3354737385 .color-N3{color:#9499AB;} + .d2-3354737385 .color-N4{color:#CFD2DD;} + .d2-3354737385 .color-N5{color:#DEE1EB;} + .d2-3354737385 .color-N6{color:#EEF1F8;} + .d2-3354737385 .color-N7{color:#FFFFFF;} + .d2-3354737385 .color-B1{color:#0D32B2;} + .d2-3354737385 .color-B2{color:#0D32B2;} + .d2-3354737385 .color-B3{color:#E3E9FD;} + .d2-3354737385 .color-B4{color:#E3E9FD;} + .d2-3354737385 .color-B5{color:#EDF0FD;} + .d2-3354737385 .color-B6{color:#F7F8FE;} + .d2-3354737385 .color-AA2{color:#4A6FF3;} + .d2-3354737385 .color-AA4{color:#EDF0FD;} + .d2-3354737385 .color-AA5{color:#F7F8FE;} + .d2-3354737385 .color-AB4{color:#EDF0FD;} + .d2-3354737385 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3354737385);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3354737385);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3354737385);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3354737385);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3354737385);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3354737385);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3354737385);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3354737385);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences - - + + - + - + From 003d0c9332e2c00fb241e3569c1163cddb437da1 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 15:17:54 +0200 Subject: [PATCH 18/28] d2: update diagrams --- docs/workshop/eb-reference-01.d2 | 38 ++++- docs/workshop/eb-reference-01.svg | 195 ++++++++++++------------ docs/workshop/rb-reference-detailed.d2 | 4 +- docs/workshop/rb-reference-detailed.svg | 164 ++++++++++---------- 4 files changed, 219 insertions(+), 182 deletions(-) diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 index 7da01e19a..f9300928f 100644 --- a/docs/workshop/eb-reference-01.d2 +++ b/docs/workshop/eb-reference-01.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "Direct certified EB Reference Approach" + label: "Direct certified EB Reference Approach (a)" near: top-center style.font-size: 24 style.bold: true @@ -34,6 +34,11 @@ volatile: { } } +RB0: { + class: rb_unconfirmed + label: "RB" +} + EB1: { class: eb label: "EB" @@ -44,6 +49,16 @@ EB: { label: "EB" } +EB0: { + class: eb + label: "EB" +} + +IB4: { + class: ib + label: "IB" +} + IB3: { class: ib label: "IB" @@ -65,6 +80,11 @@ IB: { } # RB references + +RB0 -> volatile.RB: { + class: to_rb_arrow +} + volatile.RB -> volatile.RB1: { class: to_rb_arrow } @@ -84,6 +104,10 @@ volatile.RB -> EB: "Contains\nEB Certificate" { class: eb_cert } +RB0 -> EB0: "Contains\nEB Certificate" { + class: eb_cert +} + # EB references EB1 -> volatile.RB2: "References" { class: to_rb_arrow @@ -93,13 +117,21 @@ EB -> volatile.RB1: "References" { class: to_rb_arrow } +EB0 -> volatile.RB: "References" { + class: to_rb_arrow +} + # IB references +IB4 -> EB1: { + class: to_eb_arrow +} + IB3 -> EB1: { class: to_eb_arrow } -IB2 -> EB1: { +IB2 -> EB: { class: to_eb_arrow } @@ -107,7 +139,7 @@ IB1 -> EB: { class: to_eb_arrow } -IB -> EB: { +IB -> EB0: { class: to_eb_arrow } diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index c5e4e69ce..37feaa835 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,23 +1,23 @@ -Direct certified EB Reference ApproachVolatile chain suffixEBEBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateReferencesReferences - - + .d2-2682101571 .fill-N1{fill:#0A0F25;} + .d2-2682101571 .fill-N2{fill:#676C7E;} + .d2-2682101571 .fill-N3{fill:#9499AB;} + .d2-2682101571 .fill-N4{fill:#CFD2DD;} + .d2-2682101571 .fill-N5{fill:#DEE1EB;} + .d2-2682101571 .fill-N6{fill:#EEF1F8;} + .d2-2682101571 .fill-N7{fill:#FFFFFF;} + .d2-2682101571 .fill-B1{fill:#0D32B2;} + .d2-2682101571 .fill-B2{fill:#0D32B2;} + .d2-2682101571 .fill-B3{fill:#E3E9FD;} + .d2-2682101571 .fill-B4{fill:#E3E9FD;} + .d2-2682101571 .fill-B5{fill:#EDF0FD;} + .d2-2682101571 .fill-B6{fill:#F7F8FE;} + .d2-2682101571 .fill-AA2{fill:#4A6FF3;} + .d2-2682101571 .fill-AA4{fill:#EDF0FD;} + .d2-2682101571 .fill-AA5{fill:#F7F8FE;} + .d2-2682101571 .fill-AB4{fill:#EDF0FD;} + .d2-2682101571 .fill-AB5{fill:#F7F8FE;} + .d2-2682101571 .stroke-N1{stroke:#0A0F25;} + .d2-2682101571 .stroke-N2{stroke:#676C7E;} + .d2-2682101571 .stroke-N3{stroke:#9499AB;} + .d2-2682101571 .stroke-N4{stroke:#CFD2DD;} + .d2-2682101571 .stroke-N5{stroke:#DEE1EB;} + .d2-2682101571 .stroke-N6{stroke:#EEF1F8;} + .d2-2682101571 .stroke-N7{stroke:#FFFFFF;} + .d2-2682101571 .stroke-B1{stroke:#0D32B2;} + .d2-2682101571 .stroke-B2{stroke:#0D32B2;} + .d2-2682101571 .stroke-B3{stroke:#E3E9FD;} + .d2-2682101571 .stroke-B4{stroke:#E3E9FD;} + .d2-2682101571 .stroke-B5{stroke:#EDF0FD;} + .d2-2682101571 .stroke-B6{stroke:#F7F8FE;} + .d2-2682101571 .stroke-AA2{stroke:#4A6FF3;} + .d2-2682101571 .stroke-AA4{stroke:#EDF0FD;} + .d2-2682101571 .stroke-AA5{stroke:#F7F8FE;} + .d2-2682101571 .stroke-AB4{stroke:#EDF0FD;} + .d2-2682101571 .stroke-AB5{stroke:#F7F8FE;} + .d2-2682101571 .background-color-N1{background-color:#0A0F25;} + .d2-2682101571 .background-color-N2{background-color:#676C7E;} + .d2-2682101571 .background-color-N3{background-color:#9499AB;} + .d2-2682101571 .background-color-N4{background-color:#CFD2DD;} + .d2-2682101571 .background-color-N5{background-color:#DEE1EB;} + .d2-2682101571 .background-color-N6{background-color:#EEF1F8;} + .d2-2682101571 .background-color-N7{background-color:#FFFFFF;} + .d2-2682101571 .background-color-B1{background-color:#0D32B2;} + .d2-2682101571 .background-color-B2{background-color:#0D32B2;} + .d2-2682101571 .background-color-B3{background-color:#E3E9FD;} + .d2-2682101571 .background-color-B4{background-color:#E3E9FD;} + .d2-2682101571 .background-color-B5{background-color:#EDF0FD;} + .d2-2682101571 .background-color-B6{background-color:#F7F8FE;} + .d2-2682101571 .background-color-AA2{background-color:#4A6FF3;} + .d2-2682101571 .background-color-AA4{background-color:#EDF0FD;} + .d2-2682101571 .background-color-AA5{background-color:#F7F8FE;} + .d2-2682101571 .background-color-AB4{background-color:#EDF0FD;} + .d2-2682101571 .background-color-AB5{background-color:#F7F8FE;} + .d2-2682101571 .color-N1{color:#0A0F25;} + .d2-2682101571 .color-N2{color:#676C7E;} + .d2-2682101571 .color-N3{color:#9499AB;} + .d2-2682101571 .color-N4{color:#CFD2DD;} + .d2-2682101571 .color-N5{color:#DEE1EB;} + .d2-2682101571 .color-N6{color:#EEF1F8;} + .d2-2682101571 .color-N7{color:#FFFFFF;} + .d2-2682101571 .color-B1{color:#0D32B2;} + .d2-2682101571 .color-B2{color:#0D32B2;} + .d2-2682101571 .color-B3{color:#E3E9FD;} + .d2-2682101571 .color-B4{color:#E3E9FD;} + .d2-2682101571 .color-B5{color:#EDF0FD;} + .d2-2682101571 .color-B6{color:#F7F8FE;} + .d2-2682101571 .color-AA2{color:#4A6FF3;} + .d2-2682101571 .color-AA4{color:#EDF0FD;} + .d2-2682101571 .color-AA5{color:#F7F8FE;} + .d2-2682101571 .color-AB4{color:#EDF0FD;} + .d2-2682101571 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2682101571);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2682101571);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2682101571);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2682101571);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2682101571);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2682101571);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2682101571);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2682101571);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>Direct certified EB Reference Approach (a)Volatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB CertificateReferencesReferencesReferences + + - - - - - - + + + + + + + + + - - - - - + + + + + + + diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index b663c5422..fe4d96f50 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -115,11 +115,11 @@ RB0 -> fast.EB: "Contains\nEB certificate" { # EB links secure.EB -> secure.IB: "Ref(s)" { - class: eb_arrow + class: to_ib_arrow } fast.EB -> fast.IB: "Ref(s)" { - class: eb_arrow + class: to_ib_arrow } # IB links diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index 276809b35..be1973cec 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,23 +1,23 @@ -RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef + .d2-645368883 .fill-N1{fill:#0A0F25;} + .d2-645368883 .fill-N2{fill:#676C7E;} + .d2-645368883 .fill-N3{fill:#9499AB;} + .d2-645368883 .fill-N4{fill:#CFD2DD;} + .d2-645368883 .fill-N5{fill:#DEE1EB;} + .d2-645368883 .fill-N6{fill:#EEF1F8;} + .d2-645368883 .fill-N7{fill:#FFFFFF;} + .d2-645368883 .fill-B1{fill:#0D32B2;} + .d2-645368883 .fill-B2{fill:#0D32B2;} + .d2-645368883 .fill-B3{fill:#E3E9FD;} + .d2-645368883 .fill-B4{fill:#E3E9FD;} + .d2-645368883 .fill-B5{fill:#EDF0FD;} + .d2-645368883 .fill-B6{fill:#F7F8FE;} + .d2-645368883 .fill-AA2{fill:#4A6FF3;} + .d2-645368883 .fill-AA4{fill:#EDF0FD;} + .d2-645368883 .fill-AA5{fill:#F7F8FE;} + .d2-645368883 .fill-AB4{fill:#EDF0FD;} + .d2-645368883 .fill-AB5{fill:#F7F8FE;} + .d2-645368883 .stroke-N1{stroke:#0A0F25;} + .d2-645368883 .stroke-N2{stroke:#676C7E;} + .d2-645368883 .stroke-N3{stroke:#9499AB;} + .d2-645368883 .stroke-N4{stroke:#CFD2DD;} + .d2-645368883 .stroke-N5{stroke:#DEE1EB;} + .d2-645368883 .stroke-N6{stroke:#EEF1F8;} + .d2-645368883 .stroke-N7{stroke:#FFFFFF;} + .d2-645368883 .stroke-B1{stroke:#0D32B2;} + .d2-645368883 .stroke-B2{stroke:#0D32B2;} + .d2-645368883 .stroke-B3{stroke:#E3E9FD;} + .d2-645368883 .stroke-B4{stroke:#E3E9FD;} + .d2-645368883 .stroke-B5{stroke:#EDF0FD;} + .d2-645368883 .stroke-B6{stroke:#F7F8FE;} + .d2-645368883 .stroke-AA2{stroke:#4A6FF3;} + .d2-645368883 .stroke-AA4{stroke:#EDF0FD;} + .d2-645368883 .stroke-AA5{stroke:#F7F8FE;} + .d2-645368883 .stroke-AB4{stroke:#EDF0FD;} + .d2-645368883 .stroke-AB5{stroke:#F7F8FE;} + .d2-645368883 .background-color-N1{background-color:#0A0F25;} + .d2-645368883 .background-color-N2{background-color:#676C7E;} + .d2-645368883 .background-color-N3{background-color:#9499AB;} + .d2-645368883 .background-color-N4{background-color:#CFD2DD;} + .d2-645368883 .background-color-N5{background-color:#DEE1EB;} + .d2-645368883 .background-color-N6{background-color:#EEF1F8;} + .d2-645368883 .background-color-N7{background-color:#FFFFFF;} + .d2-645368883 .background-color-B1{background-color:#0D32B2;} + .d2-645368883 .background-color-B2{background-color:#0D32B2;} + .d2-645368883 .background-color-B3{background-color:#E3E9FD;} + .d2-645368883 .background-color-B4{background-color:#E3E9FD;} + .d2-645368883 .background-color-B5{background-color:#EDF0FD;} + .d2-645368883 .background-color-B6{background-color:#F7F8FE;} + .d2-645368883 .background-color-AA2{background-color:#4A6FF3;} + .d2-645368883 .background-color-AA4{background-color:#EDF0FD;} + .d2-645368883 .background-color-AA5{background-color:#F7F8FE;} + .d2-645368883 .background-color-AB4{background-color:#EDF0FD;} + .d2-645368883 .background-color-AB5{background-color:#F7F8FE;} + .d2-645368883 .color-N1{color:#0A0F25;} + .d2-645368883 .color-N2{color:#676C7E;} + .d2-645368883 .color-N3{color:#9499AB;} + .d2-645368883 .color-N4{color:#CFD2DD;} + .d2-645368883 .color-N5{color:#DEE1EB;} + .d2-645368883 .color-N6{color:#EEF1F8;} + .d2-645368883 .color-N7{color:#FFFFFF;} + .d2-645368883 .color-B1{color:#0D32B2;} + .d2-645368883 .color-B2{color:#0D32B2;} + .d2-645368883 .color-B3{color:#E3E9FD;} + .d2-645368883 .color-B4{color:#E3E9FD;} + .d2-645368883 .color-B5{color:#EDF0FD;} + .d2-645368883 .color-B6{color:#F7F8FE;} + .d2-645368883 .color-AA2{color:#4A6FF3;} + .d2-645368883 .color-AA4{color:#EDF0FD;} + .d2-645368883 .color-AA5{color:#F7F8FE;} + .d2-645368883 .color-AB4{color:#EDF0FD;} + .d2-645368883 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-645368883);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-645368883);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-645368883);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-645368883);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-645368883);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-645368883);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-645368883);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-645368883);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef From 4bdbfce436a0961871f8263ffdaf702d65f9dddb Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 15:48:19 +0200 Subject: [PATCH 19/28] d2: add complex rb ref diagram --- docs/workshop/rb-reference-complex.d2 | 165 +++++++++++++++++++ docs/workshop/rb-reference-complex.svg | 135 ++++++++++++++++ docs/workshop/rb-reference-detailed.d2 | 8 +- docs/workshop/rb-reference-detailed.svg | 202 ++++++++++++------------ docs/workshop/rb-reference.d2 | 8 +- docs/workshop/rb-reference.svg | 196 +++++++++++------------ docs/workshop/styles.d2 | 5 + 7 files changed, 512 insertions(+), 207 deletions(-) create mode 100644 docs/workshop/rb-reference-complex.d2 create mode 100644 docs/workshop/rb-reference-complex.svg diff --git a/docs/workshop/rb-reference-complex.d2 b/docs/workshop/rb-reference-complex.d2 new file mode 100644 index 000000000..39b78b539 --- /dev/null +++ b/docs/workshop/rb-reference-complex.d2 @@ -0,0 +1,165 @@ +...@styles + +title: { + label: "RB Reference Approach (complex)" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +stable: { + label: "Stable chain prefix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(genesis, tip-k-2)" + } + + RB: { + class: rb + label: "RB\n(tip-k-1)" + } +} + +volatile: { + label: "Volatile chain suffix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(tip-k, tip-2)" + } + + RB1: { + class: rb + label: "RB\n(tip-1)" + } + + RB: { + class: rb + label: "RB\n(tip)" + } +} + +RB0: { + class: rb_unconfirmed + label: "RB" +} + +# Most secure, highest latency + +secure: { + label: "Most secure, highest latency" + class: container + + EB: { + class: eb + label: "EB" + } + + IB1: { + class: ib + label: "IB" + } + + IB: { + class: ib + label: "IB" + } +} + +fast: { + label: "Lowest latency, least secure" + class: container + + EB: { + class: eb + label: "EB" + } + + IB1: { + class: ib + label: "IB" + } + + IB: { + class: ib + label: "IB" + } +} + +# Links + +# Stable chain prefix +stable.RB -> stable.RBs: { + class: to_rb_arrow +} + +# Volatile chain suffix +volatile.RB -> volatile.RB1: { + class: to_rb_arrow +} + +volatile.RB1 -> volatile.RBs: { + class: to_rb_arrow +} + +volatile.RBs -> stable.RB: { + class: to_rb_arrow +} + +RB0 -> volatile.RB: { + class: to_rb_arrow + style: { + stroke-dash: 7 + } +} + +RB0 -> secure.EB: "Contains\nEB certificate" { + class: eb_cert +} + +RB0 -> fast.EB: "Contains\nEB certificate" { + class: eb_cert +} + +# EB links + +secure.EB -> secure.IB: "Ref" { + class: to_ib_arrow +} + +secure.EB -> secure.IB1: "Ref" { + class: to_ib_arrow +} + +fast.EB -> fast.IB: "Ref" { + class: to_ib_arrow +} + +fast.EB -> fast.IB1: "Ref" { + class: to_ib_arrow +} + +# IB links + +secure.IB -> stable.RB: "Ledger Ref" { + class: ledger_link +} + +secure.IB1 -> stable.RBs: "Ledger Ref" { + class: ledger_link +} + +fast.IB1 -> volatile.RB: "Ledger Ref" { + class: ledger_link +} + +fast.IB -> volatile.RB1: "Ledger Ref" { + class: ledger_link +} + +direction: left diff --git a/docs/workshop/rb-reference-complex.svg b/docs/workshop/rb-reference-complex.svg new file mode 100644 index 000000000..02631f902 --- /dev/null +++ b/docs/workshop/rb-reference-complex.svg @@ -0,0 +1,135 @@ +RB Reference Approach (complex)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBIBEBIBIB ContainsEB certificateContainsEB certificate RefRefRefRef Ledger RefLedger RefLedger RefLedger Ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index fe4d96f50..b0276d221 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -124,12 +124,12 @@ fast.EB -> fast.IB: "Ref(s)" { # IB links -secure.IB -> stable.RB: "Ref" { - class: to_rb_arrow +secure.IB -> stable.RB: "Ledger Ref" { + class: ledger_link } -fast.IB -> volatile.RB: "Ref" { - class: to_rb_arrow +fast.IB -> volatile.RB: "Ledger Ref" { + class: ledger_link } direction: left diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index be1973cec..3e4e10088 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,23 +1,23 @@ -RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s)RefRef - - + .d2-617446967 .fill-N1{fill:#0A0F25;} + .d2-617446967 .fill-N2{fill:#676C7E;} + .d2-617446967 .fill-N3{fill:#9499AB;} + .d2-617446967 .fill-N4{fill:#CFD2DD;} + .d2-617446967 .fill-N5{fill:#DEE1EB;} + .d2-617446967 .fill-N6{fill:#EEF1F8;} + .d2-617446967 .fill-N7{fill:#FFFFFF;} + .d2-617446967 .fill-B1{fill:#0D32B2;} + .d2-617446967 .fill-B2{fill:#0D32B2;} + .d2-617446967 .fill-B3{fill:#E3E9FD;} + .d2-617446967 .fill-B4{fill:#E3E9FD;} + .d2-617446967 .fill-B5{fill:#EDF0FD;} + .d2-617446967 .fill-B6{fill:#F7F8FE;} + .d2-617446967 .fill-AA2{fill:#4A6FF3;} + .d2-617446967 .fill-AA4{fill:#EDF0FD;} + .d2-617446967 .fill-AA5{fill:#F7F8FE;} + .d2-617446967 .fill-AB4{fill:#EDF0FD;} + .d2-617446967 .fill-AB5{fill:#F7F8FE;} + .d2-617446967 .stroke-N1{stroke:#0A0F25;} + .d2-617446967 .stroke-N2{stroke:#676C7E;} + .d2-617446967 .stroke-N3{stroke:#9499AB;} + .d2-617446967 .stroke-N4{stroke:#CFD2DD;} + .d2-617446967 .stroke-N5{stroke:#DEE1EB;} + .d2-617446967 .stroke-N6{stroke:#EEF1F8;} + .d2-617446967 .stroke-N7{stroke:#FFFFFF;} + .d2-617446967 .stroke-B1{stroke:#0D32B2;} + .d2-617446967 .stroke-B2{stroke:#0D32B2;} + .d2-617446967 .stroke-B3{stroke:#E3E9FD;} + .d2-617446967 .stroke-B4{stroke:#E3E9FD;} + .d2-617446967 .stroke-B5{stroke:#EDF0FD;} + .d2-617446967 .stroke-B6{stroke:#F7F8FE;} + .d2-617446967 .stroke-AA2{stroke:#4A6FF3;} + .d2-617446967 .stroke-AA4{stroke:#EDF0FD;} + .d2-617446967 .stroke-AA5{stroke:#F7F8FE;} + .d2-617446967 .stroke-AB4{stroke:#EDF0FD;} + .d2-617446967 .stroke-AB5{stroke:#F7F8FE;} + .d2-617446967 .background-color-N1{background-color:#0A0F25;} + .d2-617446967 .background-color-N2{background-color:#676C7E;} + .d2-617446967 .background-color-N3{background-color:#9499AB;} + .d2-617446967 .background-color-N4{background-color:#CFD2DD;} + .d2-617446967 .background-color-N5{background-color:#DEE1EB;} + .d2-617446967 .background-color-N6{background-color:#EEF1F8;} + .d2-617446967 .background-color-N7{background-color:#FFFFFF;} + .d2-617446967 .background-color-B1{background-color:#0D32B2;} + .d2-617446967 .background-color-B2{background-color:#0D32B2;} + .d2-617446967 .background-color-B3{background-color:#E3E9FD;} + .d2-617446967 .background-color-B4{background-color:#E3E9FD;} + .d2-617446967 .background-color-B5{background-color:#EDF0FD;} + .d2-617446967 .background-color-B6{background-color:#F7F8FE;} + .d2-617446967 .background-color-AA2{background-color:#4A6FF3;} + .d2-617446967 .background-color-AA4{background-color:#EDF0FD;} + .d2-617446967 .background-color-AA5{background-color:#F7F8FE;} + .d2-617446967 .background-color-AB4{background-color:#EDF0FD;} + .d2-617446967 .background-color-AB5{background-color:#F7F8FE;} + .d2-617446967 .color-N1{color:#0A0F25;} + .d2-617446967 .color-N2{color:#676C7E;} + .d2-617446967 .color-N3{color:#9499AB;} + .d2-617446967 .color-N4{color:#CFD2DD;} + .d2-617446967 .color-N5{color:#DEE1EB;} + .d2-617446967 .color-N6{color:#EEF1F8;} + .d2-617446967 .color-N7{color:#FFFFFF;} + .d2-617446967 .color-B1{color:#0D32B2;} + .d2-617446967 .color-B2{color:#0D32B2;} + .d2-617446967 .color-B3{color:#E3E9FD;} + .d2-617446967 .color-B4{color:#E3E9FD;} + .d2-617446967 .color-B5{color:#EDF0FD;} + .d2-617446967 .color-B6{color:#F7F8FE;} + .d2-617446967 .color-AA2{color:#4A6FF3;} + .d2-617446967 .color-AA4{color:#EDF0FD;} + .d2-617446967 .color-AA5{color:#F7F8FE;} + .d2-617446967 .color-AB4{color:#EDF0FD;} + .d2-617446967 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-617446967);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-617446967);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-617446967);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-617446967);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-617446967);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-617446967);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-617446967);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-617446967);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s) Ledger RefLedger Ref + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/docs/workshop/rb-reference.d2 b/docs/workshop/rb-reference.d2 index 30ddf2927..0a3c2d41c 100644 --- a/docs/workshop/rb-reference.d2 +++ b/docs/workshop/rb-reference.d2 @@ -68,12 +68,12 @@ stable.RB -> stable.RBs: { class: to_rb_arrow } -IB1 -> stable.RB: "Highest latency\nmost secure" { - class: to_rb_arrow +IB1 -> stable.RB: "Highest latency,\nmost secure\nLedger Ref" { + class: ledger_link } -IB2 -> volatile.RB: "Lowest latency\nleast secure" { - class: to_rb_arrow +IB2 -> volatile.RB: "Lowest latency,\nleast secure\nLedger Ref" { + class: ledger_link } direction: left diff --git a/docs/workshop/rb-reference.svg b/docs/workshop/rb-reference.svg index d09d009ca..a905e1de8 100644 --- a/docs/workshop/rb-reference.svg +++ b/docs/workshop/rb-reference.svg @@ -1,24 +1,24 @@ -RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latencymost secureLowest latencyleast secure - - - - - - - - - - - - - + .d2-4244575791 .fill-N1{fill:#0A0F25;} + .d2-4244575791 .fill-N2{fill:#676C7E;} + .d2-4244575791 .fill-N3{fill:#9499AB;} + .d2-4244575791 .fill-N4{fill:#CFD2DD;} + .d2-4244575791 .fill-N5{fill:#DEE1EB;} + .d2-4244575791 .fill-N6{fill:#EEF1F8;} + .d2-4244575791 .fill-N7{fill:#FFFFFF;} + .d2-4244575791 .fill-B1{fill:#0D32B2;} + .d2-4244575791 .fill-B2{fill:#0D32B2;} + .d2-4244575791 .fill-B3{fill:#E3E9FD;} + .d2-4244575791 .fill-B4{fill:#E3E9FD;} + .d2-4244575791 .fill-B5{fill:#EDF0FD;} + .d2-4244575791 .fill-B6{fill:#F7F8FE;} + .d2-4244575791 .fill-AA2{fill:#4A6FF3;} + .d2-4244575791 .fill-AA4{fill:#EDF0FD;} + .d2-4244575791 .fill-AA5{fill:#F7F8FE;} + .d2-4244575791 .fill-AB4{fill:#EDF0FD;} + .d2-4244575791 .fill-AB5{fill:#F7F8FE;} + .d2-4244575791 .stroke-N1{stroke:#0A0F25;} + .d2-4244575791 .stroke-N2{stroke:#676C7E;} + .d2-4244575791 .stroke-N3{stroke:#9499AB;} + .d2-4244575791 .stroke-N4{stroke:#CFD2DD;} + .d2-4244575791 .stroke-N5{stroke:#DEE1EB;} + .d2-4244575791 .stroke-N6{stroke:#EEF1F8;} + .d2-4244575791 .stroke-N7{stroke:#FFFFFF;} + .d2-4244575791 .stroke-B1{stroke:#0D32B2;} + .d2-4244575791 .stroke-B2{stroke:#0D32B2;} + .d2-4244575791 .stroke-B3{stroke:#E3E9FD;} + .d2-4244575791 .stroke-B4{stroke:#E3E9FD;} + .d2-4244575791 .stroke-B5{stroke:#EDF0FD;} + .d2-4244575791 .stroke-B6{stroke:#F7F8FE;} + .d2-4244575791 .stroke-AA2{stroke:#4A6FF3;} + .d2-4244575791 .stroke-AA4{stroke:#EDF0FD;} + .d2-4244575791 .stroke-AA5{stroke:#F7F8FE;} + .d2-4244575791 .stroke-AB4{stroke:#EDF0FD;} + .d2-4244575791 .stroke-AB5{stroke:#F7F8FE;} + .d2-4244575791 .background-color-N1{background-color:#0A0F25;} + .d2-4244575791 .background-color-N2{background-color:#676C7E;} + .d2-4244575791 .background-color-N3{background-color:#9499AB;} + .d2-4244575791 .background-color-N4{background-color:#CFD2DD;} + .d2-4244575791 .background-color-N5{background-color:#DEE1EB;} + .d2-4244575791 .background-color-N6{background-color:#EEF1F8;} + .d2-4244575791 .background-color-N7{background-color:#FFFFFF;} + .d2-4244575791 .background-color-B1{background-color:#0D32B2;} + .d2-4244575791 .background-color-B2{background-color:#0D32B2;} + .d2-4244575791 .background-color-B3{background-color:#E3E9FD;} + .d2-4244575791 .background-color-B4{background-color:#E3E9FD;} + .d2-4244575791 .background-color-B5{background-color:#EDF0FD;} + .d2-4244575791 .background-color-B6{background-color:#F7F8FE;} + .d2-4244575791 .background-color-AA2{background-color:#4A6FF3;} + .d2-4244575791 .background-color-AA4{background-color:#EDF0FD;} + .d2-4244575791 .background-color-AA5{background-color:#F7F8FE;} + .d2-4244575791 .background-color-AB4{background-color:#EDF0FD;} + .d2-4244575791 .background-color-AB5{background-color:#F7F8FE;} + .d2-4244575791 .color-N1{color:#0A0F25;} + .d2-4244575791 .color-N2{color:#676C7E;} + .d2-4244575791 .color-N3{color:#9499AB;} + .d2-4244575791 .color-N4{color:#CFD2DD;} + .d2-4244575791 .color-N5{color:#DEE1EB;} + .d2-4244575791 .color-N6{color:#EEF1F8;} + .d2-4244575791 .color-N7{color:#FFFFFF;} + .d2-4244575791 .color-B1{color:#0D32B2;} + .d2-4244575791 .color-B2{color:#0D32B2;} + .d2-4244575791 .color-B3{color:#E3E9FD;} + .d2-4244575791 .color-B4{color:#E3E9FD;} + .d2-4244575791 .color-B5{color:#EDF0FD;} + .d2-4244575791 .color-B6{color:#F7F8FE;} + .d2-4244575791 .color-AA2{color:#4A6FF3;} + .d2-4244575791 .color-AA4{color:#EDF0FD;} + .d2-4244575791 .color-AA5{color:#F7F8FE;} + .d2-4244575791 .color-AB4{color:#EDF0FD;} + .d2-4244575791 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-4244575791);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-4244575791);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-4244575791);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-4244575791);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-4244575791);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-4244575791);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-4244575791);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-4244575791);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latency,most secureLedger RefLowest latency,least secureLedger Ref + + + + + + + + + + + + + diff --git a/docs/workshop/styles.d2 b/docs/workshop/styles.d2 index 045b0c499..cc802eef9 100644 --- a/docs/workshop/styles.d2 +++ b/docs/workshop/styles.d2 @@ -56,6 +56,11 @@ classes: { multiple: true } } + ledger_link: { + style: { + stroke: "#6ABD6A" + } + } container: { style: { stroke: "#dedede" From 8890d771142b07218b564eb1887683a734ee4c33 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Tue, 8 Apr 2025 16:01:11 +0200 Subject: [PATCH 20/28] docs: update --- docs/workshop/day-3-recap.md | 4 +- docs/workshop/eb-reference-01.d2 | 14 +-- docs/workshop/eb-reference-01.svg | 172 ++++++++++++++--------------- docs/workshop/eb-reference-02.d2 | 176 ++++++++++++++++++++++++++++++ docs/workshop/eb-reference-02.svg | 129 ++++++++++++++++++++++ 5 files changed, 400 insertions(+), 95 deletions(-) create mode 100644 docs/workshop/eb-reference-02.d2 create mode 100644 docs/workshop/eb-reference-02.svg diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index d520f2dac..4ac4685c6 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -60,7 +60,7 @@ Each of the following approaches describes a solution where an Input Block (IB) ![RB Reference Approach](rb-reference.svg) > [!Note] -> There is a more detailed version of this including EBs, [here](./rb-reference-detailed.svg). +> There are two more version of this, a [detailed](./rb-reference-detailed.svg) and a [complex](./rb-reference-complex.svg) including EBs. #### EB Reference Approach @@ -69,7 +69,7 @@ The EB reference approach offers a middle ground between security and latency. C 1. **Direct EB Reference**: IBs directly reference certified EBs, which themselves reference an older RB. ![EB Reference Approach](eb-reference-01.svg) -2. **EB Chain Reference**: IBs reference a chain of certified EBs, where each EB references a previous EB, creating a chain of references back to an RB. This approach allows for more recent state references and covers edge cases where multiple certified EBs have been produced in parallel in the recent past. +2. **EB Chain Reference**: IBs reference an EB which itself may reference another EB, which creates this chain of EBs which at some point need to reference an RB. This approach allows for more recent state references while maintaining security through the chain of certified EBs, and handles scenarios where multiple certified EBs have been produced in parallel in the recent past. 3. **RB + EB Hybrid Reference**: IBs can reference either an RB or a certified EB, with the EB itself referencing an older RB. This provides flexibility while ensuring security. This was regarded as a bootstrap mechanism. diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 index f9300928f..6b282671a 100644 --- a/docs/workshop/eb-reference-01.d2 +++ b/docs/workshop/eb-reference-01.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "Direct certified EB Reference Approach (a)" + label: "Direct certified IB-to-EB Reference Approach (a)" near: top-center style.font-size: 24 style.bold: true @@ -109,16 +109,16 @@ RB0 -> EB0: "Contains\nEB Certificate" { } # EB references -EB1 -> volatile.RB2: "References" { - class: to_rb_arrow +EB1 -> volatile.RB2: "Ledger Ref" { + class: ledger_link } -EB -> volatile.RB1: "References" { - class: to_rb_arrow +EB -> volatile.RB1: "Ledger Ref" { + class: ledger_link } -EB0 -> volatile.RB: "References" { - class: to_rb_arrow +EB0 -> volatile.RB: "Ledger Ref" { + class: ledger_link } # IB references diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index 37feaa835..56612671d 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,24 +1,24 @@ -Direct certified EB Reference Approach (a)Volatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB CertificateReferencesReferencesReferences + .d2-3396648442 .fill-N1{fill:#0A0F25;} + .d2-3396648442 .fill-N2{fill:#676C7E;} + .d2-3396648442 .fill-N3{fill:#9499AB;} + .d2-3396648442 .fill-N4{fill:#CFD2DD;} + .d2-3396648442 .fill-N5{fill:#DEE1EB;} + .d2-3396648442 .fill-N6{fill:#EEF1F8;} + .d2-3396648442 .fill-N7{fill:#FFFFFF;} + .d2-3396648442 .fill-B1{fill:#0D32B2;} + .d2-3396648442 .fill-B2{fill:#0D32B2;} + .d2-3396648442 .fill-B3{fill:#E3E9FD;} + .d2-3396648442 .fill-B4{fill:#E3E9FD;} + .d2-3396648442 .fill-B5{fill:#EDF0FD;} + .d2-3396648442 .fill-B6{fill:#F7F8FE;} + .d2-3396648442 .fill-AA2{fill:#4A6FF3;} + .d2-3396648442 .fill-AA4{fill:#EDF0FD;} + .d2-3396648442 .fill-AA5{fill:#F7F8FE;} + .d2-3396648442 .fill-AB4{fill:#EDF0FD;} + .d2-3396648442 .fill-AB5{fill:#F7F8FE;} + .d2-3396648442 .stroke-N1{stroke:#0A0F25;} + .d2-3396648442 .stroke-N2{stroke:#676C7E;} + .d2-3396648442 .stroke-N3{stroke:#9499AB;} + .d2-3396648442 .stroke-N4{stroke:#CFD2DD;} + .d2-3396648442 .stroke-N5{stroke:#DEE1EB;} + .d2-3396648442 .stroke-N6{stroke:#EEF1F8;} + .d2-3396648442 .stroke-N7{stroke:#FFFFFF;} + .d2-3396648442 .stroke-B1{stroke:#0D32B2;} + .d2-3396648442 .stroke-B2{stroke:#0D32B2;} + .d2-3396648442 .stroke-B3{stroke:#E3E9FD;} + .d2-3396648442 .stroke-B4{stroke:#E3E9FD;} + .d2-3396648442 .stroke-B5{stroke:#EDF0FD;} + .d2-3396648442 .stroke-B6{stroke:#F7F8FE;} + .d2-3396648442 .stroke-AA2{stroke:#4A6FF3;} + .d2-3396648442 .stroke-AA4{stroke:#EDF0FD;} + .d2-3396648442 .stroke-AA5{stroke:#F7F8FE;} + .d2-3396648442 .stroke-AB4{stroke:#EDF0FD;} + .d2-3396648442 .stroke-AB5{stroke:#F7F8FE;} + .d2-3396648442 .background-color-N1{background-color:#0A0F25;} + .d2-3396648442 .background-color-N2{background-color:#676C7E;} + .d2-3396648442 .background-color-N3{background-color:#9499AB;} + .d2-3396648442 .background-color-N4{background-color:#CFD2DD;} + .d2-3396648442 .background-color-N5{background-color:#DEE1EB;} + .d2-3396648442 .background-color-N6{background-color:#EEF1F8;} + .d2-3396648442 .background-color-N7{background-color:#FFFFFF;} + .d2-3396648442 .background-color-B1{background-color:#0D32B2;} + .d2-3396648442 .background-color-B2{background-color:#0D32B2;} + .d2-3396648442 .background-color-B3{background-color:#E3E9FD;} + .d2-3396648442 .background-color-B4{background-color:#E3E9FD;} + .d2-3396648442 .background-color-B5{background-color:#EDF0FD;} + .d2-3396648442 .background-color-B6{background-color:#F7F8FE;} + .d2-3396648442 .background-color-AA2{background-color:#4A6FF3;} + .d2-3396648442 .background-color-AA4{background-color:#EDF0FD;} + .d2-3396648442 .background-color-AA5{background-color:#F7F8FE;} + .d2-3396648442 .background-color-AB4{background-color:#EDF0FD;} + .d2-3396648442 .background-color-AB5{background-color:#F7F8FE;} + .d2-3396648442 .color-N1{color:#0A0F25;} + .d2-3396648442 .color-N2{color:#676C7E;} + .d2-3396648442 .color-N3{color:#9499AB;} + .d2-3396648442 .color-N4{color:#CFD2DD;} + .d2-3396648442 .color-N5{color:#DEE1EB;} + .d2-3396648442 .color-N6{color:#EEF1F8;} + .d2-3396648442 .color-N7{color:#FFFFFF;} + .d2-3396648442 .color-B1{color:#0D32B2;} + .d2-3396648442 .color-B2{color:#0D32B2;} + .d2-3396648442 .color-B3{color:#E3E9FD;} + .d2-3396648442 .color-B4{color:#E3E9FD;} + .d2-3396648442 .color-B5{color:#EDF0FD;} + .d2-3396648442 .color-B6{color:#F7F8FE;} + .d2-3396648442 .color-AA2{color:#4A6FF3;} + .d2-3396648442 .color-AA4{color:#EDF0FD;} + .d2-3396648442 .color-AA5{color:#F7F8FE;} + .d2-3396648442 .color-AB4{color:#EDF0FD;} + .d2-3396648442 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3396648442);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3396648442);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3396648442);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3396648442);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3396648442);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3396648442);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3396648442);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3396648442);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>Direct certified IB-to-EB Reference Approach (a)Volatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB Certificate Ledger RefLedger RefLedger Ref - + diff --git a/docs/workshop/eb-reference-02.d2 b/docs/workshop/eb-reference-02.d2 new file mode 100644 index 000000000..a5e450ea2 --- /dev/null +++ b/docs/workshop/eb-reference-02.d2 @@ -0,0 +1,176 @@ +...@styles + +title: { + label: "Direct certified IB-to-EB Reference Approach (b)" + near: top-center + style.font-size: 24 + style.bold: true + style.fill: "#ffffff" + style.stroke: "#ffffff" +} + +volatile: { + label: "Volatile chain suffix" + class: container + + RBs: { + class: rb_stacked + label: "[RB]\n(tip-k, tip-3)" + } + + RB2: { + class: rb + label: "RB\n(tip-2)" + } + + RB1: { + class: rb + label: "RB\n(tip-1)" + } + + RB: { + class: rb + label: "RB\n(tip)" + } +} + +RB0: { + class: rb_unconfirmed + label: "RB" +} + +EB1: { + class: eb + label: "EB" +} + +EB: { + class: eb + label: "EB" +} + +EB0: { + class: eb + label: "EB" +} + +IB6: { + class: ib + label: "IB" +} + +IB5: { + class: ib + label: "IB" +} + +IB4: { + class: ib + label: "IB" +} + +IB3: { + class: ib + label: "IB" +} + +IB2: { + class: ib + label: "IB" +} + +IB1: { + class: ib + label: "IB" +} + +IB: { + class: ib + label: "IB" +} + +# RB references + +RB0 -> volatile.RB: { + class: to_rb_arrow +} + +volatile.RB -> volatile.RB1: { + class: to_rb_arrow +} +volatile.RB1 -> volatile.RB2: { + class: to_rb_arrow +} +volatile.RB2 -> volatile.RBs: { + class: to_rb_arrow +} + +# EB certificates +volatile.RB1 -> EB1: "Contains\nEB Certificate" { + class: eb_cert +} + +volatile.RB -> EB: "Contains\nEB Certificate" { + class: eb_cert +} + +RB0 -> EB0: "Contains\nEB Certificate" { + class: eb_cert +} + +# EB references +EB1 -> IB6: "Ref" { + class: to_ib_arrow +} + +EB1 -> IB5: "Ref" { + class: to_ib_arrow +} + +EB -> IB4: "Ref" { + class: to_ib_arrow +} + +EB -> IB3: "Ref" { + class: to_ib_arrow +} + +EB0 -> IB2: "Ref" { + class: to_ib_arrow +} + +EB0 -> IB1: "Ref" { + class: to_ib_arrow +} + +# IB references + +IB6 -> volatile.RBs: "Ledger Ref" { + class: ledger_link +} + +IB5 -> volatile.RB2: "Ledger Ref" { + class: ledger_link +} + +IB4 -> EB1: { + class: to_eb_arrow +} + +IB3 -> EB1: { + class: to_eb_arrow +} + +IB2 -> EB: { + class: to_eb_arrow +} + +IB1 -> EB: { + class: to_eb_arrow +} + +IB -> EB0: { + class: to_eb_arrow +} + +direction: left diff --git a/docs/workshop/eb-reference-02.svg b/docs/workshop/eb-reference-02.svg new file mode 100644 index 000000000..2c7d01555 --- /dev/null +++ b/docs/workshop/eb-reference-02.svg @@ -0,0 +1,129 @@ +Direct certified EB Reference ApproachVolatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB CertificateReferencesReferencesReferences + + + + + + + + + + + + + + + + + + + + + + + From b2e797b3f3b97848bf6766904d4e898c42f9fdd3 Mon Sep 17 00:00:00 2001 From: William <9065638+will-break-it@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:29:20 +0200 Subject: [PATCH 21/28] Update day-3-recap.md --- docs/workshop/day-3-recap.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 4ac4685c6..7cc943f4d 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -71,6 +71,12 @@ The EB reference approach offers a middle ground between security and latency. C 2. **EB Chain Reference**: IBs reference an EB which itself may reference another EB, which creates this chain of EBs which at some point need to reference an RB. This approach allows for more recent state references while maintaining security through the chain of certified EBs, and handles scenarios where multiple certified EBs have been produced in parallel in the recent past. +TODO: +- EBs reference one or more older EBs (that have not been referenced by RBs) +- Each RB exactly ref one EB +- IBs reference one of these EBs +- No transactions in RBs! + 3. **RB + EB Hybrid Reference**: IBs can reference either an RB or a certified EB, with the EB itself referencing an older RB. This provides flexibility while ensuring security. This was regarded as a bootstrap mechanism. **Extensions and Implementation Details:** @@ -114,4 +120,4 @@ The EB reference approach offers a middle ground between security and latency. C - State management overhead - Security properties -3. Consider hybrid approaches that combine elements from different strategies based on specific use cases. \ No newline at end of file +3. Consider hybrid approaches that combine elements from different strategies based on specific use cases. From 5769de7b711a88658d71d17c98a203a73ae5ceac Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 10:09:37 +0200 Subject: [PATCH 22/28] docs: refactored rb reference description --- docs/workshop/day-3-recap.md | 39 ++++++++++-------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 7cc943f4d..096daa111 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -10,38 +10,15 @@ Agenda ## 2. Optimistic Ledger State References -The discussion focused on different approaches for handling optimistic ledger state references in the Leios protocol. The core problem is how to validate Input Blocks (IBs) against a ledger state that is not yet settled in a Ranking Block (RB). This is essential for enabling transaction chaining, where new transactions can build upon the outputs of previous transactions that haven't yet been settled in a stable chain state, striking a careful balance between security and latency. +The discussion focused on different approaches for handling optimistic ledger state references in the Leios protocol. The core problem is how to validate Input Blocks (IBs) against a ledger state that is not yet settled in a Ranking Block (RB). This is essential for enabling transaction chaining, where new transactions can build upon the outputs of previous transactions. ### Problem Statement -Validating an Input Block (IB) requires a reference to a ledger state that can be used to verify the validity of its transactions. The choice of this reference state involves a fundamental trade-off between security and latency. The most secure approach is to reference the RB from k blocks ago (the stability horizon in Praos), where k represents the length of the volatile suffix. This provides perfect security as we can be confident that such blocks will be included in all possible futures of the chain. However, this approach introduces significant latency (potentially hours), making it impractical for many use cases that require quick transaction confirmation. +Validating an Input Block (IB) requires a reference to a ledger state that can be used to verify the validity of its transactions. The choice of this reference state involves a trade-off between security and latency. The most secure approach is to reference the RB from k blocks ago, where k is defined as the stability horizon and represents the length of the volatile chain suffix. This boundary provides perfect security as we can be confident that any older block referenced will be included in all possible futures of the chain. However, this approach introduces significant latency (potentially hours), making it impractical for many use cases that require quick transaction confirmation. As we move to more recent blocks to reduce latency, we face increasing security challenges. Not every node in the network may have seen the same recent blocks due to network latency or temporary forks. For example, if an IB references the most recent RB, nodes that haven't received that RB yet cannot validate the IB. This creates a coordination problem where we need to ensure that the reference state is available to enough nodes to reach consensus on IB validity. -### Validation Requirements - -For an IB to be valid, it must be validated against a ledger state that: -1. Is available to a majority of nodes in the network -2. Has sufficient security guarantees (e.g., certified or stable) -3. Contains all necessary UTXOs and account states for transaction validation - -The validation process requires: -- A deterministic way to reconstruct the ledger state -- Agreement among nodes about which state to use for validation -- Ability to handle cases where different nodes might have different views of the chain - -This is particularly challenging because: -- Nodes may be at different points in the chain due to network conditions -- Short forks can create temporary inconsistencies -- The need for low latency conflicts with the need for stable reference points -- The stability horizon (k blocks) provides perfect security but introduces impractical latency - -The trade-off between security and latency is fundamental: -- Using the stability horizon (k blocks back) provides perfect security but high latency -- Using more recent blocks reduces latency but requires additional mechanisms to ensure security -- Certified Endorsement Blocks (EBs) offer a middle ground, providing security guarantees with lower latency than the stability horizon - -### Approaches +### Solution Space Each of the following approaches describes a solution where an Input Block (IB) references a different block variant which provides a ledger reference for validation. @@ -52,15 +29,21 @@ Each of the following approaches describes a solution where an Input Block (IB) | [IB](#) | IBs reference other IBs | Worst | Best | Worst | Max | > [!Note] -> The choice of referenceable ledger states cannot be arbitrary, not only due to security considerations but also due to practical system constraints. Maintaining too many potential reference states would lead to excessive memory usage and computational overhead as each node would need to track and validate multiple parallel ledger states. This creates a natural tension between flexibility in reference selection and system efficiency. +> The choice of referenceable ledger states cannot be arbitrary, not only due to security considerations but also due to practical system constraints. Maintaining too many potential reference states would lead to excessive memory usage and computational overhead as each node would need to track and validate numerous parallel ledger states. We have estimated the associated computation cost in the last column of each approach. ### Data Flow Diagrams #### RB Reference Approach + +The simplified diagram below shows respective lower and upper bounds for selecting an RB as ledger state reference for validation - each showing the extreme ends of trading off latency for security. Realistically, both are not good choices and some RB such as tip-6 might be more suitable. Note, that even the tip-6 example would introduce on average a delay of 6×20s = 120s before a user could reference outputs from a previously submitted transaction. + ![RB Reference Approach](rb-reference.svg) > [!Note] -> There are two more version of this, a [detailed](./rb-reference-detailed.svg) and a [complex](./rb-reference-complex.svg) including EBs. +> The parameter k defines the stability horizon, which is the period during which the last k blocks of the chain remain mutable. After k blocks are added, all preceding blocks become immutable or in other words become part of the stable chain prefix. + +> [!Note] +> There are two more versions of this diagram, a [detailed](./rb-reference-detailed.svg) showing EBs and a [complex](./rb-reference-complex.svg) version showing EBs and IBs with different ledger state references which is likely the most realistic example of this approach. #### EB Reference Approach From fd115c05ac633233368c79ea07900d2e9764ef69 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 10:28:42 +0200 Subject: [PATCH 23/28] docs: specifically show rb-ref detail and realistic approach --- docs/workshop/day-3-recap.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 096daa111..b0a722930 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -35,15 +35,29 @@ Each of the following approaches describes a solution where an Input Block (IB) #### RB Reference Approach -The simplified diagram below shows respective lower and upper bounds for selecting an RB as ledger state reference for validation - each showing the extreme ends of trading off latency for security. Realistically, both are not good choices and some RB such as tip-6 might be more suitable. Note, that even the tip-6 example would introduce on average a delay of 6×20s = 120s before a user could reference outputs from a previously submitted transaction. +The simplified diagram below shows respective lower and upper bounds for selecting an RB as ledger state reference for validation - each showing the extreme ends of trading off latency for security. Realistically, both are not good choices and some RB such as tip-6 might be more suitable. Note, that even the tip-3 example would introduce on average a delay of 3×20s = 90s before a user could reference outputs from a previously submitted transaction. ![RB Reference Approach](rb-reference.svg) > [!Note] > The parameter k defines the stability horizon, which is the period during which the last k blocks of the chain remain mutable. After k blocks are added, all preceding blocks become immutable or in other words become part of the stable chain prefix. -> [!Note] -> There are two more versions of this diagram, a [detailed](./rb-reference-detailed.svg) showing EBs and a [complex](./rb-reference-complex.svg) version showing EBs and IBs with different ledger state references which is likely the most realistic example of this approach. +Thus, we can define a new parameter to define stability for Leios which ranges between k on the upper bound and zero on the lower (representing the tip of the chain). + +There are two more version of the same diagram detailing different aspects: + +##### 1. Including EBs + +![detailed](./rb-reference-detailed.svg) + +This diagram shows the same ledger reference approach - pointing to RBs, but also includes EBs which have been hidden in the previous example for the stake of simplicity. + +##### 2. Different RB references + +![complex](./rb-reference-complex.svg) + +The above diagram displays a more realistic picture of different IBs referencing different RBs as their ledger state reference for validation. + #### EB Reference Approach From 70b3a84f8a7c4fd001ec02789ea087c118edbffd Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 10:31:08 +0200 Subject: [PATCH 24/28] docs: update rb ref naming --- docs/workshop/day-3-recap.md | 4 +- docs/workshop/rb-reference-complex.d2 | 2 +- docs/workshop/rb-reference-complex.svg | 172 ++++++++++++------------ docs/workshop/rb-reference-detailed.d2 | 2 +- docs/workshop/rb-reference-detailed.svg | 166 +++++++++++------------ 5 files changed, 172 insertions(+), 174 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index b0a722930..125367c9a 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -44,8 +44,6 @@ The simplified diagram below shows respective lower and upper bounds for selecti Thus, we can define a new parameter to define stability for Leios which ranges between k on the upper bound and zero on the lower (representing the tip of the chain). -There are two more version of the same diagram detailing different aspects: - ##### 1. Including EBs ![detailed](./rb-reference-detailed.svg) @@ -56,7 +54,7 @@ This diagram shows the same ledger reference approach - pointing to RBs, but als ![complex](./rb-reference-complex.svg) -The above diagram displays a more realistic picture of different IBs referencing different RBs as their ledger state reference for validation. +The above diagram displays a more realistic picture of different IBs referencing different RBs as their ledger state reference for validation. In this diagram, there are design choices. One, the EB is always the latest EB available #### EB Reference Approach diff --git a/docs/workshop/rb-reference-complex.d2 b/docs/workshop/rb-reference-complex.d2 index 39b78b539..260e8fcfd 100644 --- a/docs/workshop/rb-reference-complex.d2 +++ b/docs/workshop/rb-reference-complex.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "RB Reference Approach (complex)" + label: "RB Reference Approach (including EBs & different RB references)" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/rb-reference-complex.svg b/docs/workshop/rb-reference-complex.svg index 02631f902..245cd3eb8 100644 --- a/docs/workshop/rb-reference-complex.svg +++ b/docs/workshop/rb-reference-complex.svg @@ -1,24 +1,24 @@ -RB Reference Approach (complex)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBIBEBIBIB ContainsEB certificateContainsEB certificate RefRefRefRef Ledger RefLedger RefLedger RefLedger Ref + .d2-3200234124 .fill-N1{fill:#0A0F25;} + .d2-3200234124 .fill-N2{fill:#676C7E;} + .d2-3200234124 .fill-N3{fill:#9499AB;} + .d2-3200234124 .fill-N4{fill:#CFD2DD;} + .d2-3200234124 .fill-N5{fill:#DEE1EB;} + .d2-3200234124 .fill-N6{fill:#EEF1F8;} + .d2-3200234124 .fill-N7{fill:#FFFFFF;} + .d2-3200234124 .fill-B1{fill:#0D32B2;} + .d2-3200234124 .fill-B2{fill:#0D32B2;} + .d2-3200234124 .fill-B3{fill:#E3E9FD;} + .d2-3200234124 .fill-B4{fill:#E3E9FD;} + .d2-3200234124 .fill-B5{fill:#EDF0FD;} + .d2-3200234124 .fill-B6{fill:#F7F8FE;} + .d2-3200234124 .fill-AA2{fill:#4A6FF3;} + .d2-3200234124 .fill-AA4{fill:#EDF0FD;} + .d2-3200234124 .fill-AA5{fill:#F7F8FE;} + .d2-3200234124 .fill-AB4{fill:#EDF0FD;} + .d2-3200234124 .fill-AB5{fill:#F7F8FE;} + .d2-3200234124 .stroke-N1{stroke:#0A0F25;} + .d2-3200234124 .stroke-N2{stroke:#676C7E;} + .d2-3200234124 .stroke-N3{stroke:#9499AB;} + .d2-3200234124 .stroke-N4{stroke:#CFD2DD;} + .d2-3200234124 .stroke-N5{stroke:#DEE1EB;} + .d2-3200234124 .stroke-N6{stroke:#EEF1F8;} + .d2-3200234124 .stroke-N7{stroke:#FFFFFF;} + .d2-3200234124 .stroke-B1{stroke:#0D32B2;} + .d2-3200234124 .stroke-B2{stroke:#0D32B2;} + .d2-3200234124 .stroke-B3{stroke:#E3E9FD;} + .d2-3200234124 .stroke-B4{stroke:#E3E9FD;} + .d2-3200234124 .stroke-B5{stroke:#EDF0FD;} + .d2-3200234124 .stroke-B6{stroke:#F7F8FE;} + .d2-3200234124 .stroke-AA2{stroke:#4A6FF3;} + .d2-3200234124 .stroke-AA4{stroke:#EDF0FD;} + .d2-3200234124 .stroke-AA5{stroke:#F7F8FE;} + .d2-3200234124 .stroke-AB4{stroke:#EDF0FD;} + .d2-3200234124 .stroke-AB5{stroke:#F7F8FE;} + .d2-3200234124 .background-color-N1{background-color:#0A0F25;} + .d2-3200234124 .background-color-N2{background-color:#676C7E;} + .d2-3200234124 .background-color-N3{background-color:#9499AB;} + .d2-3200234124 .background-color-N4{background-color:#CFD2DD;} + .d2-3200234124 .background-color-N5{background-color:#DEE1EB;} + .d2-3200234124 .background-color-N6{background-color:#EEF1F8;} + .d2-3200234124 .background-color-N7{background-color:#FFFFFF;} + .d2-3200234124 .background-color-B1{background-color:#0D32B2;} + .d2-3200234124 .background-color-B2{background-color:#0D32B2;} + .d2-3200234124 .background-color-B3{background-color:#E3E9FD;} + .d2-3200234124 .background-color-B4{background-color:#E3E9FD;} + .d2-3200234124 .background-color-B5{background-color:#EDF0FD;} + .d2-3200234124 .background-color-B6{background-color:#F7F8FE;} + .d2-3200234124 .background-color-AA2{background-color:#4A6FF3;} + .d2-3200234124 .background-color-AA4{background-color:#EDF0FD;} + .d2-3200234124 .background-color-AA5{background-color:#F7F8FE;} + .d2-3200234124 .background-color-AB4{background-color:#EDF0FD;} + .d2-3200234124 .background-color-AB5{background-color:#F7F8FE;} + .d2-3200234124 .color-N1{color:#0A0F25;} + .d2-3200234124 .color-N2{color:#676C7E;} + .d2-3200234124 .color-N3{color:#9499AB;} + .d2-3200234124 .color-N4{color:#CFD2DD;} + .d2-3200234124 .color-N5{color:#DEE1EB;} + .d2-3200234124 .color-N6{color:#EEF1F8;} + .d2-3200234124 .color-N7{color:#FFFFFF;} + .d2-3200234124 .color-B1{color:#0D32B2;} + .d2-3200234124 .color-B2{color:#0D32B2;} + .d2-3200234124 .color-B3{color:#E3E9FD;} + .d2-3200234124 .color-B4{color:#E3E9FD;} + .d2-3200234124 .color-B5{color:#EDF0FD;} + .d2-3200234124 .color-B6{color:#F7F8FE;} + .d2-3200234124 .color-AA2{color:#4A6FF3;} + .d2-3200234124 .color-AA4{color:#EDF0FD;} + .d2-3200234124 .color-AA5{color:#F7F8FE;} + .d2-3200234124 .color-AB4{color:#EDF0FD;} + .d2-3200234124 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3200234124);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3200234124);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3200234124);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3200234124);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3200234124);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3200234124);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3200234124);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3200234124);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (including EBs & different RB references)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBIBEBIBIB ContainsEB certificateContainsEB certificate RefRefRefRef Ledger RefLedger RefLedger RefLedger Ref - + diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index b0276d221..5673e5f80 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "RB Reference Approach (detailed)" + label: "RB Reference Approach (including EBs)" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index 3e4e10088..247f0a8eb 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,23 +1,23 @@ -RB Reference Approach (detailed)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s) Ledger RefLedger Ref + .d2-4220614029 .fill-N1{fill:#0A0F25;} + .d2-4220614029 .fill-N2{fill:#676C7E;} + .d2-4220614029 .fill-N3{fill:#9499AB;} + .d2-4220614029 .fill-N4{fill:#CFD2DD;} + .d2-4220614029 .fill-N5{fill:#DEE1EB;} + .d2-4220614029 .fill-N6{fill:#EEF1F8;} + .d2-4220614029 .fill-N7{fill:#FFFFFF;} + .d2-4220614029 .fill-B1{fill:#0D32B2;} + .d2-4220614029 .fill-B2{fill:#0D32B2;} + .d2-4220614029 .fill-B3{fill:#E3E9FD;} + .d2-4220614029 .fill-B4{fill:#E3E9FD;} + .d2-4220614029 .fill-B5{fill:#EDF0FD;} + .d2-4220614029 .fill-B6{fill:#F7F8FE;} + .d2-4220614029 .fill-AA2{fill:#4A6FF3;} + .d2-4220614029 .fill-AA4{fill:#EDF0FD;} + .d2-4220614029 .fill-AA5{fill:#F7F8FE;} + .d2-4220614029 .fill-AB4{fill:#EDF0FD;} + .d2-4220614029 .fill-AB5{fill:#F7F8FE;} + .d2-4220614029 .stroke-N1{stroke:#0A0F25;} + .d2-4220614029 .stroke-N2{stroke:#676C7E;} + .d2-4220614029 .stroke-N3{stroke:#9499AB;} + .d2-4220614029 .stroke-N4{stroke:#CFD2DD;} + .d2-4220614029 .stroke-N5{stroke:#DEE1EB;} + .d2-4220614029 .stroke-N6{stroke:#EEF1F8;} + .d2-4220614029 .stroke-N7{stroke:#FFFFFF;} + .d2-4220614029 .stroke-B1{stroke:#0D32B2;} + .d2-4220614029 .stroke-B2{stroke:#0D32B2;} + .d2-4220614029 .stroke-B3{stroke:#E3E9FD;} + .d2-4220614029 .stroke-B4{stroke:#E3E9FD;} + .d2-4220614029 .stroke-B5{stroke:#EDF0FD;} + .d2-4220614029 .stroke-B6{stroke:#F7F8FE;} + .d2-4220614029 .stroke-AA2{stroke:#4A6FF3;} + .d2-4220614029 .stroke-AA4{stroke:#EDF0FD;} + .d2-4220614029 .stroke-AA5{stroke:#F7F8FE;} + .d2-4220614029 .stroke-AB4{stroke:#EDF0FD;} + .d2-4220614029 .stroke-AB5{stroke:#F7F8FE;} + .d2-4220614029 .background-color-N1{background-color:#0A0F25;} + .d2-4220614029 .background-color-N2{background-color:#676C7E;} + .d2-4220614029 .background-color-N3{background-color:#9499AB;} + .d2-4220614029 .background-color-N4{background-color:#CFD2DD;} + .d2-4220614029 .background-color-N5{background-color:#DEE1EB;} + .d2-4220614029 .background-color-N6{background-color:#EEF1F8;} + .d2-4220614029 .background-color-N7{background-color:#FFFFFF;} + .d2-4220614029 .background-color-B1{background-color:#0D32B2;} + .d2-4220614029 .background-color-B2{background-color:#0D32B2;} + .d2-4220614029 .background-color-B3{background-color:#E3E9FD;} + .d2-4220614029 .background-color-B4{background-color:#E3E9FD;} + .d2-4220614029 .background-color-B5{background-color:#EDF0FD;} + .d2-4220614029 .background-color-B6{background-color:#F7F8FE;} + .d2-4220614029 .background-color-AA2{background-color:#4A6FF3;} + .d2-4220614029 .background-color-AA4{background-color:#EDF0FD;} + .d2-4220614029 .background-color-AA5{background-color:#F7F8FE;} + .d2-4220614029 .background-color-AB4{background-color:#EDF0FD;} + .d2-4220614029 .background-color-AB5{background-color:#F7F8FE;} + .d2-4220614029 .color-N1{color:#0A0F25;} + .d2-4220614029 .color-N2{color:#676C7E;} + .d2-4220614029 .color-N3{color:#9499AB;} + .d2-4220614029 .color-N4{color:#CFD2DD;} + .d2-4220614029 .color-N5{color:#DEE1EB;} + .d2-4220614029 .color-N6{color:#EEF1F8;} + .d2-4220614029 .color-N7{color:#FFFFFF;} + .d2-4220614029 .color-B1{color:#0D32B2;} + .d2-4220614029 .color-B2{color:#0D32B2;} + .d2-4220614029 .color-B3{color:#E3E9FD;} + .d2-4220614029 .color-B4{color:#E3E9FD;} + .d2-4220614029 .color-B5{color:#EDF0FD;} + .d2-4220614029 .color-B6{color:#F7F8FE;} + .d2-4220614029 .color-AA2{color:#4A6FF3;} + .d2-4220614029 .color-AA4{color:#EDF0FD;} + .d2-4220614029 .color-AA5{color:#F7F8FE;} + .d2-4220614029 .color-AB4{color:#EDF0FD;} + .d2-4220614029 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-4220614029);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-4220614029);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-4220614029);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-4220614029);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-4220614029);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-4220614029);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-4220614029);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-4220614029);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>RB Reference Approach (including EBs)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s) Ledger RefLedger Ref - + From fdd5220154348c4b9a64a2539b112adc620f3162 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 10:36:14 +0200 Subject: [PATCH 25/28] docs: refactored naming & references --- docs/workshop/day-3-recap.md | 11 +- docs/workshop/rb-reference-detailed.d2 | 2 +- docs/workshop/rb-reference-detailed.svg | 166 +++++++++--------- ...e-complex.d2 => rb-reference-realistic.d2} | 2 +- ...complex.svg => rb-reference-realistic.svg} | 166 +++++++++--------- docs/workshop/rb-reference.d2 | 2 +- docs/workshop/rb-reference.svg | 166 +++++++++--------- 7 files changed, 257 insertions(+), 258 deletions(-) rename docs/workshop/{rb-reference-complex.d2 => rb-reference-realistic.d2} (96%) rename docs/workshop/{rb-reference-complex.svg => rb-reference-realistic.svg} (50%) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 125367c9a..2c0eeb76d 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -33,9 +33,9 @@ Each of the following approaches describes a solution where an Input Block (IB) ### Data Flow Diagrams -#### RB Reference Approach +#### IB-to-RB Reference Approach -The simplified diagram below shows respective lower and upper bounds for selecting an RB as ledger state reference for validation - each showing the extreme ends of trading off latency for security. Realistically, both are not good choices and some RB such as tip-6 might be more suitable. Note, that even the tip-3 example would introduce on average a delay of 3×20s = 90s before a user could reference outputs from a previously submitted transaction. +The simplified diagram below shows respective lower and upper bounds for selecting an RB as ledger state reference for IB validation - each showing the extreme ends of trading off latency for security. Realistically, both are not good choices and some RB such as tip-6 might be more suitable. Note, that even the tip-3 example would introduce on average a delay of 3×20s = 90s before a user could reference outputs from a previously submitted transaction. ![RB Reference Approach](rb-reference.svg) @@ -50,12 +50,11 @@ Thus, we can define a new parameter to define stability for Leios which ranges b This diagram shows the same ledger reference approach - pointing to RBs, but also includes EBs which have been hidden in the previous example for the stake of simplicity. -##### 2. Different RB references +##### 2. Different IB-to-RB references -![complex](./rb-reference-complex.svg) - -The above diagram displays a more realistic picture of different IBs referencing different RBs as their ledger state reference for validation. In this diagram, there are design choices. One, the EB is always the latest EB available +![complex](./rb-reference-realistic.svg) +The above diagram displays a more realistic picture of different IBs referencing different RBs as their ledger state reference for validation. #### EB Reference Approach diff --git a/docs/workshop/rb-reference-detailed.d2 b/docs/workshop/rb-reference-detailed.d2 index 5673e5f80..6210f6f21 100644 --- a/docs/workshop/rb-reference-detailed.d2 +++ b/docs/workshop/rb-reference-detailed.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "RB Reference Approach (including EBs)" + label: "IB-to-RB Reference Approach (including EBs)" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/rb-reference-detailed.svg b/docs/workshop/rb-reference-detailed.svg index 247f0a8eb..93e49fd5a 100644 --- a/docs/workshop/rb-reference-detailed.svg +++ b/docs/workshop/rb-reference-detailed.svg @@ -1,23 +1,23 @@ -RB Reference Approach (including EBs)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s) Ledger RefLedger Ref + .d2-414556699 .fill-N1{fill:#0A0F25;} + .d2-414556699 .fill-N2{fill:#676C7E;} + .d2-414556699 .fill-N3{fill:#9499AB;} + .d2-414556699 .fill-N4{fill:#CFD2DD;} + .d2-414556699 .fill-N5{fill:#DEE1EB;} + .d2-414556699 .fill-N6{fill:#EEF1F8;} + .d2-414556699 .fill-N7{fill:#FFFFFF;} + .d2-414556699 .fill-B1{fill:#0D32B2;} + .d2-414556699 .fill-B2{fill:#0D32B2;} + .d2-414556699 .fill-B3{fill:#E3E9FD;} + .d2-414556699 .fill-B4{fill:#E3E9FD;} + .d2-414556699 .fill-B5{fill:#EDF0FD;} + .d2-414556699 .fill-B6{fill:#F7F8FE;} + .d2-414556699 .fill-AA2{fill:#4A6FF3;} + .d2-414556699 .fill-AA4{fill:#EDF0FD;} + .d2-414556699 .fill-AA5{fill:#F7F8FE;} + .d2-414556699 .fill-AB4{fill:#EDF0FD;} + .d2-414556699 .fill-AB5{fill:#F7F8FE;} + .d2-414556699 .stroke-N1{stroke:#0A0F25;} + .d2-414556699 .stroke-N2{stroke:#676C7E;} + .d2-414556699 .stroke-N3{stroke:#9499AB;} + .d2-414556699 .stroke-N4{stroke:#CFD2DD;} + .d2-414556699 .stroke-N5{stroke:#DEE1EB;} + .d2-414556699 .stroke-N6{stroke:#EEF1F8;} + .d2-414556699 .stroke-N7{stroke:#FFFFFF;} + .d2-414556699 .stroke-B1{stroke:#0D32B2;} + .d2-414556699 .stroke-B2{stroke:#0D32B2;} + .d2-414556699 .stroke-B3{stroke:#E3E9FD;} + .d2-414556699 .stroke-B4{stroke:#E3E9FD;} + .d2-414556699 .stroke-B5{stroke:#EDF0FD;} + .d2-414556699 .stroke-B6{stroke:#F7F8FE;} + .d2-414556699 .stroke-AA2{stroke:#4A6FF3;} + .d2-414556699 .stroke-AA4{stroke:#EDF0FD;} + .d2-414556699 .stroke-AA5{stroke:#F7F8FE;} + .d2-414556699 .stroke-AB4{stroke:#EDF0FD;} + .d2-414556699 .stroke-AB5{stroke:#F7F8FE;} + .d2-414556699 .background-color-N1{background-color:#0A0F25;} + .d2-414556699 .background-color-N2{background-color:#676C7E;} + .d2-414556699 .background-color-N3{background-color:#9499AB;} + .d2-414556699 .background-color-N4{background-color:#CFD2DD;} + .d2-414556699 .background-color-N5{background-color:#DEE1EB;} + .d2-414556699 .background-color-N6{background-color:#EEF1F8;} + .d2-414556699 .background-color-N7{background-color:#FFFFFF;} + .d2-414556699 .background-color-B1{background-color:#0D32B2;} + .d2-414556699 .background-color-B2{background-color:#0D32B2;} + .d2-414556699 .background-color-B3{background-color:#E3E9FD;} + .d2-414556699 .background-color-B4{background-color:#E3E9FD;} + .d2-414556699 .background-color-B5{background-color:#EDF0FD;} + .d2-414556699 .background-color-B6{background-color:#F7F8FE;} + .d2-414556699 .background-color-AA2{background-color:#4A6FF3;} + .d2-414556699 .background-color-AA4{background-color:#EDF0FD;} + .d2-414556699 .background-color-AA5{background-color:#F7F8FE;} + .d2-414556699 .background-color-AB4{background-color:#EDF0FD;} + .d2-414556699 .background-color-AB5{background-color:#F7F8FE;} + .d2-414556699 .color-N1{color:#0A0F25;} + .d2-414556699 .color-N2{color:#676C7E;} + .d2-414556699 .color-N3{color:#9499AB;} + .d2-414556699 .color-N4{color:#CFD2DD;} + .d2-414556699 .color-N5{color:#DEE1EB;} + .d2-414556699 .color-N6{color:#EEF1F8;} + .d2-414556699 .color-N7{color:#FFFFFF;} + .d2-414556699 .color-B1{color:#0D32B2;} + .d2-414556699 .color-B2{color:#0D32B2;} + .d2-414556699 .color-B3{color:#E3E9FD;} + .d2-414556699 .color-B4{color:#E3E9FD;} + .d2-414556699 .color-B5{color:#EDF0FD;} + .d2-414556699 .color-B6{color:#F7F8FE;} + .d2-414556699 .color-AA2{color:#4A6FF3;} + .d2-414556699 .color-AA4{color:#EDF0FD;} + .d2-414556699 .color-AA5{color:#F7F8FE;} + .d2-414556699 .color-AB4{color:#EDF0FD;} + .d2-414556699 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-414556699);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-414556699);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-414556699);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-414556699);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-414556699);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-414556699);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-414556699);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-414556699);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>IB-to-RB Reference Approach (including EBs)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBEBIB ContainsEB certificateContainsEB certificate Ref(s)Ref(s) Ledger RefLedger Ref - + diff --git a/docs/workshop/rb-reference-complex.d2 b/docs/workshop/rb-reference-realistic.d2 similarity index 96% rename from docs/workshop/rb-reference-complex.d2 rename to docs/workshop/rb-reference-realistic.d2 index 260e8fcfd..7c2697d44 100644 --- a/docs/workshop/rb-reference-complex.d2 +++ b/docs/workshop/rb-reference-realistic.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "RB Reference Approach (including EBs & different RB references)" + label: "IB-to-RB Reference Approach (including EBs & different RB references)" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/rb-reference-complex.svg b/docs/workshop/rb-reference-realistic.svg similarity index 50% rename from docs/workshop/rb-reference-complex.svg rename to docs/workshop/rb-reference-realistic.svg index 245cd3eb8..377703997 100644 --- a/docs/workshop/rb-reference-complex.svg +++ b/docs/workshop/rb-reference-realistic.svg @@ -1,23 +1,23 @@ -RB Reference Approach (including EBs & different RB references)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBIBEBIBIB ContainsEB certificateContainsEB certificate RefRefRefRef Ledger RefLedger RefLedger RefLedger Ref + .d2-3355248022 .fill-N1{fill:#0A0F25;} + .d2-3355248022 .fill-N2{fill:#676C7E;} + .d2-3355248022 .fill-N3{fill:#9499AB;} + .d2-3355248022 .fill-N4{fill:#CFD2DD;} + .d2-3355248022 .fill-N5{fill:#DEE1EB;} + .d2-3355248022 .fill-N6{fill:#EEF1F8;} + .d2-3355248022 .fill-N7{fill:#FFFFFF;} + .d2-3355248022 .fill-B1{fill:#0D32B2;} + .d2-3355248022 .fill-B2{fill:#0D32B2;} + .d2-3355248022 .fill-B3{fill:#E3E9FD;} + .d2-3355248022 .fill-B4{fill:#E3E9FD;} + .d2-3355248022 .fill-B5{fill:#EDF0FD;} + .d2-3355248022 .fill-B6{fill:#F7F8FE;} + .d2-3355248022 .fill-AA2{fill:#4A6FF3;} + .d2-3355248022 .fill-AA4{fill:#EDF0FD;} + .d2-3355248022 .fill-AA5{fill:#F7F8FE;} + .d2-3355248022 .fill-AB4{fill:#EDF0FD;} + .d2-3355248022 .fill-AB5{fill:#F7F8FE;} + .d2-3355248022 .stroke-N1{stroke:#0A0F25;} + .d2-3355248022 .stroke-N2{stroke:#676C7E;} + .d2-3355248022 .stroke-N3{stroke:#9499AB;} + .d2-3355248022 .stroke-N4{stroke:#CFD2DD;} + .d2-3355248022 .stroke-N5{stroke:#DEE1EB;} + .d2-3355248022 .stroke-N6{stroke:#EEF1F8;} + .d2-3355248022 .stroke-N7{stroke:#FFFFFF;} + .d2-3355248022 .stroke-B1{stroke:#0D32B2;} + .d2-3355248022 .stroke-B2{stroke:#0D32B2;} + .d2-3355248022 .stroke-B3{stroke:#E3E9FD;} + .d2-3355248022 .stroke-B4{stroke:#E3E9FD;} + .d2-3355248022 .stroke-B5{stroke:#EDF0FD;} + .d2-3355248022 .stroke-B6{stroke:#F7F8FE;} + .d2-3355248022 .stroke-AA2{stroke:#4A6FF3;} + .d2-3355248022 .stroke-AA4{stroke:#EDF0FD;} + .d2-3355248022 .stroke-AA5{stroke:#F7F8FE;} + .d2-3355248022 .stroke-AB4{stroke:#EDF0FD;} + .d2-3355248022 .stroke-AB5{stroke:#F7F8FE;} + .d2-3355248022 .background-color-N1{background-color:#0A0F25;} + .d2-3355248022 .background-color-N2{background-color:#676C7E;} + .d2-3355248022 .background-color-N3{background-color:#9499AB;} + .d2-3355248022 .background-color-N4{background-color:#CFD2DD;} + .d2-3355248022 .background-color-N5{background-color:#DEE1EB;} + .d2-3355248022 .background-color-N6{background-color:#EEF1F8;} + .d2-3355248022 .background-color-N7{background-color:#FFFFFF;} + .d2-3355248022 .background-color-B1{background-color:#0D32B2;} + .d2-3355248022 .background-color-B2{background-color:#0D32B2;} + .d2-3355248022 .background-color-B3{background-color:#E3E9FD;} + .d2-3355248022 .background-color-B4{background-color:#E3E9FD;} + .d2-3355248022 .background-color-B5{background-color:#EDF0FD;} + .d2-3355248022 .background-color-B6{background-color:#F7F8FE;} + .d2-3355248022 .background-color-AA2{background-color:#4A6FF3;} + .d2-3355248022 .background-color-AA4{background-color:#EDF0FD;} + .d2-3355248022 .background-color-AA5{background-color:#F7F8FE;} + .d2-3355248022 .background-color-AB4{background-color:#EDF0FD;} + .d2-3355248022 .background-color-AB5{background-color:#F7F8FE;} + .d2-3355248022 .color-N1{color:#0A0F25;} + .d2-3355248022 .color-N2{color:#676C7E;} + .d2-3355248022 .color-N3{color:#9499AB;} + .d2-3355248022 .color-N4{color:#CFD2DD;} + .d2-3355248022 .color-N5{color:#DEE1EB;} + .d2-3355248022 .color-N6{color:#EEF1F8;} + .d2-3355248022 .color-N7{color:#FFFFFF;} + .d2-3355248022 .color-B1{color:#0D32B2;} + .d2-3355248022 .color-B2{color:#0D32B2;} + .d2-3355248022 .color-B3{color:#E3E9FD;} + .d2-3355248022 .color-B4{color:#E3E9FD;} + .d2-3355248022 .color-B5{color:#EDF0FD;} + .d2-3355248022 .color-B6{color:#F7F8FE;} + .d2-3355248022 .color-AA2{color:#4A6FF3;} + .d2-3355248022 .color-AA4{color:#EDF0FD;} + .d2-3355248022 .color-AA5{color:#F7F8FE;} + .d2-3355248022 .color-AB4{color:#EDF0FD;} + .d2-3355248022 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3355248022);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3355248022);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3355248022);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3355248022);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3355248022);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3355248022);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3355248022);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3355248022);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>IB-to-RB Reference Approach (including EBs & different RB references)Stable chain prefixVolatile chain suffixRBMost secure, highest latencyLowest latency, least secure[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EBIBIBEBIBIB ContainsEB certificateContainsEB certificate RefRefRefRef Ledger RefLedger RefLedger RefLedger Ref - + diff --git a/docs/workshop/rb-reference.d2 b/docs/workshop/rb-reference.d2 index 0a3c2d41c..c6256e209 100644 --- a/docs/workshop/rb-reference.d2 +++ b/docs/workshop/rb-reference.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "RB Reference Approach" + label: "IB-to-RB Reference Approach" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/rb-reference.svg b/docs/workshop/rb-reference.svg index a905e1de8..781f3e1ca 100644 --- a/docs/workshop/rb-reference.svg +++ b/docs/workshop/rb-reference.svg @@ -1,23 +1,23 @@ -RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latency,most secureLedger RefLowest latency,least secureLedger Ref + .d2-1855631960 .fill-N1{fill:#0A0F25;} + .d2-1855631960 .fill-N2{fill:#676C7E;} + .d2-1855631960 .fill-N3{fill:#9499AB;} + .d2-1855631960 .fill-N4{fill:#CFD2DD;} + .d2-1855631960 .fill-N5{fill:#DEE1EB;} + .d2-1855631960 .fill-N6{fill:#EEF1F8;} + .d2-1855631960 .fill-N7{fill:#FFFFFF;} + .d2-1855631960 .fill-B1{fill:#0D32B2;} + .d2-1855631960 .fill-B2{fill:#0D32B2;} + .d2-1855631960 .fill-B3{fill:#E3E9FD;} + .d2-1855631960 .fill-B4{fill:#E3E9FD;} + .d2-1855631960 .fill-B5{fill:#EDF0FD;} + .d2-1855631960 .fill-B6{fill:#F7F8FE;} + .d2-1855631960 .fill-AA2{fill:#4A6FF3;} + .d2-1855631960 .fill-AA4{fill:#EDF0FD;} + .d2-1855631960 .fill-AA5{fill:#F7F8FE;} + .d2-1855631960 .fill-AB4{fill:#EDF0FD;} + .d2-1855631960 .fill-AB5{fill:#F7F8FE;} + .d2-1855631960 .stroke-N1{stroke:#0A0F25;} + .d2-1855631960 .stroke-N2{stroke:#676C7E;} + .d2-1855631960 .stroke-N3{stroke:#9499AB;} + .d2-1855631960 .stroke-N4{stroke:#CFD2DD;} + .d2-1855631960 .stroke-N5{stroke:#DEE1EB;} + .d2-1855631960 .stroke-N6{stroke:#EEF1F8;} + .d2-1855631960 .stroke-N7{stroke:#FFFFFF;} + .d2-1855631960 .stroke-B1{stroke:#0D32B2;} + .d2-1855631960 .stroke-B2{stroke:#0D32B2;} + .d2-1855631960 .stroke-B3{stroke:#E3E9FD;} + .d2-1855631960 .stroke-B4{stroke:#E3E9FD;} + .d2-1855631960 .stroke-B5{stroke:#EDF0FD;} + .d2-1855631960 .stroke-B6{stroke:#F7F8FE;} + .d2-1855631960 .stroke-AA2{stroke:#4A6FF3;} + .d2-1855631960 .stroke-AA4{stroke:#EDF0FD;} + .d2-1855631960 .stroke-AA5{stroke:#F7F8FE;} + .d2-1855631960 .stroke-AB4{stroke:#EDF0FD;} + .d2-1855631960 .stroke-AB5{stroke:#F7F8FE;} + .d2-1855631960 .background-color-N1{background-color:#0A0F25;} + .d2-1855631960 .background-color-N2{background-color:#676C7E;} + .d2-1855631960 .background-color-N3{background-color:#9499AB;} + .d2-1855631960 .background-color-N4{background-color:#CFD2DD;} + .d2-1855631960 .background-color-N5{background-color:#DEE1EB;} + .d2-1855631960 .background-color-N6{background-color:#EEF1F8;} + .d2-1855631960 .background-color-N7{background-color:#FFFFFF;} + .d2-1855631960 .background-color-B1{background-color:#0D32B2;} + .d2-1855631960 .background-color-B2{background-color:#0D32B2;} + .d2-1855631960 .background-color-B3{background-color:#E3E9FD;} + .d2-1855631960 .background-color-B4{background-color:#E3E9FD;} + .d2-1855631960 .background-color-B5{background-color:#EDF0FD;} + .d2-1855631960 .background-color-B6{background-color:#F7F8FE;} + .d2-1855631960 .background-color-AA2{background-color:#4A6FF3;} + .d2-1855631960 .background-color-AA4{background-color:#EDF0FD;} + .d2-1855631960 .background-color-AA5{background-color:#F7F8FE;} + .d2-1855631960 .background-color-AB4{background-color:#EDF0FD;} + .d2-1855631960 .background-color-AB5{background-color:#F7F8FE;} + .d2-1855631960 .color-N1{color:#0A0F25;} + .d2-1855631960 .color-N2{color:#676C7E;} + .d2-1855631960 .color-N3{color:#9499AB;} + .d2-1855631960 .color-N4{color:#CFD2DD;} + .d2-1855631960 .color-N5{color:#DEE1EB;} + .d2-1855631960 .color-N6{color:#EEF1F8;} + .d2-1855631960 .color-N7{color:#FFFFFF;} + .d2-1855631960 .color-B1{color:#0D32B2;} + .d2-1855631960 .color-B2{color:#0D32B2;} + .d2-1855631960 .color-B3{color:#E3E9FD;} + .d2-1855631960 .color-B4{color:#E3E9FD;} + .d2-1855631960 .color-B5{color:#EDF0FD;} + .d2-1855631960 .color-B6{color:#F7F8FE;} + .d2-1855631960 .color-AA2{color:#4A6FF3;} + .d2-1855631960 .color-AA4{color:#EDF0FD;} + .d2-1855631960 .color-AA5{color:#F7F8FE;} + .d2-1855631960 .color-AB4{color:#EDF0FD;} + .d2-1855631960 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1855631960);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1855631960);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1855631960);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1855631960);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1855631960);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1855631960);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1855631960);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1855631960);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>IB-to-RB Reference ApproachStable chain prefixVolatile chain suffixIB 1IB 2[RB](genesis, tip-k-2)RB(tip-k-1)[RB](tip-k, tip-2)RB(tip-1)RB(tip) Highest latency,most secureLedger RefLowest latency,least secureLedger Ref - + From 373696b585367354c4e621c0d73de4f200ee8456 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 11:27:14 +0200 Subject: [PATCH 26/28] docs: add eb reference design --- docs/workshop/day-3-recap.md | 24 ++-- docs/workshop/eb-reference-01.d2 | 2 +- docs/workshop/eb-reference-01.svg | 172 +++++++++++------------ docs/workshop/eb-reference-02.d2 | 171 ++++++++++++----------- docs/workshop/eb-reference-02.svg | 224 ++++++++++++++++-------------- 5 files changed, 305 insertions(+), 288 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index 2c0eeb76d..dc33c55f6 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -60,18 +60,26 @@ The above diagram displays a more realistic picture of different IBs referencing The EB reference approach offers a middle ground between security and latency. Certified EBs (those that have received votes from a majority of stake) provide security guarantees with lower latency than the [RB-reference approach](#rb-reference-approach), as they indicate that enough nodes have seen and validated them. Several core variations of the EB reference approach were discussed: -1. **Direct EB Reference**: IBs directly reference certified EBs, which themselves reference an older RB. +##### 1. **IB-to-EB-to-RB Reference**: IBs directly reference certified EBs, which themselves reference an older RB. ![EB Reference Approach](eb-reference-01.svg) -2. **EB Chain Reference**: IBs reference an EB which itself may reference another EB, which creates this chain of EBs which at some point need to reference an RB. This approach allows for more recent state references while maintaining security through the chain of certified EBs, and handles scenarios where multiple certified EBs have been produced in parallel in the recent past. +Different to the [IB-to-RB referencing](#ib-to-rb-reference-approach), this approach has IBs reference an EB instead which itself references an RB. -TODO: -- EBs reference one or more older EBs (that have not been referenced by RBs) -- Each RB exactly ref one EB -- IBs reference one of these EBs -- No transactions in RBs! +We briefly discussed an alternative design choice, in which IBs reference an EB and an RB. However, that design would result in many ledger states that would need to be computed and was therefore dismissed as too expensive. -3. **RB + EB Hybrid Reference**: IBs can reference either an RB or a certified EB, with the EB itself referencing an older RB. This provides flexibility while ensuring security. This was regarded as a bootstrap mechanism. +In this design, one gets a ledger state for each RB which gives a ledger state for each EB to be reused and IBs are validated with respect to that same state. On the contrary, due to EBs referencing an RB, there is still the same trade-off to be made as in the [IB-to-RB reference approach](#ib-to-rb-reference-approach) - having to chose more or less stable RBs for EBs resulting in higher latency or higher loss in EBs. + + +##### 2. **EB Chain/ IB-to-EB-(to-EB)*-to-RB** + +In this approach IBs reference an EB which itself may reference another EB, which creates this chain of EBs that anchors on some older RB reference. Thus, EBs may have an RB reference or another EB reference of an EB that has not made it into an RB yet (full Leios variant). RBs on the other hand can only exactly reference one certified EB. IBs reference one of these EBs. + +This approach allows for more recent state references while maintaining security through the chain of certified EBs, and handles edge-case scenarios, where multiple EBs have been produced: + +- from different pipelines in parallel +- from the same pipeline + +![EB Chain Approach](eb-reference-02.svg) **Extensions and Implementation Details:** diff --git a/docs/workshop/eb-reference-01.d2 b/docs/workshop/eb-reference-01.d2 index 6b282671a..310415e00 100644 --- a/docs/workshop/eb-reference-01.d2 +++ b/docs/workshop/eb-reference-01.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "Direct certified IB-to-EB Reference Approach (a)" + label: "IB-to-EB-to-RB Reference Approach" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/eb-reference-01.svg b/docs/workshop/eb-reference-01.svg index 56612671d..b896ef2b6 100644 --- a/docs/workshop/eb-reference-01.svg +++ b/docs/workshop/eb-reference-01.svg @@ -1,24 +1,24 @@ -Direct certified IB-to-EB Reference Approach (a)Volatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB Certificate Ledger RefLedger RefLedger Ref + .d2-223856736 .fill-N1{fill:#0A0F25;} + .d2-223856736 .fill-N2{fill:#676C7E;} + .d2-223856736 .fill-N3{fill:#9499AB;} + .d2-223856736 .fill-N4{fill:#CFD2DD;} + .d2-223856736 .fill-N5{fill:#DEE1EB;} + .d2-223856736 .fill-N6{fill:#EEF1F8;} + .d2-223856736 .fill-N7{fill:#FFFFFF;} + .d2-223856736 .fill-B1{fill:#0D32B2;} + .d2-223856736 .fill-B2{fill:#0D32B2;} + .d2-223856736 .fill-B3{fill:#E3E9FD;} + .d2-223856736 .fill-B4{fill:#E3E9FD;} + .d2-223856736 .fill-B5{fill:#EDF0FD;} + .d2-223856736 .fill-B6{fill:#F7F8FE;} + .d2-223856736 .fill-AA2{fill:#4A6FF3;} + .d2-223856736 .fill-AA4{fill:#EDF0FD;} + .d2-223856736 .fill-AA5{fill:#F7F8FE;} + .d2-223856736 .fill-AB4{fill:#EDF0FD;} + .d2-223856736 .fill-AB5{fill:#F7F8FE;} + .d2-223856736 .stroke-N1{stroke:#0A0F25;} + .d2-223856736 .stroke-N2{stroke:#676C7E;} + .d2-223856736 .stroke-N3{stroke:#9499AB;} + .d2-223856736 .stroke-N4{stroke:#CFD2DD;} + .d2-223856736 .stroke-N5{stroke:#DEE1EB;} + .d2-223856736 .stroke-N6{stroke:#EEF1F8;} + .d2-223856736 .stroke-N7{stroke:#FFFFFF;} + .d2-223856736 .stroke-B1{stroke:#0D32B2;} + .d2-223856736 .stroke-B2{stroke:#0D32B2;} + .d2-223856736 .stroke-B3{stroke:#E3E9FD;} + .d2-223856736 .stroke-B4{stroke:#E3E9FD;} + .d2-223856736 .stroke-B5{stroke:#EDF0FD;} + .d2-223856736 .stroke-B6{stroke:#F7F8FE;} + .d2-223856736 .stroke-AA2{stroke:#4A6FF3;} + .d2-223856736 .stroke-AA4{stroke:#EDF0FD;} + .d2-223856736 .stroke-AA5{stroke:#F7F8FE;} + .d2-223856736 .stroke-AB4{stroke:#EDF0FD;} + .d2-223856736 .stroke-AB5{stroke:#F7F8FE;} + .d2-223856736 .background-color-N1{background-color:#0A0F25;} + .d2-223856736 .background-color-N2{background-color:#676C7E;} + .d2-223856736 .background-color-N3{background-color:#9499AB;} + .d2-223856736 .background-color-N4{background-color:#CFD2DD;} + .d2-223856736 .background-color-N5{background-color:#DEE1EB;} + .d2-223856736 .background-color-N6{background-color:#EEF1F8;} + .d2-223856736 .background-color-N7{background-color:#FFFFFF;} + .d2-223856736 .background-color-B1{background-color:#0D32B2;} + .d2-223856736 .background-color-B2{background-color:#0D32B2;} + .d2-223856736 .background-color-B3{background-color:#E3E9FD;} + .d2-223856736 .background-color-B4{background-color:#E3E9FD;} + .d2-223856736 .background-color-B5{background-color:#EDF0FD;} + .d2-223856736 .background-color-B6{background-color:#F7F8FE;} + .d2-223856736 .background-color-AA2{background-color:#4A6FF3;} + .d2-223856736 .background-color-AA4{background-color:#EDF0FD;} + .d2-223856736 .background-color-AA5{background-color:#F7F8FE;} + .d2-223856736 .background-color-AB4{background-color:#EDF0FD;} + .d2-223856736 .background-color-AB5{background-color:#F7F8FE;} + .d2-223856736 .color-N1{color:#0A0F25;} + .d2-223856736 .color-N2{color:#676C7E;} + .d2-223856736 .color-N3{color:#9499AB;} + .d2-223856736 .color-N4{color:#CFD2DD;} + .d2-223856736 .color-N5{color:#DEE1EB;} + .d2-223856736 .color-N6{color:#EEF1F8;} + .d2-223856736 .color-N7{color:#FFFFFF;} + .d2-223856736 .color-B1{color:#0D32B2;} + .d2-223856736 .color-B2{color:#0D32B2;} + .d2-223856736 .color-B3{color:#E3E9FD;} + .d2-223856736 .color-B4{color:#E3E9FD;} + .d2-223856736 .color-B5{color:#EDF0FD;} + .d2-223856736 .color-B6{color:#F7F8FE;} + .d2-223856736 .color-AA2{color:#4A6FF3;} + .d2-223856736 .color-AA4{color:#EDF0FD;} + .d2-223856736 .color-AA5{color:#F7F8FE;} + .d2-223856736 .color-AB4{color:#EDF0FD;} + .d2-223856736 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-223856736);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-223856736);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-223856736);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-223856736);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-223856736);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-223856736);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-223856736);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-223856736);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>IB-to-EB-to-RB Reference ApproachVolatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB Certificate Ledger RefLedger RefLedger Ref - + diff --git a/docs/workshop/eb-reference-02.d2 b/docs/workshop/eb-reference-02.d2 index a5e450ea2..808d44e41 100644 --- a/docs/workshop/eb-reference-02.d2 +++ b/docs/workshop/eb-reference-02.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "Direct certified IB-to-EB Reference Approach (b)" + label: "EB Chain/ IB-to-EB-(to-EB)*-to-RB Reference Approach" near: top-center style.font-size: 24 style.bold: true @@ -15,12 +15,7 @@ volatile: { RBs: { class: rb_stacked - label: "[RB]\n(tip-k, tip-3)" - } - - RB2: { - class: rb - label: "RB\n(tip-2)" + label: "[RB]\n(tip-k, tip-2)" } RB1: { @@ -39,138 +34,142 @@ RB0: { label: "RB" } -EB1: { - class: eb - label: "EB" -} - -EB: { - class: eb - label: "EB" -} +# EB Chain Example 1 - Simple chain with older RB reference +eb_chain1: { + label: "EB Chain Example 1 (Older RB Reference)" + class: container -EB0: { - class: eb - label: "EB" -} + EB1: { + class: eb + label: "EB1" + } -IB6: { - class: ib - label: "IB" -} + EB2: { + class: eb + label: "EB2" + } -IB5: { - class: ib - label: "IB" -} + IB1: { + class: ib + label: "IB1" + } -IB4: { - class: ib - label: "IB" + IB2: { + class: ib + label: "IB2" + } } -IB3: { - class: ib - label: "IB" -} +# EB Chain Example 2 - Multiple EBs from different pipelines with recent RB reference +eb_chain2: { + label: "EB Chain Example 2 (Recent RB Reference)" + class: container -IB2: { - class: ib - label: "IB" -} + EB3: { + class: eb + label: "EB3\n(Pipeline A)" + } -IB1: { - class: ib - label: "IB" -} + EB4: { + class: eb + label: "EB4\n(Pipeline B)" + } -IB: { - class: ib - label: "IB" -} + EB5: { + class: eb + label: "EB5\n(Pipeline A)" + } -# RB references + IB3: { + class: ib + label: "IB3" + } -RB0 -> volatile.RB: { - class: to_rb_arrow + IB4: { + class: ib + label: "IB4" + } } +# Links + +# Volatile chain suffix volatile.RB -> volatile.RB1: { class: to_rb_arrow } -volatile.RB1 -> volatile.RB2: { + +volatile.RB1 -> volatile.RBs: { class: to_rb_arrow } -volatile.RB2 -> volatile.RBs: { + +RB0 -> volatile.RB: { class: to_rb_arrow + style: { + stroke-dash: 7 + } } -# EB certificates -volatile.RB1 -> EB1: "Contains\nEB Certificate" { +# EB Certificates +RB0 -> eb_chain1.EB1: "Contains\nEB Certificate" { class: eb_cert } -volatile.RB -> EB: "Contains\nEB Certificate" { +RB0 -> eb_chain2.EB3: "Contains\nEB Certificate" { class: eb_cert } -RB0 -> EB0: "Contains\nEB Certificate" { +RB0 -> eb_chain2.EB4: "Contains\nEB Certificate" { class: eb_cert } -# EB references -EB1 -> IB6: "Ref" { - class: to_ib_arrow +# EB Chain 1 - Simple chain with older RB reference +eb_chain1.EB1 -> eb_chain1.EB2: "EB Ref" { + class: to_eb_arrow } -EB1 -> IB5: "Ref" { - class: to_ib_arrow +eb_chain1.EB2 -> volatile.RBs: "Ledger Ref" { + class: ledger_link } -EB -> IB4: "Ref" { +# EB to IB references for Example 1 +eb_chain1.EB1 -> eb_chain1.IB2: "Ref" { class: to_ib_arrow } -EB -> IB3: "Ref" { - class: to_ib_arrow +# IB validation references for Example 1 +eb_chain1.IB1 -> eb_chain1.EB1: "Validated against" { + class: ledger_link } -EB0 -> IB2: "Ref" { - class: to_ib_arrow +eb_chain1.IB2 -> eb_chain1.EB2: "Validated against" { + class: ledger_link } -EB0 -> IB1: "Ref" { - class: to_ib_arrow +# EB Chain 2 - Multiple pipelines with recent RB reference +eb_chain2.EB3 -> eb_chain2.EB5: "EB Ref" { + class: to_eb_arrow } -# IB references - -IB6 -> volatile.RBs: "Ledger Ref" { +eb_chain2.EB4 -> volatile.RB1: "Ledger Ref" { class: ledger_link } -IB5 -> volatile.RB2: "Ledger Ref" { +eb_chain2.EB5 -> volatile.RB: "Ledger Ref" { class: ledger_link } -IB4 -> EB1: { - class: to_eb_arrow -} - -IB3 -> EB1: { - class: to_eb_arrow -} - -IB2 -> EB: { - class: to_eb_arrow +# EB to IB references for Example 2 +eb_chain2.EB3 -> eb_chain2.IB4: "Ref" { + class: to_ib_arrow } -IB1 -> EB: { - class: to_eb_arrow +# IB validation references for Example 2 +eb_chain2.IB3 -> eb_chain2.EB3: "Validated against" { + class: ledger_link } -IB -> EB0: { - class: to_eb_arrow +eb_chain2.IB4 -> eb_chain2.EB4: "Validated against" { + class: ledger_link } direction: left diff --git a/docs/workshop/eb-reference-02.svg b/docs/workshop/eb-reference-02.svg index 2c7d01555..96908d1e5 100644 --- a/docs/workshop/eb-reference-02.svg +++ b/docs/workshop/eb-reference-02.svg @@ -1,24 +1,24 @@ -Direct certified EB Reference ApproachVolatile chain suffixRBEBEBEBIBIBIBIBIB[RB](tip-k, tip-3)RB(tip-2)RB(tip-1)RB(tip) ContainsEB CertificateContainsEB CertificateContainsEB CertificateReferencesReferencesReferences - - - - - - - - - - - - - - - - - - - - - - + .d2-3402506449 .fill-N1{fill:#0A0F25;} + .d2-3402506449 .fill-N2{fill:#676C7E;} + .d2-3402506449 .fill-N3{fill:#9499AB;} + .d2-3402506449 .fill-N4{fill:#CFD2DD;} + .d2-3402506449 .fill-N5{fill:#DEE1EB;} + .d2-3402506449 .fill-N6{fill:#EEF1F8;} + .d2-3402506449 .fill-N7{fill:#FFFFFF;} + .d2-3402506449 .fill-B1{fill:#0D32B2;} + .d2-3402506449 .fill-B2{fill:#0D32B2;} + .d2-3402506449 .fill-B3{fill:#E3E9FD;} + .d2-3402506449 .fill-B4{fill:#E3E9FD;} + .d2-3402506449 .fill-B5{fill:#EDF0FD;} + .d2-3402506449 .fill-B6{fill:#F7F8FE;} + .d2-3402506449 .fill-AA2{fill:#4A6FF3;} + .d2-3402506449 .fill-AA4{fill:#EDF0FD;} + .d2-3402506449 .fill-AA5{fill:#F7F8FE;} + .d2-3402506449 .fill-AB4{fill:#EDF0FD;} + .d2-3402506449 .fill-AB5{fill:#F7F8FE;} + .d2-3402506449 .stroke-N1{stroke:#0A0F25;} + .d2-3402506449 .stroke-N2{stroke:#676C7E;} + .d2-3402506449 .stroke-N3{stroke:#9499AB;} + .d2-3402506449 .stroke-N4{stroke:#CFD2DD;} + .d2-3402506449 .stroke-N5{stroke:#DEE1EB;} + .d2-3402506449 .stroke-N6{stroke:#EEF1F8;} + .d2-3402506449 .stroke-N7{stroke:#FFFFFF;} + .d2-3402506449 .stroke-B1{stroke:#0D32B2;} + .d2-3402506449 .stroke-B2{stroke:#0D32B2;} + .d2-3402506449 .stroke-B3{stroke:#E3E9FD;} + .d2-3402506449 .stroke-B4{stroke:#E3E9FD;} + .d2-3402506449 .stroke-B5{stroke:#EDF0FD;} + .d2-3402506449 .stroke-B6{stroke:#F7F8FE;} + .d2-3402506449 .stroke-AA2{stroke:#4A6FF3;} + .d2-3402506449 .stroke-AA4{stroke:#EDF0FD;} + .d2-3402506449 .stroke-AA5{stroke:#F7F8FE;} + .d2-3402506449 .stroke-AB4{stroke:#EDF0FD;} + .d2-3402506449 .stroke-AB5{stroke:#F7F8FE;} + .d2-3402506449 .background-color-N1{background-color:#0A0F25;} + .d2-3402506449 .background-color-N2{background-color:#676C7E;} + .d2-3402506449 .background-color-N3{background-color:#9499AB;} + .d2-3402506449 .background-color-N4{background-color:#CFD2DD;} + .d2-3402506449 .background-color-N5{background-color:#DEE1EB;} + .d2-3402506449 .background-color-N6{background-color:#EEF1F8;} + .d2-3402506449 .background-color-N7{background-color:#FFFFFF;} + .d2-3402506449 .background-color-B1{background-color:#0D32B2;} + .d2-3402506449 .background-color-B2{background-color:#0D32B2;} + .d2-3402506449 .background-color-B3{background-color:#E3E9FD;} + .d2-3402506449 .background-color-B4{background-color:#E3E9FD;} + .d2-3402506449 .background-color-B5{background-color:#EDF0FD;} + .d2-3402506449 .background-color-B6{background-color:#F7F8FE;} + .d2-3402506449 .background-color-AA2{background-color:#4A6FF3;} + .d2-3402506449 .background-color-AA4{background-color:#EDF0FD;} + .d2-3402506449 .background-color-AA5{background-color:#F7F8FE;} + .d2-3402506449 .background-color-AB4{background-color:#EDF0FD;} + .d2-3402506449 .background-color-AB5{background-color:#F7F8FE;} + .d2-3402506449 .color-N1{color:#0A0F25;} + .d2-3402506449 .color-N2{color:#676C7E;} + .d2-3402506449 .color-N3{color:#9499AB;} + .d2-3402506449 .color-N4{color:#CFD2DD;} + .d2-3402506449 .color-N5{color:#DEE1EB;} + .d2-3402506449 .color-N6{color:#EEF1F8;} + .d2-3402506449 .color-N7{color:#FFFFFF;} + .d2-3402506449 .color-B1{color:#0D32B2;} + .d2-3402506449 .color-B2{color:#0D32B2;} + .d2-3402506449 .color-B3{color:#E3E9FD;} + .d2-3402506449 .color-B4{color:#E3E9FD;} + .d2-3402506449 .color-B5{color:#EDF0FD;} + .d2-3402506449 .color-B6{color:#F7F8FE;} + .d2-3402506449 .color-AA2{color:#4A6FF3;} + .d2-3402506449 .color-AA4{color:#EDF0FD;} + .d2-3402506449 .color-AA5{color:#F7F8FE;} + .d2-3402506449 .color-AB4{color:#EDF0FD;} + .d2-3402506449 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3402506449);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3402506449);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3402506449);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3402506449);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3402506449);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3402506449);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3402506449);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3402506449);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>EB Chain/ IB-to-EB-(to-EB)*-to-RB Reference ApproachVolatile chain suffixRBEB Chain Example 1 (Older RB Reference)EB Chain Example 2 (Recent RB Reference)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EB1EB2IB1IB2EB3(Pipeline A)EB4(Pipeline B)EB5(Pipeline A)IB3IB4 ContainsEB CertificateContainsEB CertificateContainsEB CertificateEB Ref Ledger Ref RefValidated againstValidated againstEB RefLedger RefLedger RefRefValidated againstValidated against + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6ba47140a9aa54e4f41dcf52adc073f032366dfe Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 11:32:00 +0200 Subject: [PATCH 27/28] docs: clean up --- docs/workshop/day-3-recap.md | 21 +--- docs/workshop/eb-reference-02.d2 | 2 +- docs/workshop/eb-reference-02.svg | 164 +++++++++++++++--------------- 3 files changed, 88 insertions(+), 99 deletions(-) diff --git a/docs/workshop/day-3-recap.md b/docs/workshop/day-3-recap.md index dc33c55f6..410934f47 100644 --- a/docs/workshop/day-3-recap.md +++ b/docs/workshop/day-3-recap.md @@ -70,13 +70,13 @@ We briefly discussed an alternative design choice, in which IBs reference an EB In this design, one gets a ledger state for each RB which gives a ledger state for each EB to be reused and IBs are validated with respect to that same state. On the contrary, due to EBs referencing an RB, there is still the same trade-off to be made as in the [IB-to-RB reference approach](#ib-to-rb-reference-approach) - having to chose more or less stable RBs for EBs resulting in higher latency or higher loss in EBs. -##### 2. **EB Chain/ IB-to-EB-(to-EB)*-to-RB** +##### 2. **EB Chain/ IB-to-EB(-to-EB)*-to-RB** In this approach IBs reference an EB which itself may reference another EB, which creates this chain of EBs that anchors on some older RB reference. Thus, EBs may have an RB reference or another EB reference of an EB that has not made it into an RB yet (full Leios variant). RBs on the other hand can only exactly reference one certified EB. IBs reference one of these EBs. This approach allows for more recent state references while maintaining security through the chain of certified EBs, and handles edge-case scenarios, where multiple EBs have been produced: -- from different pipelines in parallel +- from different pipelines in parallel (see EB ordering below) - from the same pipeline ![EB Chain Approach](eb-reference-02.svg) @@ -85,9 +85,7 @@ This approach allows for more recent state references while maintaining security - **Minimum Age Requirement**: A constraint where EBs must reference an RB that is at least a certain age (e.g., 5 minutes old) to ensure it's widely available in the network. -- **EB Ordering by Slot**: In the Leios protocol, multiple pipelines run in parallel, each ideally producing one RB. With parameters set for 1.5 EBs per stage (with randomness via VRF functions potentially producing more), there may be multiple EBs to choose from for inclusion in an RB. This approach orders EBs by slot number and VRF hash, with a predefined ordering function to resolve conflicts when multiple EBs exist for the same slot or from different pipelines. - -- **Orphan Prevention**: A mechanism where RBs should not include EBs that reference orphaned EBs (those not included in previous RBs), helping to maintain a clear reference chain across pipelines. +- **EB Ordering by Slot**: In the Leios protocol, multiple pipelines run in parallel, each ideally producing one RB. With parameters set for 1.5 EBs per stage (with randomness via VRF functions potentially producing more), there may be multiple EBs to choose from for inclusion in an RB. - **EB State Reuse**: An optimization technique where, when computing ledger states for EBs in a chain, we reuse the ledger state from referenced EBs and only replay the IBs in the current EB, reducing computational overhead, especially important when dealing with multiple pipelines and stages. @@ -108,18 +106,9 @@ This approach allows for more recent state references while maintaining security 3. **Certification**: Certified EBs provide stability similar to RBs but with lower latency, making them a promising middle ground. -4. **Implementation Complexity**: The IB reference approach, while offering the lowest latency, introduces significant complexity in validation and security guarantees. - ### Next Steps -1. Further analysis of the EB reference approach, particularly around: +Further analysis of the EB reference approach, particularly around: - EB ordering mechanisms - - State reconstruction efficiency + - State reconstruction efficiency (computational cost) - Security guarantees - -2. Simulation studies to quantify: - - Latency improvements - - State management overhead - - Security properties - -3. Consider hybrid approaches that combine elements from different strategies based on specific use cases. diff --git a/docs/workshop/eb-reference-02.d2 b/docs/workshop/eb-reference-02.d2 index 808d44e41..a6d6a5a62 100644 --- a/docs/workshop/eb-reference-02.d2 +++ b/docs/workshop/eb-reference-02.d2 @@ -1,7 +1,7 @@ ...@styles title: { - label: "EB Chain/ IB-to-EB-(to-EB)*-to-RB Reference Approach" + label: "EB Chain/ IB-to-EB(-to-EB)*-to-RB Reference Approach" near: top-center style.font-size: 24 style.bold: true diff --git a/docs/workshop/eb-reference-02.svg b/docs/workshop/eb-reference-02.svg index 96908d1e5..2f8df1ba9 100644 --- a/docs/workshop/eb-reference-02.svg +++ b/docs/workshop/eb-reference-02.svg @@ -1,23 +1,23 @@ -EB Chain/ IB-to-EB-(to-EB)*-to-RB Reference ApproachVolatile chain suffixRBEB Chain Example 1 (Older RB Reference)EB Chain Example 2 (Recent RB Reference)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EB1EB2IB1IB2EB3(Pipeline A)EB4(Pipeline B)EB5(Pipeline A)IB3IB4 ContainsEB CertificateContainsEB CertificateContainsEB CertificateEB Ref Ledger Ref RefValidated againstValidated againstEB RefLedger RefLedger RefRefValidated againstValidated against + .d2-1060319171 .fill-N1{fill:#0A0F25;} + .d2-1060319171 .fill-N2{fill:#676C7E;} + .d2-1060319171 .fill-N3{fill:#9499AB;} + .d2-1060319171 .fill-N4{fill:#CFD2DD;} + .d2-1060319171 .fill-N5{fill:#DEE1EB;} + .d2-1060319171 .fill-N6{fill:#EEF1F8;} + .d2-1060319171 .fill-N7{fill:#FFFFFF;} + .d2-1060319171 .fill-B1{fill:#0D32B2;} + .d2-1060319171 .fill-B2{fill:#0D32B2;} + .d2-1060319171 .fill-B3{fill:#E3E9FD;} + .d2-1060319171 .fill-B4{fill:#E3E9FD;} + .d2-1060319171 .fill-B5{fill:#EDF0FD;} + .d2-1060319171 .fill-B6{fill:#F7F8FE;} + .d2-1060319171 .fill-AA2{fill:#4A6FF3;} + .d2-1060319171 .fill-AA4{fill:#EDF0FD;} + .d2-1060319171 .fill-AA5{fill:#F7F8FE;} + .d2-1060319171 .fill-AB4{fill:#EDF0FD;} + .d2-1060319171 .fill-AB5{fill:#F7F8FE;} + .d2-1060319171 .stroke-N1{stroke:#0A0F25;} + .d2-1060319171 .stroke-N2{stroke:#676C7E;} + .d2-1060319171 .stroke-N3{stroke:#9499AB;} + .d2-1060319171 .stroke-N4{stroke:#CFD2DD;} + .d2-1060319171 .stroke-N5{stroke:#DEE1EB;} + .d2-1060319171 .stroke-N6{stroke:#EEF1F8;} + .d2-1060319171 .stroke-N7{stroke:#FFFFFF;} + .d2-1060319171 .stroke-B1{stroke:#0D32B2;} + .d2-1060319171 .stroke-B2{stroke:#0D32B2;} + .d2-1060319171 .stroke-B3{stroke:#E3E9FD;} + .d2-1060319171 .stroke-B4{stroke:#E3E9FD;} + .d2-1060319171 .stroke-B5{stroke:#EDF0FD;} + .d2-1060319171 .stroke-B6{stroke:#F7F8FE;} + .d2-1060319171 .stroke-AA2{stroke:#4A6FF3;} + .d2-1060319171 .stroke-AA4{stroke:#EDF0FD;} + .d2-1060319171 .stroke-AA5{stroke:#F7F8FE;} + .d2-1060319171 .stroke-AB4{stroke:#EDF0FD;} + .d2-1060319171 .stroke-AB5{stroke:#F7F8FE;} + .d2-1060319171 .background-color-N1{background-color:#0A0F25;} + .d2-1060319171 .background-color-N2{background-color:#676C7E;} + .d2-1060319171 .background-color-N3{background-color:#9499AB;} + .d2-1060319171 .background-color-N4{background-color:#CFD2DD;} + .d2-1060319171 .background-color-N5{background-color:#DEE1EB;} + .d2-1060319171 .background-color-N6{background-color:#EEF1F8;} + .d2-1060319171 .background-color-N7{background-color:#FFFFFF;} + .d2-1060319171 .background-color-B1{background-color:#0D32B2;} + .d2-1060319171 .background-color-B2{background-color:#0D32B2;} + .d2-1060319171 .background-color-B3{background-color:#E3E9FD;} + .d2-1060319171 .background-color-B4{background-color:#E3E9FD;} + .d2-1060319171 .background-color-B5{background-color:#EDF0FD;} + .d2-1060319171 .background-color-B6{background-color:#F7F8FE;} + .d2-1060319171 .background-color-AA2{background-color:#4A6FF3;} + .d2-1060319171 .background-color-AA4{background-color:#EDF0FD;} + .d2-1060319171 .background-color-AA5{background-color:#F7F8FE;} + .d2-1060319171 .background-color-AB4{background-color:#EDF0FD;} + .d2-1060319171 .background-color-AB5{background-color:#F7F8FE;} + .d2-1060319171 .color-N1{color:#0A0F25;} + .d2-1060319171 .color-N2{color:#676C7E;} + .d2-1060319171 .color-N3{color:#9499AB;} + .d2-1060319171 .color-N4{color:#CFD2DD;} + .d2-1060319171 .color-N5{color:#DEE1EB;} + .d2-1060319171 .color-N6{color:#EEF1F8;} + .d2-1060319171 .color-N7{color:#FFFFFF;} + .d2-1060319171 .color-B1{color:#0D32B2;} + .d2-1060319171 .color-B2{color:#0D32B2;} + .d2-1060319171 .color-B3{color:#E3E9FD;} + .d2-1060319171 .color-B4{color:#E3E9FD;} + .d2-1060319171 .color-B5{color:#EDF0FD;} + .d2-1060319171 .color-B6{color:#F7F8FE;} + .d2-1060319171 .color-AA2{color:#4A6FF3;} + .d2-1060319171 .color-AA4{color:#EDF0FD;} + .d2-1060319171 .color-AA5{color:#F7F8FE;} + .d2-1060319171 .color-AB4{color:#EDF0FD;} + .d2-1060319171 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1060319171);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1060319171);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1060319171);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1060319171);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1060319171);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1060319171);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1060319171);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1060319171);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>EB Chain/ IB-to-EB(-to-EB)*-to-RB Reference ApproachVolatile chain suffixRBEB Chain Example 1 (Older RB Reference)EB Chain Example 2 (Recent RB Reference)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EB1EB2IB1IB2EB3(Pipeline A)EB4(Pipeline B)EB5(Pipeline A)IB3IB4 ContainsEB CertificateContainsEB CertificateContainsEB CertificateEB Ref Ledger Ref RefValidated againstValidated againstEB RefLedger RefLedger RefRefValidated againstValidated against From ebe2e8bc06f39978470614966691863c6bce00d1 Mon Sep 17 00:00:00 2001 From: William Wolff Date: Wed, 9 Apr 2025 11:33:21 +0200 Subject: [PATCH 28/28] d2: update eb chain links --- docs/workshop/eb-reference-02.d2 | 4 +- docs/workshop/eb-reference-02.svg | 228 +++++++++++++++--------------- 2 files changed, 116 insertions(+), 116 deletions(-) diff --git a/docs/workshop/eb-reference-02.d2 b/docs/workshop/eb-reference-02.d2 index a6d6a5a62..c50c96b1d 100644 --- a/docs/workshop/eb-reference-02.d2 +++ b/docs/workshop/eb-reference-02.d2 @@ -150,11 +150,11 @@ eb_chain2.EB3 -> eb_chain2.EB5: "EB Ref" { class: to_eb_arrow } -eb_chain2.EB4 -> volatile.RB1: "Ledger Ref" { +eb_chain2.EB4 -> volatile.RB: "Ledger Ref" { class: ledger_link } -eb_chain2.EB5 -> volatile.RB: "Ledger Ref" { +eb_chain2.EB5 -> volatile.RB1: "Ledger Ref" { class: ledger_link } diff --git a/docs/workshop/eb-reference-02.svg b/docs/workshop/eb-reference-02.svg index 2f8df1ba9..b50a72497 100644 --- a/docs/workshop/eb-reference-02.svg +++ b/docs/workshop/eb-reference-02.svg @@ -1,23 +1,23 @@ -EB Chain/ IB-to-EB(-to-EB)*-to-RB Reference ApproachVolatile chain suffixRBEB Chain Example 1 (Older RB Reference)EB Chain Example 2 (Recent RB Reference)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EB1EB2IB1IB2EB3(Pipeline A)EB4(Pipeline B)EB5(Pipeline A)IB3IB4 ContainsEB CertificateContainsEB CertificateContainsEB CertificateEB Ref Ledger Ref RefValidated againstValidated againstEB RefLedger RefLedger RefRefValidated againstValidated against - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + .d2-4088610634 .fill-N1{fill:#0A0F25;} + .d2-4088610634 .fill-N2{fill:#676C7E;} + .d2-4088610634 .fill-N3{fill:#9499AB;} + .d2-4088610634 .fill-N4{fill:#CFD2DD;} + .d2-4088610634 .fill-N5{fill:#DEE1EB;} + .d2-4088610634 .fill-N6{fill:#EEF1F8;} + .d2-4088610634 .fill-N7{fill:#FFFFFF;} + .d2-4088610634 .fill-B1{fill:#0D32B2;} + .d2-4088610634 .fill-B2{fill:#0D32B2;} + .d2-4088610634 .fill-B3{fill:#E3E9FD;} + .d2-4088610634 .fill-B4{fill:#E3E9FD;} + .d2-4088610634 .fill-B5{fill:#EDF0FD;} + .d2-4088610634 .fill-B6{fill:#F7F8FE;} + .d2-4088610634 .fill-AA2{fill:#4A6FF3;} + .d2-4088610634 .fill-AA4{fill:#EDF0FD;} + .d2-4088610634 .fill-AA5{fill:#F7F8FE;} + .d2-4088610634 .fill-AB4{fill:#EDF0FD;} + .d2-4088610634 .fill-AB5{fill:#F7F8FE;} + .d2-4088610634 .stroke-N1{stroke:#0A0F25;} + .d2-4088610634 .stroke-N2{stroke:#676C7E;} + .d2-4088610634 .stroke-N3{stroke:#9499AB;} + .d2-4088610634 .stroke-N4{stroke:#CFD2DD;} + .d2-4088610634 .stroke-N5{stroke:#DEE1EB;} + .d2-4088610634 .stroke-N6{stroke:#EEF1F8;} + .d2-4088610634 .stroke-N7{stroke:#FFFFFF;} + .d2-4088610634 .stroke-B1{stroke:#0D32B2;} + .d2-4088610634 .stroke-B2{stroke:#0D32B2;} + .d2-4088610634 .stroke-B3{stroke:#E3E9FD;} + .d2-4088610634 .stroke-B4{stroke:#E3E9FD;} + .d2-4088610634 .stroke-B5{stroke:#EDF0FD;} + .d2-4088610634 .stroke-B6{stroke:#F7F8FE;} + .d2-4088610634 .stroke-AA2{stroke:#4A6FF3;} + .d2-4088610634 .stroke-AA4{stroke:#EDF0FD;} + .d2-4088610634 .stroke-AA5{stroke:#F7F8FE;} + .d2-4088610634 .stroke-AB4{stroke:#EDF0FD;} + .d2-4088610634 .stroke-AB5{stroke:#F7F8FE;} + .d2-4088610634 .background-color-N1{background-color:#0A0F25;} + .d2-4088610634 .background-color-N2{background-color:#676C7E;} + .d2-4088610634 .background-color-N3{background-color:#9499AB;} + .d2-4088610634 .background-color-N4{background-color:#CFD2DD;} + .d2-4088610634 .background-color-N5{background-color:#DEE1EB;} + .d2-4088610634 .background-color-N6{background-color:#EEF1F8;} + .d2-4088610634 .background-color-N7{background-color:#FFFFFF;} + .d2-4088610634 .background-color-B1{background-color:#0D32B2;} + .d2-4088610634 .background-color-B2{background-color:#0D32B2;} + .d2-4088610634 .background-color-B3{background-color:#E3E9FD;} + .d2-4088610634 .background-color-B4{background-color:#E3E9FD;} + .d2-4088610634 .background-color-B5{background-color:#EDF0FD;} + .d2-4088610634 .background-color-B6{background-color:#F7F8FE;} + .d2-4088610634 .background-color-AA2{background-color:#4A6FF3;} + .d2-4088610634 .background-color-AA4{background-color:#EDF0FD;} + .d2-4088610634 .background-color-AA5{background-color:#F7F8FE;} + .d2-4088610634 .background-color-AB4{background-color:#EDF0FD;} + .d2-4088610634 .background-color-AB5{background-color:#F7F8FE;} + .d2-4088610634 .color-N1{color:#0A0F25;} + .d2-4088610634 .color-N2{color:#676C7E;} + .d2-4088610634 .color-N3{color:#9499AB;} + .d2-4088610634 .color-N4{color:#CFD2DD;} + .d2-4088610634 .color-N5{color:#DEE1EB;} + .d2-4088610634 .color-N6{color:#EEF1F8;} + .d2-4088610634 .color-N7{color:#FFFFFF;} + .d2-4088610634 .color-B1{color:#0D32B2;} + .d2-4088610634 .color-B2{color:#0D32B2;} + .d2-4088610634 .color-B3{color:#E3E9FD;} + .d2-4088610634 .color-B4{color:#E3E9FD;} + .d2-4088610634 .color-B5{color:#EDF0FD;} + .d2-4088610634 .color-B6{color:#F7F8FE;} + .d2-4088610634 .color-AA2{color:#4A6FF3;} + .d2-4088610634 .color-AA4{color:#EDF0FD;} + .d2-4088610634 .color-AA5{color:#F7F8FE;} + .d2-4088610634 .color-AB4{color:#EDF0FD;} + .d2-4088610634 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-4088610634);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-4088610634);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-4088610634);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-4088610634);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-4088610634);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-4088610634);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-4088610634);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-4088610634);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>EB Chain/ IB-to-EB(-to-EB)*-to-RB Reference ApproachVolatile chain suffixRBEB Chain Example 1 (Older RB Reference)EB Chain Example 2 (Recent RB Reference)[RB](tip-k, tip-2)RB(tip-1)RB(tip)EB1EB2IB1IB2EB3(Pipeline A)EB4(Pipeline B)EB5(Pipeline A)IB3IB4 ContainsEB CertificateContainsEB CertificateContainsEB CertificateEB Ref Ledger Ref RefValidated againstValidated againstEB RefLedger RefLedger RefRefValidated againstValidated against + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +