📃

【イベントレポート】Blockcerts勉強会〜千葉工業大学のNFT学修証明書の裏側〜

2022/10/12に公開
9

2022年9月30日(金)に、デジタル庁の有志の方々によるBlockcerts勉強会がオンラインにて開催されました。

eventreport-blockcerts 001

本イベントにて、PitPa代表の石部 達也がゲストスピーカーとして登壇し、前半は千葉工業大学でのNFT学修歴証明書についてとNFT発行のデモ動画を公開し、後半は参加者のみなさまからの質問にお答えする形でQ&Aセッションを実施いたしました。

▼PitPaではブロックチェーンを活用した「キャリア証明書」で企業の採用支援を行う事業「sakazuki」を展開しています。
https://sakazuki.xyz/

当日は80名を超える方々にご参加いただき、コメント欄も大変な盛り上がりを見せました。今回の記事では、その内容の一部をダイジェスト版でお届けいたします。

▼また、勉強会後にリポジトリも公開いたしました。こちらもぜひご覧ください。
https://github.com/pitpa/nft-vc

<目次>

  • 【前編】国内初!NFT学修歴証明書の発行の裏側
  • 【後編】Q&Aセッション
    1. 技術として、NFTとVC(Verifiable Credentials)を選んだ背景は?
    1. ウォレットや秘密鍵はどうやって保管する?
    1. VCはどんな活用法がある?社会実装のために必要なことは?

※今回の勉強会は、デジタル庁の「有志」の方々が主催されている勉強会です。本勉強会の発言は、デジタル庁の見解を示すものではありませんので、ご了承ください。

【前編】国内初!NFT学修歴証明書の発行の裏側

石部:はじめまして。株式会社PitPaの代表取締役、石部 達也です。今回は、千葉工業大学と共同で開発を行ったNFTの学修歴証明書について、その概要から開発背景までお伝えいたします。

eventreport-blockcerts 008

本NFT証明書は、国際技術標準化団体のW3Cが提唱するVerifiable Credentials(VC)の規格に準拠したデジタル証明書を拡張したものです。今回はBlockcertsの技術を応用し、Polygonのブロックチェーン上でNFTとしてmintしたものになります。

Blockcertsは書類が改ざんされていないことを担保する「完全性」、書類の発行元が正しいことを担保する「真正性」に優れたW3Cに準拠したOSSで、ブロックチェーン証明書として世界標準規格とされています。

VCの認証の仕組みは下図のようになります。VCはデジタル庁が提供する新型コロナウイルスのワクチン接種証明アプリにも活用されており、その利用用途は学歴証明に留まりません。

eventreport-blockcerts 006

そして、今回活用したBlockcertsは、2016年にマサチューセッツ工科大学(MIT)で始まった OSSプロジェクトで、主に「学歴」の証明に利用されています。

▼Blockcertsについて詳しくはこちらの記事もご覧ください

学位や資格の「証明」にイノベーションをもたらす、Blockcertsとは?求められる時代背景や活用事例まで

eventreport-blockcerts 003

Blockcertsの活用を決めた背景は、実際にMITやハーバード大学で導入されていることや、Githubを参照した際にもエンジニアのコミット量的に支持されていたため、その活用を決めました。

NFT配布は下図の流れで行いました。

eventreport-blockcerts 005

まず、大学からCSVで学位の情報を提供してもらい、それを元にVCの発行処理を行います。そしてNFTにVCを紐付け、発行するというシンプルな作りです。

eventreport-blockcerts 002

Etheriumのウォレットアドレスに発行するため、NFTを取得した学生さんは好きなNFTビューワーで閲覧できます。

パブリックチェーンという特性をもつNFTを活用するにあたって、個人情報をオープンにしないようデータ設計の段階で議論を重ねました。

その結果、千葉工業大学の学位を取得したことは一目で分かるものの、パブリックでは個人名は出さない設計にし、VCから個人名を参照できるようにしています。今後、特定の人だけが閲覧できるような機能の付与も検討しています。

eventreport-blockcerts 007

NFT側の工夫としては、ENSを用いることで発行元が千葉工業大学であるということが一目でわかるようにしていることや、SBT化によって学位の横流し防止などを行いました。

▶︎ENS(Ethereum Name Service):イーサリアムブロックチェーン上のスマートコントラクトで、イーサリアムのアドレスをわかりやすい文字列に変換することができるネーミングサービスのことを指す

▶︎SBT(SoulboundToken):ブロックチェーン技術を使用して個人の身元を表す譲渡不可能なトークンのこと

【後編】Q&Aセッション

ここからは、参加者の方々から寄せられた質問にお答えするQ&Aセッションの様子をお届けいたします。

1. 技術として、NFTとVC(Verifiable Credentials)を選んだ背景は?

Q:なぜNFTとVC(Verifiable Credentials)を掛け合わせたのでしょうか?

A:前提として、VCは個人情報そのものを示すものではなく、その真正性を検証できる技術のことです。

また、VCのエコシステムでは、発行者と所有者は分散型識別子 (DID) を使用する必要があり、認証情報を発行した組織のDIDに紐付けられた公開鍵を使用することで、発行者に連絡することなく誰が発行したのかを確認することができます。

つまり、VCは完全に「表」の見えるところには存在していません。その一方、NFTはブロックチェーン上に存在し、完全にDecentralizedで永久に残すことができます。その点で、VCだけでなくNFTも掛け合わせたという背景があります。

また、多くのDAOで利用されている、Trelloのweb3版のような「Dework」というタスク管理ツールがありますが、「このNFTを保有していないとコミュニティに参加できない」といった設定を行うことができます。今後、このようにNFTを「会員証」とするような活用法は増えると思います。

▼「Dework」の画面(公式サイトより)

eventreport-blockcerts 004

Q:NFT化に関して考えられるデメリットはありますか?

A:偽のNFTが作成される可能性はあると思います。また、MetaMaskの秘密鍵が盗まれて、学位が第三者に盗られてしまうといった可能性も否めません。

Q:VCそのものはIPFSにあげているという認識ですが、フルオンチェーンにしなかった理由はありますか?

A:フルオンチェーンにできないことはないですが、大学での取得単位などの個人情報はオンチェーン上に書き込むと消去ができないため、プライバシー侵害の観点で議論の余地があると考えています。

例えば、GDPR(EU一般データ保護規則)でも、第17条に「消去の権利(right to erasure) 及び忘れられる権利(right to be forgotten)」として、一定の場合にデータ主体が管理者に対してデータの消去を請求する権利があることを明示しています。

※参考:忘れられる権利についての概要 - Legal ヘルプ - Google Support

Q:個人情報はどこに保管されているのでしょうか?

A:先ほどの質問でも回答した通り、ブロックチェーン上に書き込むことは議論の余地があると考えているため、データベースに保存しています。基本的には、「このMetaMaskの公開鍵の人が、この学位を持っていますよ」という証明が書き込まれるだけで、よりプライベートな情報は大学システムの中に保管されており、既存の管理方法と変わりません。

Q:今回採用したBlockcertsのバージョンを教えてください。

A:v2はW3Cに対応していないため、v3を採用しています。

Q:今回のNFT発行は、どのくらいの工数がかかりましたか?

A:Blockcertsを選定するまでに時間がかかりましたが、実工数としては2週間ほどです。

Q:Blockcerts以外に挙がっていた技術候補はありますか?

A:DCCやOpencertsを検討していました。

▶︎DCC(Digital Credentials Consortium):デジタル証明書の設計に関する専門知識を持つ12の大学によって、2018年に設立されたコンソーシアムのこと。学習者の主体性を高め、より公平な学習とキャリアパスを促進することを目指している。

▶︎Opencerts:シンガポールの国家プロジェクトのことで、2019年よりSkillsFuture Singapore社 (SSG)や政府機関のGovernment Technology Agency (GovTech)、教育省(MOE)、ニー・アン・ポリテクニック大学 (NP)が共同開発を行っている。国家レベルで学位証書をブロックチェーン上で発行しており、国家主導の事例としては世界初の事例。

Q:開発プロセスで一番苦戦したのは、どのような段階でしたか?

A:実装前が一番大変でした。web2はAWS環境などを利用するので開発環境をある程度コントロールできますが、web3はパブリックな環境なので、外部要因でデプロイできないといった問題や、Polygonの大きい障害があったりしたため、ブロックチェーンの開発環境は外部依存が大きいと改めて感じました。

2. ウォレットや秘密鍵はどうやって保管する?

Q:学生はそれぞれウォレットを持つ必要があるということですか?

A:今回の発行にあたって、各自イーサリアムのウォレットを作成してもらいました。大変興味深いなと感じたのは、360名全員にMetaMaskを取得してもらったのですが、トラブルもなくスムーズに作成が完了したので、ウォレットの普及は思っている以上に早いのかもしれない、と思いました。

システム的には、VCはイーサリアムに限定していないのでメールなどで送付することも可能です。また、NFTを切り離してVCだけにすることもできます。いわゆる、カストディアルウォレットの一種で、第三者が鍵を保管するような形です。

Q:秘密鍵はどのように管理されていますか。社会実装を目指す中でも、周知に労力がかかるのではと感じています。

A:属人的に管理をしているのが現状です。また、証明書の公開鍵に関しても現時点では千葉工業大学のドメイン配下に格納しているため、もし千葉工業大学が「無くなる」といった場合には配布した証明書を検証できなくなる脆弱性もあるため、最適解を模索中です。

そこで、現在新しいバージョンを開発しようとしています。現状、属人的に管理している鍵で証明書を発行しているため、万が一その生徒が大学を中退しても発行できてしまうという問題があります。そこで、複数人の鍵を大学の鍵として管理し、そのうち何人かが承認した場合に鍵の証明を認めるというプロセスを検討しています。

Q:学生が秘密鍵を紛失した場合はどうなりますか?

A:現段階のシステムでは、千葉工業大学が一番強い権限をもつ形になるので、大学から再発行が可能です。

Q:発行する際に、大学側にかかるコストはありますか?

A:NFTを発行する際のガス代がコストとしてかかります。ガス代については利用するチェーンに依りますが、千葉工業大学のNFT受講歴証明書に関しては、BlockcertsはEthereumで、NFTはPolygonを利用しています。Polygonを利用している背景としては、ガス代が安いほうを選んだためです。

▼ガス代については、こちらの記事にて詳しく解説しております。ぜひご覧ください。
NFTチェーン、EthereumかPolygonどっちにする? 真面目にガス手数料を見積った話 - PitPa

3. VCはどんな活用法がある?社会実装のために必要なことは?

Q:社会全体で、広くVCが扱われるようになるためには何が必要だと感じていますか?

A:発行するだけではなく、それがどう活用できるのか? のメリットや活用機会を増やしていくことだと感じています。

web3はまだ黎明期と呼ばれ、NFT学修証明書をはじめとした個人のデジタルアイデンティティを具体的に活用するためには、非web3ユーザーに対するUX設計を行ったり、産官学一体となって社会全体でジョブ型雇用を促進していくなどの必要があると考えています。

Q:VCを具体的にどう活用していくのかという点について、千葉工業大学さんと議論はされていますか?

A:千葉工業大学の学位をVCで取得した人が企業側に提示し、企業インターンシップに参加できるような展開を進めています。また、インターンシップでの経験や功績などもVCとして記録していくことで、就職活動の場でも活用できるようなユースケースを検討しています。

Q:千葉工業大学さんでのNFT発行を通じて、反響はありましたか?

A:さまざまな業界の方から反響をいただいています。特に、海外の人材を受け入れる企業の方から多くお問合せをいただいています。

その背景として、海外の方を対象とした「日本語能力試験」の合格を証明する認定書が偽造される事件が相次いだ過去があるため、こうした問題に対して、「透明性」「真正性」を強みとするブロックチェーン技術が役割を果たすのではないかと感じています。

Q:千葉工業大学さん以外の大学での展開は考えていますか?

A:千葉工業大学からも同意を得ているので、今後の展開を検討しています。

Q:VCを使ったサービスに「ワクチン接種証明書」があると認知してます。他にもユースケースがあれば教えてください。

A:海外では、「出生証明」「著作権証明」「炭素排出証明」などにもVCが活用されています。

Q:海外ではVCを提供しているサービスは多いのでしょうか?

A:シンガポールではVCが普及していると言われています。Blockcertsの話になりますが、シンガポールでは国家プロジェクトとして学位証書をブロックチェーン上で発行する取り組みが行われており、国家主導としては初の取り組みとされています。

また、DIFのMembersに並ぶ企業のいくつかが VCのSaaSを提供しているようです。例として、MicrosoftMATTRtrinsicdockなどが挙げられます。

終わりに

いかがでしたでしょうか。今回は千葉工業大学のNFT学修証明証の発行・認証の仕組みや開発の裏側などについてお伝えさせていただきました。

Blockcertsに関しては、今回勉強会を企画してくださった関 治之様が所属されるCode for Japanでも利用される予定とのことで、今後の展開が楽しみです。

【人材募集】PitPaでは、web3技術を活用した職歴証明書の開発を主導するWEBエンジニアを募集しています

■募集概要

PitPaでは、ブロックチェーン技術を活用し、学歴や職歴といった個人のアイデンティティを「資産化」することで、個人が国内に留まらずグローバルに活躍できる世界を目指します。

web3はまだ黎明期と呼ばれ、個人のデジタルアイデンティティを具体的に活用するためには、非web3ユーザーに対するUX設計を行う必要や、産官学一体となって社会全体でジョブ型雇用を促進していく必要があります。

このような新しいビジネス創造に必要な要件を洗い出しながら、技術設計を施し、システム開発をすることが今回の求人概要です。適宜、株主の株式会社デジタルガレージと共にweb3領域での技術連携の検討も行います。

▼詳細はこちらからご覧ください
https://en-gage.net/pitpa_career/work_3543139/?via_recruit_page=1

PitPaでは web3やメディア事業に興味のあるエンジニアの方とお話できればと考えてます。まだ発表できていないプロジェクトもあるので、ぜひお気軽に代表の石部にご連絡いただけたら幸いです。

▼石部のTwitterアカウントはこちらです。DMでお気軽にご連絡ください!
https://twitter.com/isbtty7

▼【ポッドキャスト公開中!〜PitPaの創業から現在まで〜】
代表の石部より、PitPa創業の話から現在取り組んでいるポッドキャスト事業・Web3事業の現在とこれからについてトークしました。ぜひこちらもご拝聴いただけますと幸いです。
https://open.spotify.com/show/2slv3BafA5c32038qFGYis

PitPa Tech Blog

Discussion

HarukiHaruki

大変参考になる記事ありがとうございます!!

今、nft-vcのリポジトリとこの記事の内容を参考にVCを発行してみようとしているのですが、
cert-issuerを使ってVCを発行するところで下記エラーが出ています。

ValueError: `issuer` property must be defined
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

issuerというvalueが無いよということなのですが、blockcerts_revocation_list.jsonにはissuerの値をセットしています。

{
    "@context": "https://w3id.org/openbadges/v2",
    "id": "https://storage.cloud.google.com/test-nft-vc/blockcerts_revocation_list.json",
    "type": "RevocationList",
    "issuer": "https://unchain.tech/blockcerts.json",
    "revokedAssertions": []
}

他に確認すべき箇所等ありましたらご教示いただけると幸いです。

バージョンなどは下記の通りになっています。

yarn --version 1.22.17
node --version v18.12.1
Python 3.9.13

お手数ですがよろしくお願いします。

ymoeymoe

Harukiさん、はじめまして!こちらのレポート執筆を担当しました、吉井です(PitPaで広報周りを担当しております)。記事お読みいただき&コメントいただきありがとうございます!^^ こちら、エンジニアメンバーに確認し次第ご返信させていただきますね!少々お待ちくださいませmm

HarukiHaruki

吉井さん! ありがとうございます!!
お手数ですがよろしくお願いいたします!!!

HarukiHaruki

貴社のVCに関するレポートとても勉強になりました!
VCの話はよく聞くのですが実際どの様に実装しているかモヤモヤしていまして,,,
この記事を読んでなんとなくイメージが湧いてきました!

ymoeymoe

とても嬉しいお言葉ありがとうございます!! この領域の話、出てる情報も少なくてなかなか難しいですよね…(私も執筆時は苦戦したので他のメンバーに手伝ってもらいましたw)
▼以下、弊社エンジニアメンバーからの回答になります!ご参考いただけましたら幸いです^^

cert-issuerの対象となる output/unsigned_certificates のファイルの項目にissuerが存在しない場合に同様のエラーが表示されます。
issuerの項目は、.env ファイルの値で ISSUER_DID_DEV もしくはISSUER_DID_PRDを利用して設定されていますので、.envで上記が設定されているかご確認いただけたらと思います。

参考: .env.sample
https://github.com/pitpa/nft-vc/blob/04a1073878e70f1c983569f81b0a3f5904133dbb/.env.sample#L38-L39

ymoeymoe

ぜひ!もしまた不明な点などございましたらお気軽にご連絡くださいませ!^^ 今後ともよろしくお願いいたします!

HarukiHaruki


VC発行して検証まで成功しました!!

感激です!ありがとうございました!!!

ymoeymoe

わーーー無事にできたようでよかったです!w また今後も何かありましたら、よろしくお願いいたします!^^