# コンテンツアドレス指定ストレージ ## 定義 コンテンツアドレス指定ストレージ(content-addressed storage)とは、データそのもの(またはその構築に使われた入力全体)の暗号学的ハッシュ値から一意な識別子・格納先パスを導出する記憶方式である。[[@2004__LISA__Nix - A Safe and Policy-Free System for Software Deployment]] では、コンポーネントのビルドに関わる全入力(ソース・ビルドスクリプト・依存コンポーネントのストアパスなど)をハッシュ化してストアパス(例: `/nix/store/eeeeaf42e56b-subversion-0.32.1`)を計算する方式として導入されている。名前が中身(の生成過程)から一意に決まるため、同一入力から得られたコンポーネントは常に同じ格納先を共有し(最大共有)、異なる入力から得られたコンポーネントは決して衝突しない。 ## 未解決の問い - コンテンツアドレス指定は、あるユーザーがビルドした結果を別ユーザーが安全に再利用する「ビルド結果の相互信頼」をどこまで実現できるか。Nix論文はハッシュの完全性がこれを安全にしうると展望するのみで、検証機構の具体設計には踏み込んでいない。 - ハッシュの対象を「宣言された入力全体」にするか「出力データそのもの」にするか(Nixのderivationハッシュ vs Gitのブロブハッシュ的な方式)で、依存関係の完全性検出や再現性の保証範囲がどう変わるか。 - コンテンツアドレス指定ストレージと、Docker/OCIのレイヤーキャッシュや Bazel のリモートキャッシュのような後発システムとの間で、設計の収斂点と相違点は何か。 ## 関連 - [[@2004__LISA__Nix - A Safe and Policy-Free System for Software Deployment]] — ビルド入力のハッシュ化によるストアパス計算の原型的な実装。 - [[イミュータブルインフラストラクチャ]] — コンテンツアドレス指定によって実現される不変なコンポーネントストアと、それを土台にしたアトミックな環境切り替えの関係。 ## 出典 - [[@2004__LISA__Nix - A Safe and Policy-Free System for Software Deployment]]