WeaveDBの紹介: Web3版Firestore

現代のデジタル世界では、データはインターネットとウェブの基盤をなしています。しかし、現在のデータ管理システムは中央集権的であり、検閲や停止のリスクを抱えています。Web3の台頭により、分散型システムへの移行が進んでいますが、特にデータベース層において課題が残されています。WeaveDBは、この課題に対するソリューションとして登場した、ブロックチェーン上のスマートコントラクトとして機能する分散型NoSQLデータベースです。

## 分散型データベースが直面する4つの課題

既存のブロックチェーン技術では、完全に分散化されたデータベースを構築することが困難でした。主な障壁となっているのは以下の4つの要因です：

1. **コスト**：従来のブロックチェーンでは、データの保存と計算が法外に高価です。例えば、イーサリアムでは1GBのデータ保存に約1,000万ドルかかります。

2. **パフォーマンス**：ブロックチェーンのファイナリティ（取引の確定）は遅く、実用的なデータベースに必要な1ミリ秒未満という速度からはほど遠い状態です。

3. **スケーラビリティ**：ストレージサイズが制限されており、ウェブ上で日々生成される膨大なデータ量に対応できません。

4. **アクセス制御**：中央管理者のいない環境で、きめ細かなアクセス制御を実現することが極めて困難です。

## WeaveDBのソリューション

WeaveDBは、これらの課題に対して以下のようなソリューションを提供しています：

### Arweave永続ストレージを活用したコスト削減

WeaveDBはArweaveというブロックチェーンのような永続ストレージプロトコルを基盤としています。Arweaveでは、1GBあたり約5ドルという低コストで、データを実質的に永久に保存できます。これはイーサリアムの約40万分の1のコストです。さらに、「Storage-based Consensus Paradigm (SCP)」という新しいアプローチを採用し、オフチェーン計算とストレージコンセンサスを組み合わせることで、スマートコントラクト層のコストを大幅に削減しています。

### Warpシーケンサーによる高速パフォーマンス

Arweaveの遅いブロック時間（約20分）を補うため、WeaveDBはWarpというシーケンサーを導入しています。これにより、トランザクションの確定までの時間が10ミリ秒まで短縮され、web2クラウドデータベースに匹敵するか、それ以上のパフォーマンスを実現しています。

### KVストレージアダプターによる無限のスケーラビリティ

WeaveDBは、基礎となるKV（キーバリュー）ストレージを活用するプロトコルを実装しています。実際のデータとインデックスは、ノードが設定した基礎となるKVストレージに保存され、データベースが無限にスケールすることを可能にしています。さらに、Arweaveネットワーク自体も、ストレージコストによってのみ制限されるスケーラビリティを持っています。

### FPJSONによる高度なアクセス制御

WeaveDBは、FPJSON（関数型プログラミングJSON）という独自のドメイン固有言語を開発しました。これにより、250以上の構成可能な関数を使用して、複雑なアクセス制御ルールとアプリケーションロジックをJSON形式で表現できます。FPJSONのおかげで、新しいスマートコントラクトをデプロイすることなく、データベースのロジックをアップグレードすることが可能になりました。

## WeaveDBの特徴と機能

WeaveDBは分散型アプリケーションに必要な様々な機能を提供しています：

1. **暗号ウォレット認証**：複数のブロックチェーンネットワークと互換性のある公開鍵アルゴリズムをサポート（secp256k1、Ed25519、RSA、BabyJubJubなど）

2. **データスキーマ**：JSONLogicを採用し、各コレクションに対して正確なデータ構造を定義

3. **アクセス制御ルール**：FPJSONを使用して、複雑なアクセス制御とデータ変更ルールを設定

4. **自動実行Cron**：定期的なタスクをトランザクションなしで実行

5. **クエリトリガー**：あるクエリから別のクエリを条件付きで自動的に実行

6. **リレーヤー**：外部データソースと安全に連携するための仕組み

7. **ZKP検証機**：ゼロ知識証明を活用したプライバシー保護機能

8. **zkDB / zkRollup**：他のブロックチェーンとの相互運用性を実現

## モジュラーアーキテクチャ

WeaveDBはモジュラーアーキテクチャを採用しています。これは以下の4つの層で構成されています：

1. **データソース**：コアとなるデータベースコントラクト
2. **インデクサー**：効率的なデータ抽出を担当
3. **クエリパーサー**：APIクエリを評価し適切なインデクサーを選択
4. **パブリックAPI**：データベースへのアクセスインターフェース

このアーキテクチャにより、同じデータソースを複数のアプリケーションで共有したり、異なるタイプのデータベース（RDB/NoSQL/GraphDB）を同じデータソース上に構築したりすることが可能になります。

## WeaveDBの実用例

WeaveDBを使えば、完全に分散化されたTwitterのような複雑なアプリケーションを構築することができます。例えば、ユーザーがツイートに「いいね」をした場合、自分が更新する権限を持たないツイートの「いいね」カウントを更新するという複雑な処理も、クエリトリガー機能を使って実現できます。

```javascript
// ユーザーをフォローするカスタムクエリの例
[
  "set:follow",
  [
    ["split()", [":", "$id", ["=$from", "=$to"]]],
    ["=$isFromSigner", ["equals", "$from", "$signer"]],
    ["mod()", { from: "$from", to: "$to", date: "$ms" }],
    ["allowif()", "$isFromSigner"],
  ],
];
```

## 課題と今後の展望

WeaveDBは画期的なアプローチを持ちながらも、いくつかの課題に直面しています：

1. **クライアント側のスケーラビリティ**：現在、クライアントはコントラクトの現在の状態を評価するために大量のトランザクション履歴をダウンロードする必要があります。

2. **データ一貫性と低遅延の両立**：現在のアーキテクチャでは、データの一貫性を確保するとレイテンシーが上がるというトレードオフがあります。

これらの課題に対しては、WeaveDB Rollupと呼ばれる新しいソリューションが開発中であり、データの一貫性と低遅延を両立させた高性能アプリケーションを実現することを目指しています。

## まとめ

WeaveDBは、ブロックチェーン上のスマートコントラクトとして機能する分散型NoSQLデータベースとして、web3の世界に新たな可能性をもたらしています。Arweave永続ストレージを活用した低コスト、Warpシーケンサーによる高速パフォーマンス、KVストレージアダプターによる無限のスケーラビリティ、そしてFPJSONによる高度なアクセス制御を備え、真に分散型のアプリケーション開発を実現しています。

データの民主化と分散化を目指すWeb3の理想に一歩近づく技術として、WeaveDBは今後さらなる進化を遂げることでしょう。​​​​​​​​​​​​​​​​