You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Logbook.md
+39-13Lines changed: 39 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,29 @@
1
1
# Leios logbook
2
2
3
+
## 2025-02-16
4
+
5
+
### DeltaQ Update
6
+
7
+
The `topology-checker` has been upgraded with a new option to perform a ΔQSD analysis:
8
+
it will extract inter-node latencies from the given topology, classify them into near/far components, and use these to build a parameterised ΔQ model.
9
+
This model is then fitted against the distribution of minimal completion latencies as obtained with the Dijkstra algorithm, averaging over the distributions obtained by using each node as starting point.
10
+
The resulting completion outcome is plotted to the terminal together with the extracted completion latency distribution to give a visual impression of the quality of the model fit.
11
+
12
+
Learnings from this exercise:
13
+
14
+
- latencies within the topologies examined (from the topology generator as well as the “realistic” set from the Rust simulation) very clearly consist of differing near/far components (there’s a “knee” in the graphs)
15
+
- latency-weighted Dijkstra shortest paths are _extremely long_ in terms of hop count, much longer than I expected (mean 4–5, max 8 for the topology-100; min 8, max 20 for the “realistic” topology)
16
+
- composing a ΔQ model as a sequence of some number of near hops (with early exit probabilities) and some number of far hops (also with early exit) yields models that roughly fit the overall shape, which is dominated by the `far` component of latencies, but there always is a significant deviation at low latencies
17
+
- the deviation is that observed completion starts out much slower than the model would predict, so the model goes faster first, then “pauses” for 100ms or so, crossing the observed CDF again, then catching up — thereafter the high latency behaviour works out quite well
18
+
19
+
My hope had been to use a model that can be understood behaviourally, not just statistically, so that the resource usage tracking features of the `delta_q` library could be brought to bear.
20
+
**This has not yet been achieved.**
21
+
While the timeliness graph can be made to match to some degree, doing this results in a ΔQ expression for which at least I no longer understand the load multiplication factors that should be applied — in other words, how many peer connections are supposedly used at each step of the process.
22
+
The remaining part of this week’s plan was to be able to use the fitted model to obtain a formula for creating such models algebraically;
23
+
this has been put on hold because it seems easier to just generate a topology with the desired properties and then use the `topology-checker` to get the corresponding ΔQSD model.
24
+
25
+
In any case, the `topology-checker` now outputs the fitted ΔQSD model in the syntax needed for the `delta_q` web app, so that you can directly play with the results.
26
+
3
27
## 2025-02-14
4
28
5
29
### Formal methods
@@ -49,17 +73,17 @@ Here's a snapshot of one recent proposal, but much discussion is underway.
49
73
50
74
- Every 90 days, as part of its operational certificate each SPO includes a commitment to Leios keys: let's say that Leios keys evolve every epoch or KES period, so we'd need 18 or 60 commitments, respectively. This commitment is only 124 bytes if KZG commitments are used.
51
75
- Before the start of a new key evolution period, each SPOs diffuses a message opening their keys for the new period.
52
-
- This message would have to be 316 bytes:
53
-
- 28 bytes for the pool ID
54
-
- 96 bytes for the public key
55
-
- 96 bytes for the opening
56
-
- 2 * 48 = 96 bytes for the proof of possession
57
-
- 316 bytes/pool * 3000 pools = 948 kB would have to be stored permanently, so that syncing from genesis is possible.
58
-
- This is a lot of data to squeeze into RBs.
59
-
- However, It's not clear if it is safe to put it into IBs or a non-RB block.
60
-
- Instead of storing this on the ledger, would could a single SNARK attest to the following?
61
-
- Input is (ID of key evolution period, pool ID, public key)
62
-
- Output is whether the proof of possession exists.
76
+
- This message would have to be 316 bytes:
77
+
- 28 bytes for the pool ID
78
+
- 96 bytes for the public key
79
+
- 96 bytes for the opening
80
+
- 2 * 48 = 96 bytes for the proof of possession
81
+
- 316 bytes/pool * 3000 pools = 948 kB would have to be stored permanently, so that syncing from genesis is possible.
82
+
- This is a lot of data to squeeze into RBs.
83
+
- However, It's not clear if it is safe to put it into IBs or a non-RB block.
84
+
- Instead of storing this on the ledger, would could a single SNARK attest to the following?
85
+
- Input is (ID of key evolution period, pool ID, public key)
86
+
- Output is whether the proof of possession exists.
63
87
- Certificates are really small because we've already recorded the proofs of possession at the start of the key evolution period.
64
88
65
89
### Certificate CPU benchmarks as a function of number of voters
@@ -82,8 +106,9 @@ A recipe for parallelizing parts of the certificate operations has been added to
82
106
### Rust simulation
83
107
84
108
Updated event format to more closely match standards:
85
-
- Timestamps are in seconds instead of nanoseconds.
86
-
- CPU subtasks have a duration attached to the "started" event, and no "finished" event.
109
+
110
+
- Timestamps are in seconds instead of nanoseconds.
111
+
- CPU subtasks have a duration attached to the "started" event, and no "finished" event.
87
112
88
113
Started tracking vote bundle sizes to display in visualization.
89
114
@@ -115,6 +140,7 @@ The [BLS benchmarking Rust code for Leios](crypto-benchmarks.rs/) was overhauled
115
140
- Benchmarks for the inputs to the Leios and Haskell, Rust, and DeltaQ simulations.
116
141
- CBOR serialization and deserialization of Leios messages.
117
142
- Command-line interface (with example) for trying out Leios's cryptography: create and verity votes, certificates, etc.
143
+
118
144
* Document specifying the algorithms and tabulating benchmark results.
119
145
120
146
Note that this BLS scheme is just one viable option for Leios. Ongoing work and ALBA, MUSEN, and SNARKs might result in schemes superior to this BLS approach. The key drawback is the need for periodic registration of ephemeral keys. Overall, this scheme provides the following:
0 commit comments