Introduction

What is HollowDB?

HollowDB is a decentralized privacy-preserving key-value database on Arweave network, powered by Warp Contracts.

A key-value database is a non-relational database, where data is simply stored as a collection of pairs: a key and a corresponding value. Arweave is a decentralized storage network, essentially providing a decentralized permanent-storage for all kinds of data. You can write smart-contracts in Arweave using SmartWeave. In particular, Warp Contracts provide much more functionality atop SmartWeave for developers to write more advanced smart-contracts.

HollowDB essentially operates on a smart-contract that provides an interface for a key-value database that lives on Arweave, essentially making it a decentralized key-value database. Here is the catch though, if the smart-contract is handling all the operations, how are we going to achieve authenticated operations? That is, we only want owners of data to be able to update them, or remove them.

This is where HollowDB utilizes zero-knowledge proofs. A zero-knowledge proof is a proof where the prover reveals no extra information other than the fact that some statement is true. Thanks to recent developments within the last decade or so, generating proofs and verifying them have become much more efficient. In particular, proof size is very small and verification happens very quickly. Thanks to this, we can verify proofs at contract level!

In HollowDB, users prove that they own a key for some key-value pair, and they do this using a preimage-knowledge proof where the key is the digest from some hash function. In doing so, they do not reveal who they are as the digest is really just a random looking string and the proof reveals nothing about the preimage. This functionality makes HollowDB privacy-preserving.

Each smart-contract in HollowDB can be thought of as a separate key-value database. Users may deploy their own contracts using our repository, and then interact with them using the HollowDB SDK. Users will also need to have an Arweave wallet, which is easy to arweave.app.

In short, HollowDB is made of the following components:

  • A SmartWeave smart contract that is the interface to the key-value storage on Arweave.

  • A SnarkJS plugin for Warp Contracts, enabling zero-knowledge proof verification at contract level.

  • An NPM package that provides a very simple interface to interact with a HollowDB contract, as well as administrative operations such as changing owner & updating state.

Getting Started

To get started with HollowDB, simply install the package:

yarn add hollowdb
# or
npm install hollowdb
# or
pnpm add hollowdb

Last updated