It is now the end of November and the Bernoulli release is starting to really shine! I hope everyone has had a terrific November and had a chance to try out the interim new version of our testnet that was released in November.

As I write this update, we are a month away from the release of Bluzelle’s Bernoulli release. The Bluzelle team is pushing hard on the key deliverables for Bernoulli, as you have been hearing in past updates in the 2nd half of 2018. Our two new October additions (Matthew and Paul) to the team are well-integrated and firing on all cylinders to deliver a quality product.

Interesting facts

To continue with a new tradition I started in October, this section will share with the community specific and interesting developments, quirks, challenges, bug fixes, last-minute feature additions, and new learnings that happened during the previous month of development. We want to engage the community to know the story behind the development of the product and the team building it.

We have completely redesigned the client wire protocol and architecture to consider PBFT and permissioning. Now, everything is completely powered by protobuf.

We have created explicit database management APIs in order to allow the attachment of metadata. This gives Bluzelle another one of the key features of a real database.

Our client documentation has been beefed up considerably. Check it out at: https://devel-docs.bluzelle.com/client-development-guide/v/v0.4.x/client-architecture

Bernoulli Release Progress

Bernoulli is moving along quickly towards our goal of an end-of-2018 delivery. As you know, the two key deliverables for Bernoulli are PBFT consensus and permissioning.

PBFT Consensus

We have completed all the individual pieces necessary for a PBFT consensus engine and are deeply engaged in the integration of these pieces and the testing of the PBFT engine as a whole. PBFT is a complex yet critical algorithm that enables trustless computing, which is possibly the most important aspect of any decentralized technology. Our PBFT is not yet available to the public and rather, is running in a pre-release state on a private test network we launched in late October. As we make improvements and come closer to finishing PBFT, we routinely update this private test network as well. Once we are in a ready state for the public, we will update the public test network to use the new PBFT version of Bluzelle.

Further to this, our current client libraries in JS, Python, Ruby, PHP, and C# are being augmented to support PBFT. For example, one of the key features of a PBFT-compliant system is the ability to detect and handle Byzantine faults. Our client libraries are being modified so that they can detect such faults (such as a node or group of nodes giving misleading information), and respond to them in a graceful and performant way.

Permissioning

Development of Bluzelle’s permissioning engine has progressed far, with some improvements to the design. A namespace will now be required to be created explicitly by its creator, with that creator’s public key being assigned as the owner, upon creation. Once created, this owner can exclusively do writes (CREATE, UPDATE, DELETE) to that namespace, while anyone can do reads (READ). The most important impact of permissioning will be that in Bernoulli, any and all writes to the database will require the transaction to be signed with the owner’s private key. As a consequence of this, our current client libraries in JS, Python, Ruby, PHP, and C# are also being augmented to support key management, where an asymmetric public/private keypair can be generated and stored safely on the filesystem, and where applications can safely use these keypairs to sign authorized writes to the database.

CRUD Client

The team has also put together a new version of our web-based and standalone (desktop) CRUD client. The new version has a vastly improved user experience with better error handling, usability, ability to provide server parameters as GET parameters, and significantly improved handling of requests and transactions. We also have a new name for the client. Finally, the new client is being augmented to support permissioning, where the client can be provided with an encrypted public/private keypair that are used to sign authorized writes to the database. Look for our release of this new client and the unveiling of its new name in my end-of-2018 Bernoulli release update, one month from now.