メタバース上でトラストレスにNFTを交換する(理論編)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/5d00991d-2d20-5315-8c4c-a526bbeeef89.png)

今、メタバースがにぎわっています。
SymbolブロックチェーンのXYM保有者を中心にclusterというメタバースプラットフォームで自分が所有する（作成した）NFTを展示する人も増えてきました。

https://nemlog.nem.social/blog/75488

また、web3版メタバースという言葉も使われ始めているようです。

https://www.vjyou.com/2022/03/metaverseweb30.html

今回の記事はメタバース上でNFTをトラストレスに交換する方法について考えてみます。
（メタバースに飾るためのNFT画像をOpenSeaなどのマーケットプレイスで売買する方法の解説ではありません）
また、この記事執筆当初はclusterでの実装（実践編）を想定して書き始めましたが、まだ実現にはメタバース側から提供される機能に課題が多いことが判明したため、現段階では理論のみ公開し、いずれ実現できる日がくることを待ちたいと思います。

それではまず、メタバースを考える前にブロックチェーン上のデータを活用する時に最初に注意すべき点、 **検証するのは誰か？** という点を考察していきましょう。

# 絶対に忘れちゃいけない三角形

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/f2a3731f-dd04-0ea5-27b2-636a0029b9d3.png)

この図は分散型アイデンティティのエコシステム図です。

https://qiita.com/nem_takanobu/items/b1e85d5605f37a5da12f


大学が**発行**した卒業証書を学生が**所有**して企業が**検証**します。
たとえば、これを就活サイトで活用しようとした場合、web3の文脈で重要なのは、

学生が所有する卒業証書を、就活サイトに依存せずに、企業が自由に検証できること、です。
学生が所有する卒業証書を、就活サイトが検証して、それを企業が信用するのではありません。

これをメタバースに置き換えて説明してみます。
ユーザが所有するNFTを、メタバースに依存せずに、自由に交換できること、が重要です。
ユーザが所有するNFTを、メタバースが検証して、メタバースと提携するマーケットプレイスで交換するのではありません。

後者は情報の集中するプラットフォーマーが一人勝ちするweb2.0の仕組みと何ら変わりません。しかし、今語られている多くのweb3が後者の文脈で語られています。理由は、一人勝ちするプラットフォーマーを目指すことの方が、今のところ個々の企業にとっては魅力的だからかもしれません。

また、「就活サイトに**依存せずに**」「メタバースに**依存せずに**」というのは就活サイトやメタバースなどのプラットフォームから提供されるあらゆる情報が誰からも検証可能であるということを意味します。トラステッドウェブ(Trusted Web)というワードが存在しますが（今回は説明しません）、NFTを交換する当事者同士が検証するための情報を自前で全て揃えるのは多くの手間がかかるものですが、今後プラットフォームがこの部分の役割をいかに担っていくかが重要になると考えます。

さて、記事の本題に戻りましょう。
メタバース上でNFTをトラストレスに交換します。

# 想定するユースケース

メタバース上でとある方の個展で素敵なNFT画像を見つけたので、自分の持っているNFTと交換したい。

# NFT交換の定義

今回の「NFT交換」という言葉の意味を定義しておきます。

- 交換するもの
    - メタバース内で展示されている画像が紐づけられたトークンを交換します。
    - ブロックチェーンによって画像の存在証明がトークンに紐づけられているものとします。
        - 存在証明に必要な画像情報はハッシュ値でもファイル実体でもどちらでも可とします。
        - 画像情報には誰がブロックチェーンに記録したかの情報も含まれます。

- 交換する場所
    - メタバース上で交換の交渉が行われるものとします。
        - 予定調和（交換物のハードコード）ではなく、選択・決定などがメタバース上で行われるものとします。
    - 交換の実施はメタバース上から開始し、少なくとも一つの署名はメタバース上を起点とします。

- 交換の条件
    - 交換前に、トークンの検証が可能
        - メタバースが交換を媒介することによってデータが改変されていないかを検証することが可能とします。
        - 交換相手がメタバース上の画像と異なるトランザクションを作成していないか検証することが可能とします。
    - 交換後、存在が証明されたデータの改変は不可能とします。

# メタバース上でNFT交換する時の注意点


##### メタバース上で署名に使う鍵が漏洩する危険性

メタマスクやSSSなどに対応していないメタバースの場合、アプリケーション内部のプログラムに秘密鍵を持たせる必要性がある場合もあり、その鍵がメタバース運営企業の不手際により漏洩・消失してしまう可能性があります。

##### NFT所有者ではない人に交換を持ちかけられる危険性

メタバース上で交換を誘ってくる相手が、実際にNFTを所有するアカウントと一致しない可能性があります。その場合、こちら側の送金が完了した時点で目前から逃亡してしまう危険性があります。つまり、相手はそもそも交換を成立させるつもりはなく、エクスプローラーでNFTを所有しているアカウントを見つけて、さも自分のもののように提示してくるようなスキャム行為が考えられます。

##### 表示された画像とは無関係のNFTと交換させられる危険性

目の前に間違いないく交換対象となるNFTの所有者がいたとしても、NFTが紐づくものとは異なる画像がメタバース上にアップロードされているリスクもあります。この場合、NFTの交換に成功したとしても、手に入れられたNFTに希望する画像が紐づけられていない可能性があります。

### Symbolブロックチェーンでこれらのリスクを回避

##### マルチシグ
マルチシグの一つをメタバース内のプログラムにハードコードさせることで
資産を移動させるには不十分な署名数ののアクショントランザクションを発行・アナウンスさせることができます。

##### アグリゲートトランザクション
途中で交換相手が逃げることができないように１ブロックですべてのトランザクションが完結するトランザクションを作成することができます。


##### マークルパトリシアツリー

メタバースからマークルパトリシアツリーを取得できれば、
周知のファイナライズブロックを導出することで
交換対象となるNFTに目的の画像情報が紐づけられていることが確認できます。

Symbolブロックチェーンの可能性に興味を持たれた方はこちらもご参考ください。

https://qiita.com/nem_takanobu/items/5b9388dab19d1c985d3d


# 概念検証の流れ

AliceとBobによるモザイクの交換を行います。

##### マルチシグの設定
2-of-3のマルチシグを作成し、その一つをメタバース上のプログラムから使用可能な状態に設定します。

##### トランザクションの作成・発行

Aliceはメタバース上でのボタンアクション等により、アグリゲートボンデッドトランザクションを発行します。


##### マークルパトリシアツリーによる検証

Bobはトランザクションの通知を受けると、
メタバースより、画像情報とマークルパトリシアツリー情報を取得します。
マークルパトリシアツリーを計算して、周知のファイナライズブロック情報にたどり着ければ
トランザクションが意図したトークンを交換するものだと確認することができます。

##### トランザクションの完成

Aliceのマルチシグ、Bobの連署によって、足りない署名を補完し、アナウンスされたトランザクションを完成させます。

# 交換イメージ

分かりやすいかは別として、交換時のイメージ図を掲載しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/1cd7b852-037e-1e91-dd3f-d11ff9af90eb.png)






アカウントが自由に影響力を行使できないメタバース上でトラストレスに交換を行う場合、アカウントと画像を紐づける全ての接点を検証する必要があります。



# さいごに

上記の処理ができれば、メタバース上でのNFT交換が理論上可能です。

お分りいただけたかと思いますが、今回の内容はNFTやメタバースに限った話ではなく、金銭が絡まないような価値の交換におても、そしてSNSなども含むあらゆるプラットフォームについても同じスキームが使えます。

先述のとおり、プラットフォーマーの一人勝ちが目的となりがちな現在のweb3への取り組みは、データの主権をユーザに返すというモチベーションを維持することが難しくなりがちで、遅かれ早かれweb2.0との差別化を図ることが難しくなり行き詰まるでしょう。

web3というのは企業主導で起こるムーブメントではなく、情報を持つユーザと価値を求めるユーザの直接的な対話を、p2pネットワークの安定と発展を願ってやまないコミュニティの熱心なサポートによってのみ成功するものなのかもしれません。

それではまた、いずれ実践編（未定）でお会いしましょう。