2022.01.05
NFT + DeFiの小さな実践
こんにちは。次世代システム研究室のL.W.です。
ブロックチェーン技術でデジタルデータの所有権の唯一無二性を裏付けるようになったNFT(Non-Fungible Token、非代替性トークン)ですが、仮想通貨業界で一大ブームとなっています。あるデジタルアートのNFTは数十億円の価格で売買成立のニュースで今も持ちきりでしょう。話題のメタバース(Metaverse、3DCGの仮想空間)にもNFTが活用されることで、NFTへの注目が一層集まるに決まっています。
ブロックチェーンのパーミッションレス(Permissionless) 、透明性の性質で、DeFi(分散型金融)の各Dapp(分散型プロトコル)は「レゴブロック」のようにアイディア次第に組み合わせることで新しいファイナンスの可能性が作られます。
一つのNFTのDappもブロックチェーンでの一つレゴブロックとして、既存のDeFiの各Dappと組み合わせることで、どんな課題を解決できますか。
イーサリアムテストネットで、あるNFTのP2Pの質屋のDappのプロトタイプを作ってみました。これでNFTを担保品とされて、NFTホルダーはERC20のトークンの調達するために、既存のDappのOpenseaのようなNFTマーケットプレイスで自分の大切なNFTを売らなくてもトークンの調達できるようになるかと考えています。
今回は、Zoomでのトークイベントにて紹介した「NFT + DeFiの小さな実践」を、時間の都合上お話できなかった部分の補足などを交えて取り上げたいと思います。
1.「NFT + DeFiの小さな実践」の発表資料
[slideshare id=250929721&doc=thepracticeofnftdefi-220102012344]
2.デモの説明

P2Pの質屋プラットフォームの役割は出資者の質入れの署名を集めて、出資者へ公表する。出資者のオファーの署名を集めて、出資者へ公表する。(今回はプレゼンしやすくするために、DBをブラウザのローカルに置かれている。)
そして、スマートコントラクトの呼び出しのインタフェースを提供する。
以下のRinkebyテストネットでのNFTがサポートされている。
以下のRinkebyテストネットでのERC20トークンがサポートされている。
- WETH : 0xc778417E063141139Fce010982780140Aa0cD5Ab
- GYEN : 0xcf8adb5ACD96469361645AdC7CCEebF2bDccEd68
- ZUSD : 0xE320AaCf20185aD5032C6Cb51acc69b5eA12307A
さ、興味をお持ちすれば、Openseaで上のNFTを手に入れて、お持ちのETHをUniswapでWETH、GYEN、またはZUSDにスワップして、以下の手順の通りに、試して頂ければと思います。
2.1. NFTの質入れ

2.1.1 保有するNFTの確認
Openseaなどのマーケットプレイスで自分の保有するNFTの確認する。
これ例ではコントラクトアドレス:0x32046b81bb628a626b6543b3c532f5e7fa8a5446、トークンID:15716035657804929038301064のアダムのNFTが保有することを確認できた。

2.1.2 P2Pの質屋プラットフォームで質入れ
融資者(borrower)のAさんは自分のお持ちのNFTを担保品として、融資するため、質入れをする。自分の融資の条件に満たさなくてもいいが、オファーを求める。
■2.1.2.1 融資条件を記載する
※ 融資期間は通常週間または月間を単位にするが、今回はプレゼンしやすくするためには、わざと秒の単位にした。

■ 2.1.2.2 質入れするためには、まずはP2Pの質屋のコントラクトに該当NFTの移転を許可する。
※ アドレスの入力のところではENSもサポートされている。

■2.1.2.3 質入れ(署名でプラットフォームへの質入れを同意することである)

2.2. 質入れのNFTへ出資するオファーを出す
2.2.1 P2Pの質屋プラットフォームでの質入れリストを確認する
出資者(lender)はここでどのNFTへ出資するか確認できる。

2.2.2 出資のオファーを出す
出資者(lender)は利益を見込んで、該当NFTへ出資する。融資者の融資条件に満たさなくても良いので、Opensea、Adamなどのマーケットプレイスでの販売価格履歴を参照し、または自分の目利きで判断し、オファーを出す。
■2.2.2.1 出資者(lender)のBさんは、ZUSDを出資するためには、まずはP2Pの質屋のコントラクトに該当ERC20トークンの移転を許可する。

■2.2.2.2 オファーを署名する

■2.2.2.3 同様に、出資者(lender)のCさんも利益を見込んで、GYENで該当NFTへ出資する。

2.3. 融資者のオファーの受け入れ

2.3.1 該当質入れのNFTへのオファーを確認し、オファーを受け入れる
融資者はオファーから気に入りのを選択し、受け入れる。(融資者はガス料金を負担する)

2.3.2 コントラクトでのNFTとERC20トークンの移転を確認する。
出資されたERC20トークンは融資者へ送られ、担保されたNFTはNFT質屋コントラクトに一時ロックされていた。
出資者に出資証書のNFTが発行されました。このNFTの所有者は出資元金と利益の獲得と清算の権利が持つ。そして、このNFTは有価証券のように、自由に取引される。
2.4. 融資者の返済

2.4.1 ローンの情報を確認する。ここでのローンIDは出資者に上で生成された出資証書のNFTのトークンIDと一緒である。

2.4.2 NFTの質流れしないように、早めに返済する。
■2.4.2.1 返済するためには、まずはP2Pの質屋のコントラクトにGYENトークンの移転を許可する。

■ 2.4.2.2 返済する

2.4.3 コントラクトでのNFTとERC20トークンの移転を確認する。
融資者はローンの元金と利息を出資証書のNFTの所有者へ送金し、手数料をNFT質屋コントラクトの管理者へ送金し、担保されたNFTは融資者の手元に戻される。
出資者の出資証書のNFTが焼却された。
今回の取引が終了。
2.5. NFTの質入れで、出資者の即時融資を期待する
今回は融資者(borrower)のAさんは自分のお持ちのNFTを担保品として、融資条件も署名し、質入れする。
これで、オファーを受け入れず、出資者の即時融資を待つ。

2.6. 出資者の即時融資

2.6.1 即時出資
出資者(lender)のBさんは利益を見込んで、該当NFTへ即時出資する。(ガス料は出資者側が負担する)

2.6.2 コントラクトでのNFTとERC20トークンの移転を確認する。
出資されたERC20トークンは融資者へ送られ、担保されたNFTはNFT質屋コントラクトに一時ロックされていた。
出資者に出資証書のNFTが発行されました。
2.7.清算

2.7.1 貸付期間を過ぎた場合、いつでも清算を行える。

2.7.2 コントラクトでのNFTとERC20トークンの移転を確認する。
担保のNFTは出資者アドレスへ送られました。
出資者の出資証書のNFTが焼却されました。
今回の取引が終了。
3.まとめ
今回の小さな実践で、P2PのNFTの質屋のDappのプロトタイプを作ってみました。NFTとDeFiを繋ぐことで新規なビジネスモデルが生まれるかと思っていました。確かにNFTFiのような類似なプロダクトが既に発展途上ですが、いつかUniswapのように、DAPPのユニコーンになれると信じています。
アイディア次第に、自由に既存の分散型プロトコルを組み合わせて、面白いプロダクトが作れます。
今回はP2PのNFT質屋ですが、セッションではOne to Many(融資者は多くの出資者から融資する)のNFT質屋のモデルが作れるかと質問されました。作れるはずと回答させて頂きましたが、NFTの質流れの場合、NFTは分割できず、どのように多くの出資者に清算されるかと悩んで考えていました。
NFT20(NFTを預けることでNFTに対応したERC-20を発行する分散型プロトコル)というプロダクトが既に存在していますが、これに参照するのは如何でしょうか。
4.最後に
次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。
皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD