Hush Dev Update #1

It is time for another Hush development update!

We are happy to report that there is now a Debian package for aarch64 (Raspberry Pi and similar) devices thanks to lots of hard work from jahway603 who also received help from RandomX upstream developers tevador and SCernykh. The issue was that cross-compiling our code stopped working when we added RandomX as a dependency, which uses CMake instead of GNU Make like the rest of the Hush build system. Now the Hush build system understands what to tell CMake to allow cross compiling to aarch64 successfully. What this means is that Hush and DragonX users/miners can now install a full node and mine on supported Raspberry Pi (and similar) devices!

One exciting new bit of code for Hush is Reduce memory usage of CBlockIndex which is being ported from upstream Zcash. When it is ready it will reduce the memory needed to run a Hush full node by at least 1.6 GB and potentially much more. The more "indexes" that are enabled, the more memory savings. Since SilentDragon enables some indexes by default, which are not enabled in the CLI hushd, GUI wallet users will see even more memory savings. This means you can do more things with the same hardware without running out of memory or using much slower swap. This change will also help DragonX full nodes use less memory, but since RandomX block headers are much smaller, it will be on the order of tens of megabytes less RAM used.

The above code seems to work on a fresh sync or if `-reindex` is used but Hush devs are currently working on a bug that causes it to crash in other scenarios. onryo and fekt contributed lots of testing to figure out exactly when this bug causes a crash.

Another exciting improvement is that Hush will now compile on Ubuntu 22 and the latest Arch Linux! jahway603 finally got things working (with a little help from Hush developer Emeritus miodrag), which came down to making recent versions of g++ happy. This also means that Hush will likely compile on many other newer Linux distributions which use g++ 11 or 12 by default.

Some work was done to improve support for Hush on FreeBSD but it is currently on hold, since it will require very large changes to the build system. What we need is a developer who really loves FreeBSD and wants to "own" this effort. If that sounds like you or somebody you know, please get in touch.

Recently a memory exhaustion vulnerability was publicly disclosed by Zcash. It is actually a very old vulnerability in Bitcoin that was never fixed in various codebases that forked from Bitcoin long ago. Potentially hundreds of blockchains are vulnerable. This issue has been fixed in the Hush source code and many nodes have upgraded to this code already. Hush also has another layer of defense against this bug in that we require TLS 1.3 between all nodes. This means that code to attack Zcash or other blockchains would not work against the Hush or DragonX blockchains.

The p2p "mempool" message was recently removed which is not used in the normal activity of a full node and has potentially bad privacy implications. BTC core is talking about removing this as well.

onryo has published a Debian package for the latest release of SilentDragonLite.

Now for some updates related to DragonX. It was recently discovered that our lightwalletd code is compatible with RandomX block headers. This means that DragonX is much closer to having a lite wallet! The backend server exists and works. The next step is to make the GUI code of SDL understand how to talk to a DragonX lightwalletd server, instead of a Hush lightwalletd server. This will also likely require updating some "plumbing" in silentdragonlite-cli . fekt and dan_s helped extensively with testing this.



-- Duke

Back