本書の目的
デジタル文化財の管理において、「真正性の保証」と「来歴情報の永続的な記録」は極めて重要な課題です。博物館や美術館が所蔵する文化財のデジタルデータは、複製・改ざんが容易であり、従来の中央集権的なデータベースでは長期的な信頼性を担保することが難しい場面があります。
本書では、ブロックチェーン技術とIPFS(InterPlanetary File System)を組み合わせることで、デジタル文化財の管理システムを試作した過程を記録しています。具体的には、文化財のデジタル画像をNFT(Non-Fungible Token)として登録し、その来歴情報をブロックチェーン上に記録するシステムを構築します。
なぜブロックチェーンなのか
デジタル・ヒューマニティーズの分野では、文化財のデジタルアーカイブが世界中で進んでいます。しかし、デジタルデータには以下のような課題があります。
- 改ざん耐性: デジタルデータは容易にコピー・変更が可能であり、オリジナルと複製の区別が困難
- 来歴追跡: 文化財の所有履歴・修復履歴・展示履歴などの来歴(provenance)情報を信頼性高く記録する仕組みが必要
- 永続性: 特定の機関やサーバーに依存しないデータ保存が求められる
- 相互運用性: 異なる機関間でデータを共有・検証できる標準的な仕組みが必要
ブロックチェーンは、これらの課題に対して以下の利点を提供します。
- 不変性: 一度記録されたデータは改ざんが極めて困難
- 透明性: すべての取引履歴が公開台帳上で検証可能
- 分散性: 中央管理者なしにデータの整合性を保証
- スマートコントラクト: 文化財の貸出・返却などのルールをプログラムとして実装可能
システムの全体像
本システムは、以下の技術スタックで構成されています。
使用技術の概要
| 技術 | 用途 | バージョン |
|---|---|---|
| Next.js | フロントエンドフレームワーク | 14.x |
| Solidity | スマートコントラクト言語 | 0.8.20 |
| Hardhat | 開発・テスト・デプロイ環境 | 2.x |
| ethers.js | Ethereumライブラリ | v6 |
| wagmi | Reactフック for Ethereum | 2.x |
| Pinata | IPFS ピンニングサービス | V3 API |
| Sepolia | Ethereumテストネット | - |
各章の構成
本書は以下の流れで、段階的にシステムを構築していきます。
第1章(本章): システムの動機と全体像の解説
第2章 NFT対応: ERC721コントラクトの実装とPinata IPFSを使ったメタデータの保存。文化財をNFTとして発行する基本的な仕組みを構築します。
第3章 履歴の追加: 文化財の来歴情報(修復、展示、所有権変更など)をブロックチェーン上のイベントログとして記録する機能を実装します。
第4章 NFTのレンタル(所有権転送版): 最初のアプローチとして、所有権の転送によるレンタル機能を実装しますが、この方法の問題点を確認します。
第5章 NFTのレンタル(ERC-4907版): ERC-4907規格を使用した適切なレンタル機能を実装します。所有者と利用者を分離し、期限付きアクセスを実現します。
第6章 ウォレットの接続: MetaMaskとwagmiを使用したフロントエンドからのウォレット接続を実装し、ユーザーがシステムとインタラクションできるようにします。
開発環境のセットアップ
本書のコードを実行するために、以下の準備が必要です。
# Node.js のインストール(v18以上推奨)
node -v
# プロジェクトの作成
mkdir cultural-heritage-nft
cd cultural-heritage-nft
# Hardhat プロジェクトの初期化
npx hardhat init
# "Create a TypeScript project" を選択
# 必要なパッケージのインストール
npm install @openzeppelin/contracts
npm install --save-dev @nomicfoundation/hardhat-toolbox
# フロントエンド用パッケージ
npm install next react react-dom wagmi viem @rainbow-me/rainbowkit
MetaMaskブラウザ拡張機能をインストールし、Sepoliaテストネットに接続しておいてください。テスト用のETHは、Sepolia Faucetから取得できます。
想定読者
本書は、以下のような方を対象としています。
- デジタル・ヒューマニティーズに興味がある研究者・学生
- 文化財のデジタルアーカイブに携わる技術者
- ブロックチェーン技術を実際のユースケースに適用したい開発者
- NFTの技術的な仕組みを理解したい方
JavaScriptの基本的な知識があれば、Solidityやブロックチェーンの経験がなくても読み進められるように構成しています。