Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/firstbatchxyz/HollowDB

A privacy-preserving key-value database on Arweave.
https://github.com/firstbatchxyz/HollowDB

arweave arweave-blockchain circom firstbatch hollowdb key-value key-value-database key-value-store smartweave warp zero-knowledge

Last synced: 3 months ago
JSON representation

A privacy-preserving key-value database on Arweave.

Awesome Lists containing this project

README

        


logo



HollowDB



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



License: MIT


NPM


License: MIT


Workflow: Tests


Discord

## Installation

To install HollowDB:

```bash
yarn add hollowdb # yarn
npm install hollowdb # npm
pnpm add hollowdb # pnpm
```

Depending on your use-cases, we have several optional dependencies:

- You can use [hollowdb-prover](https://www.npmjs.com/package/hollowdb-prover) as a simple utility that generates zero-knowledge proofs that are verifiable by HollowDB.
- You can use LMDB cache within your Warp instance via [warp-contracts-lmdb](https://www.npmjs.com/package/warp-contracts-lmdb).
- You can use Redis cache within your warp instance via [warp-contracts-redis](https://www.npmjs.com/package/warp-contracts-redis) together with [ioredis](https://www.npmjs.com/package/ioredis).
- When you are evaluating a contract that uses ZK proofs, you should also use [warp-contracts-plugin-snarkjs](https://www.npmjs.com/package/warp-contracts-plugin-snarkjs) and [warp-contracts-plugin-ethers](https://www.npmjs.com/package/warp-contracts-plugin-ethers).

## Usage

You can read the full documentation of HollowDB at .

> [!NOTE]
>
> If you are interested in customizing the smart contract of HollowDB and extending its SDKs, refer to this [README](./src/contracts/README.md).

## Examples

Check out the [examples](./examples/) folder for a few examples of HollowDB usage:

- **Simple**: a single JS file that demonstrates getting & setting a key.
- **Micro**: a Vercel Micro backend that can serves HollowDB as API endpoints, useful when you want to use HollowDB from another language.

## Testing

You can run all tests via:

```sh
pnpm test
```

Tests operate on a local Arweave instance using [arlocal](https://www.npmjs.com/package/arlocal). They will run for all cache types (LMDB, Redis, LevelDB). You will need to have a Redis server running for some of the tests to pass, the URL shall be specified [here](./tests/constants/index.ts).

## Styling

You can check the formatting of the code or lint everything with the following commands:

```sh
pnpm format # prettier
pnpm lint # eslint
```