In the wake of DWeb Camp, some internal dogfooding and Holo testing, and other chances to test Holochain in the real world, the Holochain core dev team has been troubleshooting and fixing performance issues in Holochain’s network protocol.
Holochain release notes
Holochain 0.0.159: Gossip rate limiting bump
Release date: 6 September 2022
HDI compatibility: 0.0.20, 0.0.21
HDK compatibility: 0.0.148, 0.0.149
This release optimises a hard-coded rate limit on gossip, bringing it from 0.5mbps for recent data and 0.1mbps for historic data, up to 10mbps for all data, with a burst limit of 1gb in a 10-second window. The burst limit is also now tunable from the conductor config. (#1543)
You may ask, why was the limit so tiny? Gossip mainly supports the resilience of data, a sort of price you pay for the privilege of participating in a network. We didn’t want it to be too painful, especially for people on slow connections. However, 0.1mbps was a bit too gentle and was preventing large entries from ever being gossiped. We recognise that most people have more spare bandwidth than that, and can even accept occasional spikes in traffic. This change has already improved performance of data-heavy hApps like DevHub.
There are some other small changes:
- Bugfix: Too-large gossip payloads could put the rate limiter into an infinite loop, preventing historical data from being gossiped even with higher bandwidth limits.
- The conductor now tries to reconnect to the Lair keystore process, with backoff. (#1529)
- The Lair keystore gives out separate TLS certificates to different conductors running on the same machine. (#1519)
- All of the HDI and HDK types related to validation have had their members made public. This doesn’t break compatibility with previous HDIs and HDKs; it simply improves autogenerated documentation. (#1450, #1452, #1457, #1458)
Read the full changelog.
Holochain 0.0.160: HDI 0.1.0
Release date: 7 September 2022
HDI compatibility: 0.0.20 to 0.1.0
HDK compatibility: 0.0.148 to 0.0.150
Nothing has changed in this release except a version bump: the hdi
, or ‘Holochain Deterministic Integrity’ crate, has gone from version 0.0.x to 0.1.0. This signals that we think it’s made “significant progress towards stabilizing the deterministic integrity layer’s API”, in the words of Stefan, Holochain’s release manager. (#1550)
This brings us one step closer to putting the 0.1 stamp on the HDK itself (which includes but is broader than the HDI) and calling it stable for coding and validation. Expect a little bit of API churn yet before we hit that milestone :)
Holochain 0.0.161: Gossip bug fix
Release date: 8 September 2022
HDI compatibility: 0.0.20 to 0.1.1
HDK compatibility: 0.0.148 to 0.0.151
Bugfix: This release continues gossip reliability, fixing a bug in which a node can prematurely end a gossip round even if there’s more to be gossiped. This bug led to persistent timeouts between nodes. (#1553)
Holochain 0.0.162: Cell cloning part 1
Release date: 13 September 2022
HDI compatibility: 0.1.2
HDK compatibility: 0.0.152
This release brings a long-awaited feature: the ability to ‘clone’ a cell. In Holochain, a DNA can be cloned, which results in an agent running multiple cells within the same hApp, each spawned from the DNA. Each of these cells has its own DHT, thanks to a different network seed which changes the DNA hash. This lets you create many separate public or private spaces that share the same functionality. (#1547)
The new conductor API call that supports this is called create_clone_cell
, found in the app API, and it takes the installed app ID, the role of the cell to be cloned, a new network seed, properties, and origin time, and optionally a membrane proof and cell name. (Note: the network seed, properties, and origin time are all optional and are contained in a struct called DnaPhenotypeOpt
. However, these properties become part of the parent object in their serialised form, making DnaPhenotypeOpt
disappear. We realise this is surprising and undocumented, and we’re working on a clearer approach. So be aware that there will probably be breaking changes soon.)
Here are the rest of the changes:
- Breaking (host API): You can now order results in a chain query descending (newest to oldest); the default is still ascending (oldest to newest).
ChainQueryFilter
has.ascending()
and.descending()
convenience functions in its builder API. (#1539) - Breaking (conductor admin API): The
add_records
API endpoint has been changed tograft_records
, with modified functionality. You probably won’t have used this endpoint unless you’re working on a source chain backup or replication service, but just in case! (#1538) - New (app API): The
app_info
endpoint now includes cloned cells. This is a non-breaking change; they just show up in the existingcell_data
field of the response. (#1547) - Removed (conductor config): Legacy Lair keystore config options have been removed. These options have been non-functional for a while. (#1571)
Read the full changelog.
Holochain 0.0.163: Maintenance
Release date: 21 September 2022
HDI compatibility: 0.1.2
HDK compatibility: 0.0.152, 0.0.153
This is a small release:
- Bugfix: A rare ‘Arc is not quantizable’ panic is now a warning. (#1577)
- Breaking (Sweettest): If you use Sweettest, the Rust-based testing framework, some of the functionality that deals with inline zome has been changed. (#1575)
Read the full changelog.
Known issues
- There are still some reliability and performance issues with gossiping, especially for large entries.
- Very rarely, the WebSocket for the conductor admin API will close.
- The JavaScript and Rust clients haven’t been updated for the changes in the conductor APIs.
Future breaking change warning
Holochain’s capability-based security model means that all zome calls need to be authenticated by a valid capability. So far, the conductor has been giving a free pass to zome calls made by clients via the WebSocket app API, treating them as equivalent to the ‘author’ capability. But in the future, these zome calls will all need to supply their own capability.
For the most part, this won’t be a hassle. If you mean for your hApp to be hosted in the Launcher or the Holo hosting network, it’ll all be taken care of behind the scenes. The only remaining scenario is UIs that access Holochain over WebSocket ports, which will probably use some sort of UI password to authenticate. We’ll give details about refactoring your hApp when the time comes.
Holochain Launcher release notes
Launcher 0.6.0: Large hApps in DevHub
Release date: 14 September 2022
This release adds support for Holochain 0.0.162, which includes the cumulative bugfixes for gossip of large entries. This means that hApps in the DevHub are more likely to be accessible when you try to download and install them.
Here are the rest of the changes:
- Support for everything before Holochain 0.0.162 / HDI 0.1.1 / HDK 0.0.152 has been dropped.
- The database is now encrypted at rest. This means that databases created with older versions of the Launcher are incompatible with the new one; you’ll need to create a new key and reinstall all your hApps.
- Compatibility with Ubuntu Linux 22.04 has been improved.
- There have been various bugfixes and UX improvements.
Read the full changelog.
Launcher 0.6.1: Debugging improvements
Release date: 21 September 2022
This release adds niceties for people who are debugging Holochain or hApps; custom conductors are now distinguished from built-in ones in the log, and other error messages and pieces of info are clearer.
Read the full changelog and download the latest installer!
hREA hits major milestone release
hREA, the project that implements the ValueFlows economic vocabulary as a set of Holochain libraries, has hit its Sapling release, version 0.1.0-beta. Connor, Pegah, and Wes at Sprillow, along with longtime lead developer Pospi, have completed the work that they believe was necessary to help hREA get to a state that developers can start hacking hApps with, submitting feedback on, and building a community around. Check out the code, read the excellent documentation, and join the Discord server to get developing. We’ll be sharing more details about this project and the ValueFlows economic vocabulary in a few weeks.
[Ed: I previously failed to credit Pospi for their massive contribution to hREA as its sole developer for many years. Sorry Pospi!!!]
Holochain In Action: IOEN and energy gamification
In this week’s Holochain in Action video, Philip Beadle of IOEN demos how he’s using the Unity 3d game engine to run IOEN-powered community microgrid simulations. His tool lets you see how energy-independent your community may or may not be, given a certain amount of solar and power storage. You can also tweak settings and see how your community fares better, get a breakdown of individual houses’ revenue and costs, and even deploy an actual Holochain-powered IOEN network for all of the houses.
Cover photo by Nguyễn Phúc on Unsplash