Using the IPDB Test Network
We recently opened the IPDB Test Network to the public and updated it with WebSocket support. That means it’s time for two things:
- A tutorial on how to use the IPDB Test Network; and
- A look at how the current IPDB Test Network is deployed.
Here we go…
What is IPDB?
IPDB — The Interplanetary Database — is a public, planetary-scale blockchain database built with strong governance, decentralized control and universal accessibility.
Note that this is the IPDB Test Network. In the test network, BigchainDB is operating all the nodes. In the production network, each node will be run by a different caretaker organization.
Getting Started on the IPDB Test Network
On BigchainDB’s Get Started page, you’ll find a demo that lets you send your first transaction to the IPDB Test Network. It’s really easy—you’ll be talking to the API in minutes. Once you’re ready to do more, it also has links to documentation, tools and drivers.
Once you’re ready to use the IPDB Test Network directly:
- Head to the IPDB Developer Portal.
- Sign up and create an account.
- Verify your email.
- Log in with the registered email and get your credentials (
app_key) from ‘Your Apps’ -> App Name -> Application ID and Application Keys.
Refer to the docs to create or transfer an asset using the Python driver.
BigchainDB also supports a WebSocket Events Stream API since v0.10 which notifies a subscriber about interesting events, such as new valid transactions.
Use your favorite WebSocket library to connect to the IPDB Test Network at:
The NGINX frontend acts as the HTTPS termination point, and forwards the request to the appropriate backend. This will let you listen to any new valid transaction across the cluster.
Currently, the IPDB Test Network is completely free. For long term storage costs on IPDB, have a look at this excellent blog post by Jamila Omaar, where we compare data storage costs on IPDB, Ethereum and the Bitcoin blockchain.
Want to know more about the deployment architecture? Keep reading!
IPDB Test Network Deployment Architecture
The IPDB Test Network is currently deployed on the Azure’s WestEurope datacenter. We leverage the managed Kubernetes cluster provided by Azure Container Service to deploy and manage the single node IPDB deployment.
We selected Kubernetes as it gives us platform abstraction. IPDB caretakers can leverage multiple ways to deploy a node — across public cloud providers or on-premise bare-metal.
We use NGINX as the cloud entry point for all requests over HTTPS. This also decouples HTTPS handling from other services.
NGINX also acts as a traffic splitter to all the ingress traffic — GET requests do not go through our authorization module, whereas POST requests need to have the valid
We use 3scale API Management Platform to validate the
app_key in every POST request sent to the IPDB Test Network. Another NGINX instance serves as a proxy to the backend BigchainDB instance. This NGINX instance is actually an OpenResty instance running custom Lua scripts, which verifies the credentials and usage limits for a user, before proxying the request to the BigchainDB backend.
We also use a self-signed certificate authority to enable x509 authentication for all the connections between BigchainDB, MongoDB Monitoring Agent and MongoDB Backup Agent.
Any good database deployment needs a robust backup strategy. Currently, IPDB uses BigchainDB backed by MongoDB. MongoDB Cloud Manager allows us to easily backup all the data in the IPDB Test Network. The Cloud Manager backup module initially syncs all the data from a MongoDB primary member to the cloud storage, and then tails the oplog for further changes and updates the backup accordingly. For those who are curious, MongoDB Cloud Manager backs up IPDB data to AWS Ireland.
IPDB is powered by BigchainDB, an open source project. You can see all the code and configuration described above here.
Love it? Hate it? Have something to say? Want to join the revolution?
Take it for a spin!
Comment below or send us your questions, comments, and love letters at firstname.lastname@example.org.