Hey,
Pascal and I already recorded a few videos over the last couple of days, but we are leaving Costa Rica tomorrow and want to film a last video while we are still here.
I’m a little bit clueless what could be an interesting topic. So I ask you: What do you want to hear about? Here are some ideas from me:
VRFs
I worked on a cleaner implementation of the Verifiable Random Function that we use for validator selection and slot selection. They’re also used to distribute any reward that can’t be split between validators.
New client API & client binary
I reworked the Rust API that abstracts all the internals of the Albatross client code. Now it’s much easier to use our code as a Rust library (called crate in the Rust ecosystem). It also simplified the code that we use to start up a client.
I used this interface to e.g. write a simple Albatross explorer for debugging.
But I’m not really sure what I would talk about here, since it’s just a programming interface.
Slashing
We changed slashing, so that there is no inherent need for a minimum stake anymore. We already did a video about it, but it’s not released yet. We finished the changes after the video. So another video about this makes only sense, if you want us to go into detail. You can take a look at the wiki[1] for this too.
Hybrid UTXO
We started preparations to implement a hybrid UTXO model. We will still have accounts trees, as they’re very useful for light nodes. But to have privacy features in the future, we will need support for UTXOs too.
MacroBlockSync
Pascal implemented a sync mode that speed up syncing full nodes. Albatross produces blocks so fast that it’s hard to catch up. We thought up a method to only sync macro blocks. This method saves a lot of bandwidth that would otherwise be used for transmitting micro block headers.
Overview of Albatross
Maybe just an overview of how the Albatross consensus works? The wiki[1] already mentions some details and the technical specification is in the Albatross paper[2]. But we could talk through a whole epoch in Albatross. E.g.:
- What are validators?
- What are stakes? (in the protocol)
- What are slots?
- Who produces a micro block?
- What happens if a validator is offline, when he should produce a block?
- How is a macro block produced and agreed upon?
- How are rewards distributed?
- How is malicious behavior handled?
Other ideas?
If you have any wishes for a video, let use know! We wrote some specifics about Albatross into the Wiki[1] on GitHub. Are there maybe some things you want us to talk about?
[1] https://github.com/nimiq/core-rs-albatross/wiki
[2] https://medium.com/nimiq-network/research-collaboration-albatross-63599386a7c9