Inspiration
(Proto-) Danksharding is (after the merge) the next big upgrade for Ethereum. It allows us to provide cheaper data availability for Rollups, thus contributing directly to making L2s the web3 experience we all dream of (low transaction costs, high throughput and the same security as mainnet). The ceremony is secure if at least 1 participant behaves honestly, in order to make sure that this trust assumption is met, it is very important to have as many people as possible contributing to the ceremony.
What it does
We created a server that coordinates the ceremony and clients to participate in it. The coordinator assigns time slots to participants. When the time slot is reached, the participant asks the coordinator for the current state of the ceremony. The coordinator will send the current state. The participant then modifies the state (according to the rules of the ceremony) and sends the new state to the coordinator. The coordinator will verify the new state and - if valid - store it and write a copy to disk. All submissions are published, s.th. participants can make sure that their submissions are included and everyone can verify after the fact that the ceremony was done correctly.
How we built it
We implemented both the coordinator and the participants based on the current (WIP) spec from the Ethereum research team. Both programs are written in Golang and communicate over a REST API provided by the coordinator. We used the BLST cryptography library for the cryptographic functions.
Challenges we ran into
The biggest challenge was that the spec for the ceremony is still work in progress. Fortunately we could talk to Carl Beek during the hackathon to clarify missing checks. Another issue we ran into is that the documentation for BLST is lacking/non-existent and we had to look for other programs that use it (like Prysm) to understand the proper usage.
Accomplishments that we're proud of
We set up a server with the coordinator and you can download our participant software and contribute to the ceremony yourself. This makes it extremely easy to be part of this.
What we learned
We learned the usage of the BLST crypto library as well as some basics of group theory and cryptography.
What's next for Towers of Pau
This hackathon project gave us great insight into which parts of the spec are wrong or underspecified. We will develop Towers of Pau further as kind-of a reference implementation that is focused on correctness instead of speed. This also allows us to create reference tests for other implementations using Towers of Pau. You can check it out on our website: https://dknopik.de/ and contribute to the ceremony!
Built With
- blst
- go
- rest
Log in or sign up for Devpost to join the conversation.