Boolberry Monthly Progress Report: June

Dev update

With last month largely consumed by the development of an LMDB-based core, June ended up being a bunch of bug fixes and refinement. We dedicated a lot of time making this latest version stable. That included more improves to the GUI, like removing the lock_time field and refreshing the graphics in the GUI and the installer. We implemented load optimization, resulting in a 5X speed up in the daemon load time (made possible by improvements to our use of the scratchpad cache file). We also discovered and fixed a bug where multiple instances were running in the same data folder, improved our API by merging from Cintar’s repository, included a digital signature to the binaries for secure distribution, and added restoring wallets using a 24-word seed phrase.

Fixing the Scratchpad

It’s not a secret that Boolberry has quite a big scratchpad. Scratchpad itself is basically a big solid memory block which is used for calculating the PoW hash (wild keccack). At the moment it’s about 300 MB and getting bigger. It’s made up of records of 32-bytes lengths and stored in the database as a table of 32-byte records. Every time a new block is added, the scratchpad is updated in random places, and some more items are added to the end. The naive realization process we had been using was loading scratchpad from the database every time the application started, and that was taking a long time. Now, however, it’s storing it into cache the file, as a snapshot of the in-memory scratchpad. Then, as it loads, it pulls the scratchpad from this cache file and validates that it’s the same version in the database.

An interesting challenge came about when the database behavior turned completely weird at one point. After looking into it, we found that there was another instance of the daemon running on the same data folder, which led to total chaos. In the end, we fixed it by adding a locker for the data folder, letting only one instance work with a particular data folder.

Improvements to the API

Another important tweak came from a commit we’ve adopted from Clintar; it was really helpful. This looked like adding some specific command-line arguments, like — restricted-rpc, to make the block explorer work more securely.

We have been receiving complaints that many antivirus applications suspect out mining software to be potentially dangerous, we went ahead and added a digital signature to all our Windows binaries. This will get our software whitelisted by signature, or at least by the binary image.

In conclusion

Finally, as we’ve promised in our roadmap, we went ahead and released seed phrases. This feature was actually implemented all the way back in 2014, but it never worked in the GUI. We have brought it to the GUI wallet and checked that everything works correctly. Hope everyone will love it! Thanks for following along with another month of progress.