BigchainDB Version 1.0 Released
In talks with of our customers throughout the past year, it became clear that for them to build and ship production software, BigchainDB’s main API gateways and data models will have to mature and stabilize. Late 2016, this lead us to schedule BigchainDB version 1.0 for summer 2017. We themed it around “My data is safe” and backwards-compatibility. Since then we’ve deployed BigchainDB for the IPDB test and production net, cleaned up and improved our HTTP and WebSocket APIs, added support for an additional database back end (MongoDB) and completed major efforts to ensure the system’s security and correctness.
All the more, we’re proud to announce a major development milestone for BigchainDB today with the release of version 1.0. It comes packed with new features, improvements, fixes and backwards-compatibility. Among other things, its new functionality includes asset querying and a JavaScript driver.

Let’s have a look.
Asset Querying
With BigchainDB version 0.8 we added support for divisible assets, a general purpose data structure for blockchain use cases. At point of issuance, a user can set an asset’s divisibility and then distribute it using Crypto-Conditions. All consequent transactions spawned from the issuance event form a directed acyclic graph that is protected against double-spending by BigchainDB’s federated consensus. Up until now, assets were directly embedded into BigchainDB’s transactions. With 1.0, we’ve split assets and transactions into separate database tables, content-addressing the two under the hood to ensure tamper-resistance.
Leveraging MongoDB’s powerful text search, we’re now introducing BigchainDB’s new /assets?search=<text search>
endpoint. Not only will it allow our users to perform queries to lookup an asset by its name, but also match and sort several different assets, search for phrases contained in asset definitions and exclude assets that contain specific terms.
JavaScript Driver
So far, we had officially supported Python as a driver-language to communicate with BigchainDB Server. With this release, we’re adding JavaScript. Being the native language of the WWW, it has been serving the world as a powerful platform for information sharing and soon blockchain-powered asset transfers.
We scheduled asset querying and the JavaScript driver initially, when we needed them ourselves to implement the Decentralized Data Exchange for Sharing Autonomous Vehicle Data for Toyota Research Institute. Pairing its capabilities to store and query metadata from BigchainDB/IPDB directly from within the browser with web3.js for processing payments on Ethereum and Protocol Labs’ ipfs.js to store media blobs on IPFS/Filecoin creates a powerful toolbox for the newly emerging serverless stack. A platform where decentralized apps can run solely on users’ devices through blockchain coordination. In prototyping the decentralized data exchange in a serverless fashion, we quickly realized the exciting potential of both features and decided to make them an immediate core offering of BigchainDB. With the tool set for web 3.0 now in place, we’re excited to see the next Twitters, Netflixes and Googles being built.

BigchainDB’s JavaScript driver implements asset querying and can be found on GitHub, npm and pre-bundled on unpkg.com.
Correctness and Security
Another big initiative we kicked-off at the beginning of the year was the mandate to ensure our users’ data is safely stored. All of this year’s minor releases contain partial patches towards this. Aside from internal correctness assumptions that helped us to cooperate better on the matter, in version 1.0 we continue to ship critical upgrades and system-level tests for BigchainDB’s consensus and replication to ensure data consistency and validity. An important milestone was reached a few weeks ago when we published the post “What is a Valid Transaction in BigchainDB?”.
Beyond version 1.0, we’re planning to strengthen this initiative with even more hands to make BigchainDB’s core more secure, decentralized and scalable.
Backwards-Compatibility and Breaking Changes
All consequent releases of BigchainDB Server increasing its minor or patch version from now will on only introduce backwards-compatible changes to BigchainDB’s data model, HTTP and WebSocket APIs according to semantic versioning.
As we saw the version bump to 1.0 as our last chance to fix annoyances, we added quite a few breaking changes to 1.0. These changes include consistency and security fixes, as well as an upgrade to the latest version of Interledger’s Crypto-Conditions. To allow our users to upgrade their applications and drivers efficiently, we’ve published upgrade guides for BigchainDB Server and the BigchainDB JavaScript driver along with the release.
Deploying the Interplanetary Database
BigchainDB helped establish the Interplanetary Database Foundation (IPDB), an independent not-for-profit organization that will run BigchainDB software as a public blockchain database. Since releasing version 0.10, BigchainDB has been working with IPDB to secure and automate IPDB’s deployments, build the IPDB developer portal, and launch the IPDB test network. So far, 106 accounts have been created on the IPDB test network as part of its closed beta stage. By late summer or early fall, IPDB will open the test network to the general public.
Other changes
Fast /outputs endpoint
By having each node in BigchainDB’s cluster return outputs based on their own block results, we were able to decrease BigchainDB’s latency for querying outputs significantly. Based on our preceding security recommendations, this doesn’t change the current driver-server interaction assumptions. To counteract Byzantine behavior of nodes, we continue to recommend drivers to ask enough nodes to determine what a majority of the nodes think.
Private data sharing on public ledgers
In the previous release’s blog post, we announced that we are working on a protocol specification and reference implementation for confidentially asset payload sharing. We are however still iterating on important details of both the specification and implementation, which is why we’ve decided to delay this feature’s release. In any case, we’re in the final implementation stages and will have something to try and read upon soon. Stay tuned.
Beyond version 1.0
A majority of our time will be spent on BigchainDB’s core in the next six months, the goal being to make it more scalable, secure and decentralized. As next steps for us this means revisiting BigchainDB’s present architecture, to make its data replication more secure, retaining scalability and queryability. Providing better walls for the highest impacting attack vectors (documented here) and kicking-off both crowd-sourced and professional security audits. It also means releasing more regular updates and further documentation on BigchainDB’s replication and consensus security as well as making its assumptions more explicit, to allow our users to deploy BigchainDB in more security-critical/public environments.
We’re keen to start building and hope you’re as excited as we are for what’s to come. If you have questions or feedback regarding this blog post, feel free to reach out to product@bigchaindb.com.
For an in-depth overview of all the changes made to the code, check out our changelogs for: BigchainDB Server, Python driver or JavaScript driver. And as always, don’t forget to upgrade:
pip install --upgrade bigchaindb bigchaindb_driver
Be sure to follow this blog to stay up to date on future releases and to get a first-hand look at additions to the system, what has changed and why. Finally, if you’re a developer using BigchainDB, we want to hear from you. Send us an email at contact@bigchaindb.com and tell us your story.