GNUnet 0.18.0 released

We are pleased to announce the release of GNUnet 0.18.0.
GNUnet is an alternative network stack for building secure, decentralized and privacy-preserving distributed applications. Our goal is to replace the old insecure Internet protocol stack. Starting from an application for secure publication of files, it has grown to include all kinds of basic protocol components and applications towards the creation of a GNU internet.

This is a new major release. It breaks protocol compatibility with the 0.17.x versions. Please be aware that Git master is thus henceforth (and has been for a while) INCOMPATIBLE with the 0.17.x GNUnet network, and interactions between old and new peers will result in issues. 0.17.x peers will be able to communicate with Git master or 0.18.x peers, but some services - in particular the DHT - will not be compatible.
In terms of usability, users should be aware that there are still a number of known open issues in particular with respect to ease of use, but also some critical privacy issues especially for mobile users. Also, the nascent network is tiny and thus unlikely to provide good anonymity or extensive amounts of interesting information. As a result, the 0.18.0 release is still only suitable for early adopters with some reasonable pain tolerance.

Download links

The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A

Note that due to mirror synchronization, not all links might be functional early after the release. For direct access try

Noteworthy changes in 0.18.0 (since 0.17.6)

  • UTIL: Added enum GNUNET_ErrorCode for better error handling throughout the API.
    • Moved namecache updates out of namestore and into zonemaster. This fixes issues from version 0.17.6 with respect to premature namestore monitor update messages and zone propagation. [#7378]
    • Added a new API for bulk imports: GNUNET_NAMESTORE_records_store2. The API can be combined with the transactional API in order to significantly improve namestore performance for lage zones. For postgres databases, storing records is around 20x faster than the old API. [#7379]
    • New database setup utility gnunet-namestore-dbtool. Databases can be initialized and reset using this new CLI. Currently, database plugins still allow to initialize databases automatically as well by setting INIT_ON_CONNECT (Default: YES). [#7204]
    • There are new APIs for zone iterations and monitoring which support filtering of records using GNUNET_GNSRECORD_Filter. By default, maintenance records such as TOMBSTONEs are filtered. [#7193]
    • New zonefile import utility gnunet-namestore-zonefile that for DNS zone files. [#7396]
    • Make use of new enum GNUNET_ErrorCode in C and REST API. [#7399]
    • Included handling of orphaned GNS records. Records are orphaned of Egos are (accidentally) deleted which makes operations on records difficult but at the same time existing records are still published. [#7401, #7402]
    • Updated the C API documentation to reflect the above changes.
    • Updated the user documentation to reflect the above changes and included various tutorials on zone management.
    • Updated the REST API and its documentation to reflect the above changes.
  • ZONEMASTER: Zonemaster now uses worker threads for record signing.
  • DHT:
    • The specification has been updated to reflect the changes. LSD0004
  • BUILD:
    • Fix mysql/mariadb detection (again). [#7356]
  • PACKAGING: Revamped the RPM package available through Fedora COPR and submitted it.

A detailed list of changes can be found in the ChangeLog and the bug tracker.

Known Issues

  • There are known major design issues in the TRANSPORT, ATS and CORE subsystems which will need to be addressed in the future to achieve acceptable usability, performance and security.
  • There are known moderate implementation limitations in CADET that negatively impact performance.
  • There are known moderate design issues in FS that also impact usability and performance.
  • There are minor implementation limitations in SET that create unnecessary attack surface for availability.
  • The RPS subsystem remains experimental.
  • Some high-level tests in the test-suite fail non-deterministically due to the low-level TRANSPORT issues.

In addition to this list, you may also want to consult our bug tracker at which lists about 190 more specific issues.


This release was the work of many people. The following people contributed code and were thus easily identified: Bernd Fix, Christian Grothoff, Tristan Schwieren, madmurphy, Willow Liquorice, t3sserakt, TheJackiMonster and Martin Schanzenbach. We are greatful for funding from NGI Zero DISCOVERY that has supported several developers over the last four years to work on the GNU Name System and related subsystems.