Development Update Q423

Since deploying testnet v1a in Q123, we have settled on a major design change. Namely, we are modifying our consensus from Ouroborous Crypsinous, a privacy-preserving proof-of-stake algorithm, to the RandomX proof-of-work mining algorithm with optional merge-mining using the Monero blockchain.

The decision was made for two reasons:

  1. Our token engineering research showed that without a protracted pre-distribution of DRK tokens, a purely PoS system would become centralized over time.

  2. Our implementation of Ouroborous Crypsinous is a novel implementation that requires auditing and peer review. In contrast, RandomX is well audited and used in production by several blockchains.

We are now actively developing a new testnet using RandomX.

General improvements

We have also made the following general improvements to the DarkFi stack:

  1. We developed a new version of our anonymous chat app called DarkIRC. Unlike its predecessor, DarkIRC has message permanence (for a single day) so it is able to receive messages even when the node is offline. It also has built-in Tor support. DarkIRC is currently stable and some final tests are undergoing before the dev community switches to it fully, deprecating ircd.

  2. Implementing DarkIRC message history required the creation of an event graph to manage DarkIRC events (messages). The event graph is a DAG that allows event storage, ordering, and retrieval. Such a tool is also broadly useful for p2p apps on DarkFi.

  3. We refactored parts of the p2p network code to be smoother, simpler, and work more cleanly over Tor. As a result, the connections are much more robust, and the network is in a healthier state.

  4. DarkFi's anonymous task management system - tau, was updated to work with the new event graph and p2p network code.

  5. Dnetview, a tool for inspecting and debugging DarkFi p2p traffic, was rewritten in Python.

  6. We made various bug fixes to the smart contract implementing the anonymous DAO.

  7. An ephemeral overlay library for the embedded sled database (which we use for blockchain and DAG storage, among other things) was implemented and published as a separate Rust crate. This library can be used to perform in-memory changes to a sled database and then atomically write the changes to the database, or drop them if required.

  8. We implemented the Kyber IND-CCA2 KEM as a standalone Rust crate and published it as kyber-kem. This will be used to implement DarkIRC post-quantum secure message encryption.

  9. A proof-of-concept Monero merge mining proxy was implemented and will serve as a base for the DarkFi x Monero merge mining.

  10. Other various improvements and simplifications that can always be found in the git commit log.

Release cycle

Aside from the RandomX implementation, which is the introduction of a major change (Phase 1) we are generally in Phase 2 of DarkFi development. In this phase, we work to improve, optimize and fix bugs in new and existing features. Prior to mainnet release, only minor changes will be made.

Mainnet roadmap

We are currently focused on delivering mainnet. That means finishing the RandomX testnet, stablizing the rest of the stack and preparing the codebase for review by auditors.

See this note for a complete list of the outstanding development tasks.

Back to top
Back to dark.fi