はじめに
デジタル写真の信頼性をどう担保するか。フェイク画像やAI生成コンテンツが溢れる現代において、「この写真がいつ、誰によって作成されたか」を証明することは重要な課題となっています。
BlockPlaceは、この課題に対してブロックチェーン技術を活用したソリューションを提供します。写真のSHA-256ハッシュをEthereum(Sepolia)に記録し、改ざん不可能なタイムスタンプ付き存在証明を作成。さらに、AI深度推定技術で写真を3Dポイントクラウドに変換し、視覚的にも魅力的な体験を提供します。
システムアーキテクチャ
BlockPlaceは以下の技術スタックで構築されています。
- フロントエンド: Next.js 16 + React 19 + TypeScript
- 3D描画: Three.js + React Three Fiber
- ブロックチェーン: Ethers.js 6 + Solidity
- AI深度推定: Hugging Face Transformers(Depth Anything V2)
- ローカルDB: Dexie(IndexedDB)
アプリケーションの全体フローは次のようになります。
- ユーザーが写真をアップロード
- クライアントサイドでSHA-256ハッシュを計算
- AI深度推定モデルで深度マップを生成
- 深度マップから3Dポイントクラウドを構築
- MetaMask経由でハッシュをスマートコントラクトに登録
- 誰でもハッシュでオンチェーン検証可能
ブロックチェーン証明の仕組み
スマートコントラクト設計
BlockPlaceのSolidityコントラクトはシンプルながら堅牢な設計です。
- 一度限りの登録: 同じハッシュは二度と登録できない
- タイムスタンプ:
block.timestampでブロック生成時刻を記録 - 所有者追跡: 登録者のアドレスを保存
- 取消機能: 所有者のみが証明を無効化可能
クライアントサイドのハッシュ計算
改ざん防止の要となるハッシュ計算は、Web Crypto APIを使用してブラウザ上で実行されます。写真の順序とメタデータを含めてハッシュ化することで、コンテンツの完全性を保証します。
AI深度推定の活用
Web Worker による非同期処理
深度推定はHugging FaceのTransformers.jsを使い、Depth Anything V2モデルをブラウザ上で実行します。WebGPUが利用可能な環境ではGPUアクセラレーションを活用し、そうでなければWASMにフォールバックします。
パイプライン処理の最適化
複数の写真を処理する際、画像の前処理と深度推定を並列化することで効率を向上させています。
3D可視化の実装
深度マップからポイントクラウドへの変換
カメラの内部パラメータ(焦点距離、光学中心)を用いて、2D画像+深度情報を3D空間座標に逆投影します。downsampleパラメータで点の密度を調整し、パフォーマンスと品質のバランスを取っています。
React Three Fiberによるレンダリング
生成したポイントクラウドはThree.jsのBufferGeometryとして構築し、React Three Fiberでレンダリング。OrbitControlsでマウス操作による回転・ズームを実現し、ユーザーが自由に3D空間を探索できます。
主要な技術的チャレンジと解決方法
1. ブラウザでの大規模モデル実行
Depth Anything V2のモデルサイズは数十MBに及びます。ブラウザのCache APIを活用してモデルをキャッシュし、2回目以降の読み込みを高速化しました。
2. ガス代の可視化
ユーザーがトランザクション前にコストを把握できるよう、Ethers.jsのestimateGasとgetFeeDataを組み合わせてガス代を事前計算し、UIに表示しています。
3. オフライン対応
IndexedDB(Dexie)を使用してキャプチャデータをローカルに保存。オフラインでも写真の閲覧や3D表示が可能で、オンライン復帰後にブロックチェーン登録を行えます。
今後の展望
- マルチチェーン対応: Polygon、Arbitrumなどのレイヤー2への対応でガス代削減
- IPFS統合: 写真本体をIPFSに保存し、メタデータURIとして記録
- 証明書発行: PDFやNFT形式での存在証明書エクスポート機能
- バッチ登録: 複数のキャプチャを1トランザクションで効率的に登録
BlockPlaceは、ブロックチェーンの不変性とAI技術の可能性を組み合わせ、デジタルコンテンツの信頼性という現代的な課題に取り組んでいます。