roadmap/content/nomos/updates/2024-07-01.md

87 lines
7.1 KiB
Markdown

---
title: 2024-07-01 Nomos weekly
tags:
- nomos-updates
date: 2024-07-01
lastmod: 2024-07-01
draft: false
description: Weekly update of Nomos
---
## `P2P Privacy`
### `Research`
- Started writing the new mixnet [executable specs](https://github.com/logos-co/nomos-specs/pull/98). Completed: Global transmission rate, Peering degree limit, Noise per connection, Gossip-based Sphinx routing. Still to do: Time mixing.
- WIP: Updating mixnet simulation according to the new specs. The plan is to finish the first working version by the end of this week. It's taking more time than expected because of the attempt to have reusability between specs and simulation. Now the plan is clear.
- Gathered the outcome of our discussions and design decisions from the offsite and compiled a [document](https://www.notion.so/NomMix-Peer-to-Peer-Mix-Network-over-Gossip-Channel-11e9c70a656d4ff1858bc46a715f4c59?pvs=4) that outlines the design of our mixnet gadget. WIP: work on the queuing mechanism for the mixnet gadget, taking into account what corrupted nodes can learn.
- With the assumption that the “Are continuous stop-and-go mixnets provably secure?” [paper](https://eprint.iacr.org/2023/1311) is state of the art, studied it in great depth to find out how anonymity guarantees are usually derived. For our case, the most useful definition from the aforementioned work is user unlinkability. However, it uses two senders and one receiver, but in our case, we have only one sender, i.e., the leader node, and one receiver node. The latter requires a new definition of sender unlinkability. The summary can be found [here](https://docs.google.com/document/d/1q_hurDTUCVxtpAzlSvkcHlpcnvP781f2IciK5MLW7qw/edit?usp=sharing).
- Assuming that anonymity guarantees and statistical independence of nodes are related, considered an approach that studies various “correlation functions,” such as mutual information, Hamming distance, etc. This work will be carried on in this [document](https://www.notion.so/Analysis-of-the-NomMix-anonymous-communication-AC-system-c97d73a7b8894cf7830e8345f0cc37a4?pvs=4).
- WIP: analysis of correlation functions.
### `Development`
- No updates this week.
## `Data Availability`
### `Research`
- WIP: First iteration of the PoC can be found [here](https://github.com/logos-co/nomos-specs/pull/99). That PR already runs a libp2p inside a very basic DA node. It is important to mention that the very limited py-libp2p is not great software. The last official release is from 2020, and it had to be cloned from GitHub to make it work at all. Then, there was an issue with its internals: it's highly opinionated. Tried to reuse existing py code from `mixnet` by using `asyncio` but py-libp2p would refuse to work with it due to the lib's internal setup with `trio`. It is also important to mention that this is an exploration of the libraries; the team is yet to decide whether libp2p will be used at all.
### `Development`
- Finishing FK20 Rust [implementation](https://github.com/logos-co/nomos-node/pull/663).
- Included FK20 in DA encoder ([PR](https://github.com/logos-co/nomos-node/pull/664)).
- Added Rayon parallelization to DA encoder ([PR](https://github.com/logos-co/nomos-node/pull/665)).
- Implemented cache for Toeplitz part-1 and integrated it into the encoder ([PR](https://github.com/logos-co/nomos-node/pull/667)).
- Added benchmarks and missing parallelization features ([PR](https://github.com/logos-co/nomos-node/pull/669)).
- DA subnetwork assignment algorithm: Implemented re-hashing algorithm and initial experiments. Tried to implement and improve a few variations of the algorithm, but none of them were better than the original. Ran a few [experiments](https://github.com/logos-co/nomos-specs/tree/da-subnetwork-distribution) (results and ideas will be shared later on).
- Wrapped up DA HTTP endpoints for KZGRS backend [PR](https://github.com/logos-co/nomos-node/pull/670). Pushed changes related to DA HTTP endpoints. They are generic and should be reused with the updated KZGRS protocol and dispersal as a black box.
## `PPoS/Consensus`
### `Research`
- WIP: produce and analyze more simulation results using the relativization algorithm, as stated in the [wealth concentration document](https://www.notion.so/Does-Crypsinous-Leader-Election-Function-lead-to-wealth-concentration-in-PoS-b81f07a791b745438443f51f00ac258f?pvs=4#1df422f6cc204cb8b362f41cda260b8b).
- The protocols suggested by Ethereum for the proof of validator protocol have been reviewed. As stated in the article, the use of a Merkle tree could be slow for proof generation. Therefore, a zk-SNARK solution using a lookup table is considered to be more efficient. The related protocols are summarized step-by-step [here](https://www.notion.so/Proof-of-Validator-34b6446555004385bf5cef4a002b6201). Additionally, the SemaCaulk [design](https://geometry.xyz/notebook/geometry-presents-semacaulk-a-gas-efficient-zero-knowledge-set-membership-protocol) will also be examined. There is already Rust code available [here](https://github.com/geometryxyz/semacaulk), but it has not yet been audited. The related protocol will be examined in more detail and feedback will be provided.
### `Development`
- No updates this week.
## `Coordination Layer`
### `Research`
- Integrated the Proof of Equivalence [document](https://www.notion.so/Integration-of-Efficient-Proof-of-Equivalence-09e154ecd6dc4818b5214719bcc1821b) and validated the design. It seems that we now have a protocol that meets the requirements.
- The StarkNet DA structure was reviewed again for Proof of Equivalence.
- WIP: continuing with the PoC, understanding whether Risc0 is a viable option ([progress](https://github.com/logos-co/nomos-specs/tree/cl/executable-spec)).
- Integration of Risc0 zone PoC into CL note and partial tx model: we have the zone POC hooked into the CL UTXO model, but proof times are not where we want them. We are currently at 8 minutes to generate a proof, almost all of that is coming from the Pedersen commitment to the note value. All the work is being done in this [PR](https://github.com/logos-co/nomos-specs/pull/93).
- WIP: Trying to bring the death constraint proof time down to something manageable.
- Evaluation of SP1's viability for CL: SP1's outer proof takes 13 minutes to prove. The numbers were confirmed with SP1 devs. This is too slow for us to use. SP1 devs suggested they may support swapping out plonky3 for groth16; If they do that, we should re-evaluate.
### `Development`
- No updates this week.
## `Testnet + Insights`
### `Development`
- Testnet updates from the `testnet` branch now (deployments happen from the `testnet` branch) - [Nomos PR](https://github.com/logos-co/nomos-node/pull/668), [Infra PR](https://github.com/status-im/infra-misc/pull/294). This is done to have more control over what runs in the testnet.
- Enabling/Disabling tracing using feature flags or config at runtime - [PR](https://github.com/logos-co/nomos-node/pull/666). Added the ability to build the node without tracing, or toggle tracing via config if built with this feature.
## `User Tools`
### `Research`
- No updates this week.
### `Development`
- No updates this week.
## `Miscellaneous`
- No updates this week.