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.
DISCLAIMER: None of the statements must be viewed as an endorsement or recommendation for Nimiq, any cryptocurrency, or investment product. Neither the information, nor any opinion contained herein constitutes a solicitation or offer by the creators or participants to buy or sell any securities or other financial instruments or provide any investment advice or service.