Verifiable Credentials(VC)とNFTの違い

# Verifiable Credentials(VC)とNFTの違い

先日、「DID/VCの最前線」というMeet upに参加してきました。
https://peatix.com/event/4367682?utm_medium=web&utm_source=results&utm_medium=did+vc%3A35.6837%2C139.6805%3A%3A%3A4367682&utm_campaign=search&srchid=2212%254hY%25roEvGZAB2kE%25

質疑タイムにて「Verifiable Credentials(VC)とNFTの違いはなんですか」という質問が上がり、登壇者の方々が明確に違いを説明できていなかったことがモヤモヤしたため勢いで書いてみた文章です。(揚げ足をとったりするつもりはないです。)

DID,VCが何かについてはこの文章では説明はしません。

## この文章の構成
1. 根本的な問題を解決： なぜVCとNFTが混同されるのか
2. 技術的視点からみたVCとNFTの違い
3. 技術によってできることの違い
4. VC,NFTそれぞれの優位な点

また本文章では、いわゆるソウルバウンドトークンやSBT,セキュリティトークンもNFTとして説明をします。(そもそも同じ技術なので)

## 1. 根本的な問題を考える： なぜVCとNFTが混同されるのか
まず、最初に申し上げると**VCとNFTは全くの別物です。**
ただ、いくつかの点で似た特性を持つために混同されてしまうのだとおもます。
その原因から考えてみます。
私は多くの人が **「ユースケースを軸に両技術を比較するから」** だと推測しています。

NFTのユースケースとして、証券や債券などの金融商品における所有権の証明、チケットやアート作品の、商品のトレースなどがよくあります。
VCのユースケースとしても、同様に金融商品のVC化、所有証明としてのVC,VCを使った物流システムなどはユースケースとして検討されています。
これはW3CがVCのユースケースとして公開しているドキュメントです。多くはNFT文脈でも見たことがあると思います。
https://www.w3.org/TR/vc-use-cases/


ただ、そもそもの多くのユースケースにおいて、VC,NFTは技術的に誤った用いられ方をしています。


それを説明する上で次に技術的による比較に入ります。

## 2. 技術的視点からみたVCとNFTの違い

NFTについての私の技術・技術課題について書いた文章も貼っておきます。
[TODO:はる](/iBLhpy6bRqa0LBSDLH_1zg)
NFTについて詳しく知りたい方はそちらも参考にして下さい。

### VC
VCはW3Cの標準を見ると[「Verifiable Credentials Data Model v1.0/v2.0」](https://www.w3.org/TR/vc-data-model-2.0/)というタイトルがついています。


**VCはあくまでデータモデル**ということです。
どのような構造でデータを書くかのルールを作ることで、データの相互運用性を高めることが目的です。

### NFT
次にNFTについて、EthereumのRFCである[「ERC721 Non-Fungible Token Standard」](https://github.com/ethereum/ercs/blob/master/ERCS/erc-721.md)を参照してみます。

冒頭に「The following standard allows for the implementation of a standard API for NFTs within smart contracts. This standard provides basic functionality to track and transfer NFTs.」と書かれています。
つまり、**NFTのスタンダードではトークンを扱う上でのインターフェースを定義しているまでです。**

読み進めると「This is the "ERC721 Metadata JSON Schema" referenced above.」と書かれた箇所に、NFTのメタデータのサンプルとして記載されたJSONデータがありますが、これはあくまでサンプルです。
**「NFTのメタデータとして何を書くか」は明確には決まっていません。**


一時期NFTにもメタデータのフォーマットの規格について乱立して時代がありました。
最近では結局**NFTのメタデータとしてVCを採用する場合も少なくない**ようです。
つまり、全くの別物というのはそもs２つの技術は抽象度が異なり、NFTはVCを含む場合もあるということです。

## 3. 技術によってできることの違い

最初に**VCとNFTは全くの別物**と言ったにも関わらず、二つには大きな共通点があります。
**特定のデータの真正性を担保可能なことです。**
VCにおいてはそのVCに含まれるデジタル署名を検証することで、VCが主張する内容が改ざんされていないことを検証できます。
一方のNFTにおいても、ブロックチェーンにおけるトランザクションをいう単位で、記録にデジタル署名を残すことで真正性を担保できます。

**つまりは両方とも「特定のデータが改ざんされていないこと」を検証できる仕組みを持っています。**

### VCとNFTのどちらを選ぶか
では、NFTとVCをどちらを選ぶのがいいでしょうか？
そこで重要なのが「Why Blockchain?」の視点です。
具体的には以下のようなことを堅牢すべきです
- **何を担保するためにブロックチェーンを使うのか**?
- 真正性の担保においてブロックチェーンにデータを記録する度に発生する**手数料をわざわざはらってまで記録する必要があるデータなのか**?
- ブロックチェーンに記録するということは、誰からも閲覧可能になるということであり、**プライバシーの点からも問題ないのか**?

## 4. VC,NFTそれぞれの優位な点

ここまで読んでわかった人もいるかもしれませんが、大抵のユースケースにおいて、VCにおけるデジタル署名だけで十分ではないでしょうか。
しかし、NFTのようにブロックチェーンを使うことができる場面も少しあります。

### ブロックチェーンでできること
ブロックチェーンを端的に一文で説明します。
 「**誰でも記録。閲覧可能なタイムスタンプシステム**」です。
ブロックチェーンは、この機能をしか持っていないと言っても過言ではありません。
タイムスタンプシステムとは「電子データが特定の時刻に存在し、その時刻以降改ざんされていないことを証明する技術」です。

トークンなりスマートコントラクトなり、Layer2なりブロックチェーンの文脈でも様々な技術用語が生まれ飛び交っていますが、結局はタイムスタンプシステムとしてブロックチェーンをラップして多機能化・スケーラビリティの向上を図っているだけで、タイムスタンプを記録することしかできません。

![スクリーンショット 2025-04-24 9.56.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/46ef8f01-4fbc-4e25-940e-f30e19dc85ef.png)


つまりは、「データがこの時刻に記録された」「この時刻にデータの変更が起きた」ということを**改ざん困難な形で記録**しておくこと、それを**誰からでも参照可能**にするだけです。
ただ、ブロックチェーンにおいてはブロックの順番が相対時間の記録として働くため、**どの順番でどのデータが記録されたかを確認することで、データの変更の追跡記録の確認が可能**です。

この特性を使うことでVCをより幅広く活用できるかもしれないユースケースがあるので紹介しておきます。

#### VC失効管理
基本的に発行されたVCはHolderと呼ばれる、Issuerと分離された個人が管理します。
Issuerが管理していないということは、そのVCを失効したいといった場面では、そもそもどの情報を失効している・されているのかが不明瞭になります。

![スクリーンショット 2025-04-24 9.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/228d99f0-d430-43a3-ae10-bdd265952cce.png)


例えば、「資格試験の不正受験」をユースケースとして考えてみます。
英語資格検定を行う認定団体が、受験者Aに対して英語資格VCを与えました。
しかしながら、資格付与後にその受験者Aが不正受験を行ったことが発覚し、認定団体は当該資格を取り消したいと考えました。
しかし、資格自体は受験者Aが所有しているのでそのまま使い続けることができてしまいます。

![VCNFT2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/f4666de0-16eb-493b-8f78-189be895f676.png)


そこでいわゆる[Bitstring Status List](https://www.w3.org/TR/vc-bitstring-status-list/)と呼ばれるものがあります。
Issuerが公開する学生証の状態のみリストを公開します。
例えば、「学生証番号N番: 有効」「学生証番号M番: 無効」のように、キーとバリューがわかるデータをリストで公開します。(ここでは簡易化した説明をとっています)
Status Listは基本的にはIssuerが自身のWebサイトでホスティングして管理する設計になっているという認識です。


前置きが長くなりましたが、このStatus Listの持ち方にブロックチェーンは使えるかもしれません。

受験期にアクセスが増加し、学校のWebサーバーがダウンすることでVCのStatus Listを参照できなかった、などというケースは容易に想像がつきます。
**ブロックチェーンは障害耐性という視点では優れているので、アクセスが集中しても参照可能なStatus Listの保管場所として利用できるかもしれません。**

#### 属性情報の変更管理
特定の意味を表すVCが、ある操作によって属性情報に変更が生じることがあります。
例えば貴重なトレーディングカードの所有権証明にVCを使っていたとします。

所有者Aは購入者Bに対してトレーディングカードを販売します。
その際に所有者Aは購入者Bに所有権証明VCを渡します。
しかしながら、所有者Aが所有権証明VCのコピーを持っておくことで所有権を主張し出すかもしれません。
この際に、「誰が誰にデータを渡した」という記録を残しておいた方がいいかもしれません。
その時にブロックチェーンの「タイムスタンプシステム」として性質が役立ちます。

このように頻繁に属性情報の変更が生じるユースケースにおいては、いわゆるNFTのようにブロックチェーン上に「この時刻にデータ(所有者)の変更が起きた」という記録を残しておくことで今誰が所有しているのか、どういう経路を辿ってきたのかなどが管理しやすくなる場合もあります。

## おわりに
DID/VCはセットの技術であると認識してしまう人が多いみたいです。
なので私は全く別の技術であると主張するささやかな抵抗の意味も込めて"DID,VC"という書き方を意識するようにしています。

そして、DID,VCをブロックチェーンと密結合の技術だと認識する人も多いみたいです。
DID,VCについて語られる多くの場面で"ブロックチェーン"という単語が出てくるからだと思いますが、これは大きな誤りです。
個人的にはミスリーディングなのでDID,VCを語る場面で、必要でない限りブロックチェーンという単語は最低限使うにとどめて欲しいと願っています。

次回は、「SSIなんぞクソ喰らえ」というタイトルの文章を考えています。
あとは「Why DID,VC」も書いてみようかなとか。

## 追記
- NFTはブロックチェーンに限ったものではないとご指摘をいただきました。全くその通りです。本文章ではあくまでブロックチェーン文脈におけるNFTについてのみを対象に言及したため、ERC721を参照することにしまs