Boolberry Monthly Progress Report: April

Dev update

What we’ve been up to

Okay, another month has flown by somehow and it’s time for an update on our development progress. A lot has been going on, but we’d like to call out one thing specifically, the implementation of LMDB. We decided to push LMDB ahead of schedule, deprioritizing listings, to make the project more appealing to the exchanges.

Up until this month, the entire blockchain has been loading into a RAM each time a user opens the daemon. Now, with the implementation of a database, we can speed up that process by only using RAM to process the changes in a blockchain.

LMDB Implementation details

The team has been working towards this outcome along parallel paths, library implementation and migrating the core (blockchain_storage.cpp) into the new library. After these two phases were complete, we integrated the two to stand the system up. However, this integration met some performance issues — the most significant of which was a problem with the scratchpad.

With the implementation of LMDB, the scratchpad now uses a solid memory block that’s around 300MB and changes after every new block. Simple implementations like this were taking about 1–2 seconds per block. Then we applied a cache helper which keeps data both in memory (as a consistent block) and in the database as a vector of 32-bytes records. Essentially, this means that with the scratchpad cache implementation it no longer has to sync the whole block of memory every time — just the sections that have changed. We still need to optimize this process for the fastest load time. However, we’ve already solved the memory consumption for the core so we’re well on our way.

Launching a public beta

After all this work, we’re left with an LMDB-based daemon that’s synchronizing and stable. Having said that, we’re still aware of some bugs so we’ll be keeping it in public beta for a while (in lmdb_core branch on github). The best way to test the daemon will be stress it with an interruption/killing process, where we’ll be confirming that it stays stable while being interrupted. This build is already quite stable, compilable, and secure, we just see room for improvement and plan to get it working the way we want before releasing it broadly.

One last thing

One more small development to report. We’ve given our GUI a facelift this month and added a signing text feature. It still uses the old qtwebkit engine which we know is dated, but at least it looks better now and lets us use the funding platform without running CLI tools, so it’s an improvement to be sure.

Thanks for taking the time to keep up with our progress. More development news in a month, we’re all cranking out work for BBR over here and look forward to giving you more updates.