Development Update

JungleDB, Testnet, UX, Light Clients

We like to keep our updates meaningful. Please be patient if we don’t report frequently in our blog as we prefer to focus on production and supply information as we reach tangible milestones (please refer to out Vlogs for more frequent insights). We’ve been working hard on many ends, some of are just not spectacular and include dragging administrative steps for legal and operational structures, setting up our German Nerd Temple, transitioning team members from former employment proceedings, hiring new research and task specific talent, etc.

A word about client types

Nimiq is a Browser-based Blockchain and peer-to-peer network where Browsers are first-class citizens. As detailed in our Technical Overview, Nimiq Network works using underlying Backbone Nodes which act as entry point and signaling server for Browser Nodes to establish browser-to-browser WebRTC connections.

In a nutshell, Nimiq introduces two client types:

Browser Clients run natively in the user’s Browser and relies on IndexedDB to store/retrieve securely each wallet’s private key.

NodeJS Clients (a.k.a Backbone Clients) work in any device that supports NodeJS (yes, this includes all these hardware platforms). In NodeJS the best approach for storing sensitive information is of course LevelDB.

A new layer of abstraction

A quick look at the client types used by Nimiq Network give us a glimpse of complexity to come regarding data abstraction. As simplicity preachers we decompose a problem in smaller bits and then attack those bits, making the answer easier to achieve.

Nimiq Network works with both client types and shouldn’t have to care about the client type for most operations. Work that involves both Browser clients and Backbone clients should use an abstraction layer. Along comes JungleDB to the rescue.

What is JungleDB?

JungleDB is a Wrapper around IndexedDB in browsers and levelDB in NodeJS unifying their interface. JungleDB also adds additional features to this interaction:

Transactions with read-isolation

Implements secondary indices for levelDB

To learn more about JungleDB check our Vlog: Pascal’s Jungle DB

JungleDB is Open Source

JungleDB is fully Open Source, we’ve built and shared:

Fully documented code for Browser + NodeJS

Tests for the database

A benchmark suite

Sample application

Next Testnet version

As we approach our first update of the Testnet, we are combining a series of improvements, this includes JungleDB. Another main feature for the next Testnet version is a new difficulty adjustment:

Instead of adjusting difficulty every 10 blocks, it will be adjusted each block

The new difficulty is computed from the last 100 blocks

Changes at every block will be lower than currently at every 10th block, ensuring a smoother adjustment

In the works

In parallel two major efforts are under way. We have been working on location with San Francisco based Y Media Labs on defining the User Interface experience for Nimiq and are very excited about the progress. This week we have started with the implementation of our fresh designs. We are in line with our goal of creating an interface that is intuitive, simple and beautiful and will share sneak previews in time.

In addition we are implementing “proofs of proofs of work” to compress the blockchain to sublinear space complexity such that light clients can truly sync in seconds without any trust checkpoints. We are excited to hardfork our Testnet to the enhanced “Lightchain Protocol” as soon as possible.