Enjinのサービスを使ってNFTを鋳造してみる


新規事業開発部の堀川です。

先日リリースしたEnjinコインですが、Enjinにはどんなサービスがあるのか、どう使うのか、NFTはどうやって作るのか(テスト環境ですが)、など纏めてみました。

Enjinの概要

まず最初にEnjinの目標とするところは何なのか?ですが、Enjinはブロックチェーンをベースとした、ゲームのマルチバース(Multiverse)を目標としています。

マルチバースとは一体何か、に関してですが日本語に訳すと「多元宇宙論」となるようです。

Enjinのブログでも記載しているように、Enjinは自身のプラットフォーム上で動作するゲームであれば、個々が全く違う会社が作成したゲームであっても、ブロックチェーン上のアイテムを共有する事ができるプラットフォームを目指しています。

また、ユーザーが手に入れたデジタルアイテムに代価不可能な価値を与え、ゲームにかけた時間と情熱を資産化することも目標の一つとしていてます。

その為に必要なアプリケーションやツールの開発を行っているのがEnjinプロジェクトです。

Enjinのエコシステム

 上記記載した目的の為にEnjinは複数のサービスの上に成り立っています。

  1. Dapps:EnjinCraftやSix Dragonなど、Enjinの提供するSDKやプラグインを使用して開発されたアプリケーションです。Enjin Walletと接続します。
  2. SDK & プラグイン:Enjinが提供する、DappsとEnjin Walletを繋ぐ開発用ライブラリーで、Unity3D用プラグインJavaSDKを始め複数の開発環境に対応しています。
  3. Enjin Wallet:ユーザーが暗号資産やノンファンジブルトークン(NFT)と呼ばれるデジタルアセットをセキュアに管理する為に使用されます。また、DappsとEthereumブロックチェーン間の承認を取り持ちます。
  4. Enjin Coin:Ethereumブロックチェーン上に発行された暗号資産で、DappsやEnjinXのマーケットプレイスにてNFTの売買や、Enjin Platformなどで発行する際の担保としても使用されます。
  5. EnjinX:Enjin Platformなどで生成されたNFTの売買を行うマーケットプレイスの機能や、それらをトラッキングするブロックチェーンエクスプローラーとしての機能も備えています。 
  6. Enjin Platform:主にERC-1155準拠のNFT発行プラットフォームで、開発者はブロックチェーンの複雑なプロセスを踏むことなくNFTの管理が可能です。

f:id:hori_y:20210203113506p:plain

画像参照元:https://twitter.com/enjin/status/998959934770380801

Enjinはどのように使用するのか?

基本的にEnjinコインはNFTマーケットプレイスにてゲーム内アイテムの決済手段として使用されます。

また、ブロックチェーンゲーム内のアイテムを売買するプラットフォームとしてEnjinXというマーケットプレイスを提供しておりEnjinコインを用いてNFTを売買することが可能です。2021年2月現在EnjinXには主にゲームを始めとする255のプロジェクトが登録されており、17,774のアイテムが売買されています。

下記に実際どのようなゲームのアイテムが売買されているか参考までに記載します。

  1. The Six DragonsSkyrimの約7倍という広大なゲームフィールドを歩き回るいわゆるオープンワールドのRPGです。ガバナンスNFTというアセットの導入を計画しており、ガバナープレイヤーは開発陣と連携してゲーム開発の優先順位への投票が行われる予定です。また、ゲーム内ではEnjinコインと1:1の交換が保証されたゲーム内トークン「TSDT」が発行され、アイテムなどをEnjinX上で売買できます。アーリーアクセス版は2020年12月にリリースされており、PC正式版は2021年前半に、PS5版は2021年第4四半期に発売が予定されています。
  2. EnjinCraft言わずと知れた月におよそ1.2億人がプレイするマンモスゲームです。サバイバルを楽しんだり、自由にブロックを配置して建築などを楽しむことができます。EnjinCraftは「マインクラフト」のサーバーとの連携を可能にしたプラグインとなります。Enjin SDK for Javaを使用して作成されており、マインクラフトのサーバーに導入することで、コンソールのコマンドでゲーム内アイテムをブロックチェーンに紐付けたり、スペシャルアイテムの配布、ユーザーが保持する別のNFTとの紐付け等が可能になります。

ERC-1155基準とは?

EnjinXのマーケットプレイスでは主にERC-1155という基準で作成されたNFTを販売しています。

ERC-1155はEnjinのCTOであるWitek Radomski氏によって提案された基準で、ERC-20とERC-721の特徴を併せ持つハイブリッド型となっています。

  ERC-1155 ERC-721 ERC-20
タイプ FT/NFT NFT FT
主な特徴 複数のFT、NFTを共存させることができる。 個々のトークンにIDを紐づけて別々の「個性」として取り扱う。 トークンの「量」を取り扱う。
インターフェース定義 参照URL 参照URL 参照URL

ERC-20トークンを使用してERC-721を購入する際、2つは別々のコントラクトである為それらを結び付ける為には新しくコントラクトを作成しなければなりません。少なくとも3つコントラクトを書かなければならず、開発工数がかかり、新たなセキュリティーホールの危険性や手数料増加などの問題が発生してしまいます。

ERC-1155はERC-20とERC-721を複数同封することができ同様に取り扱うことが可能である為上記述べたような問題は発生しません。

主なインターフェースはここを参照。注目すべきファンクションは「safeBatchTransferFrom」で定義は下記の通りになっています。 

function safeBatchTransferFrom(
address _from,
address _to,
uint256[] calldata _ids,
uint256[] calldata _values,
bytes calldata _data
) external; 

EIP-1155の提案書にて、_ids, _valuesをみてみると、

_ids: IDs of each token type
_values: Transfer amounts per token type

ERC-1155と互換性のあるウォレット

2021年2月現在ERC-1155互換のGoogle PlayやApp Storeからダウンロードできるウォレットはいくつかありますが例として2つ紹介いたします。

  1. Enjin Wallet: Enjinが開発するウォレットでERC-20, ERC-721, ERC-1155と互換性があります。また、直接ウォレットからEnjinXのマーケットプレイスにアップロードすることができます。
  2. Trust Wallet: Dapps Platform, Inc.が開発するウォレットでBinanceの公式ウォレットでもあります。NFTマーケットプレイス大手のOpenSeaにと連動しています。

現在ERC-721がNFTの主流として流通していますが、上記述べたように管理コストがかかる為ERC-1155基準のNFTは今後増えてくる可能性があり、それに乗じて対応ウォレットも増加していくと考えます参照URL

実際にERC-1155基準のNFTを作ってみる

実際にEnjin PlatformでERC-1155基準のNFTがどんなものか、Kovanテストネット上でプロジェクトを作成し、NFTを発行してみます。

下記にプロジェクトの作成からNFTの鋳造、融解までのプロセスを記載していますが、スムーズにいけば60分はかからないと思います。

Enjin Platformのアカウントを作成

  1. Enjin PlatformのKovanテスト環境でアカウントを作成します。https://kovan.cloud.enjin.io/signup

    f:id:hori_y:20210203134536p:plain

プロジェクトを作成

  1. ログイン後、ランディングページが開き、現在作成されているプロジェクト一覧が表示されます。

    「My Project」以下の、「Create Project」ボタンを押します。

    f:id:hori_y:20210203134951p:plain

  2. プロジェクトの名前と詳細を記入します。イメージもアップロードできますが、今回は省きます。

    f:id:hori_y:20210203135100p:plain

Enjin Walletのインストールおよびアカウント作成

ここで「Asset」メニューからアイテムを鋳造する前に「Setting」からEnjin Walletと連携を取っておきます。(結局Assetメニューを選択してもウォレット連携が取れてない場合は「Setting」に飛ばされます)

  1. 「Setting」メニューを開きます。

    f:id:hori_y:20210203140133p:plain

  2. 上記「Download the Enjin Wallet app」のメニューからアプリをインストールします。

    f:id:hori_y:20210203140511p:plain

  3. 「暗号資産ウォレット」メニューを選び、新規で作成します。

    f:id:hori_y:20210203140825p:plain

  4. ウォレットに含める通貨はデフォルトにします。

    f:id:hori_y:20210203141017p:plain

  5. 成したウォレットがこちら。

    f:id:hori_y:20210203141159p:plain

プロジェクトとEnjin Walletの連携

  1. 上の「三」メニューを開き「QRコードをスキャン」を選び、ブラウザ上の左メニュー「Setting」に記されているQRコードを読み込みます。

    f:id:hori_y:20210203141438p:plain

    f:id:hori_y:20210203141548p:plain

  2. 「保存」を押すと作成したプロジェクトが表示されます。f:id:hori_y:20210203141815p:plain
  3. ブラウザに戻って「Setting」メニューからウォレットが連携された事を確認します。

    f:id:hori_y:20210203142156p:plain

Faucetからテストコイン(KENJ, KETH)の受け取り

  1. アセットを作成する前にテストネットで流通しているトークン、KENJとKETHをもらう必要があります。左メニューにある「ウォレット」のアドレスをクリックしてコピーしておきます。

    f:id:hori_y:20210203142310p:plain

  2.  https://kovan.faucet.enjin.io/ にコピーした発行者のアドレスを入力して送信します。

    f:id:hori_y:20210203142432p:plain

    f:id:hori_y:20210203142810p:plain

  3. 結果、ブラウザにて、https://kovan.cloud.enjin.io/ をリロードするとKENJとKETHが与えられています。

    f:id:hori_y:20210203142914p:plain

アセットの作成(鋳造、mint)

  1. ブラウザの左メニューから「Asset」を選択→「Create Asset」します。

    f:id:hori_y:20210203143125p:plain

  2. 各パラメータを決定していきます。

    f:id:hori_y:20210203143235p:plain

    アセット名:NFTの名前。

    最大総供給量:市場に流通するNFTの最大数。

    アセット事のENJ:アセットの単価。

    アセットタイプ:ファンジブルトークン、ノンファンジブルトークンから選びます。

    供給モデル:

     Fixed:最大でTOTAL SUPPLYの値までアイテムを流通させる事ができます。

     Settable:いつでも総供給量を変更できます。

     Infinite:TOTAL SUPPLYに関係なく好きなだけアイテムを発行できます。

     Collapsing:アイテムはメルトされても再発行できません。

    送信可能:

     常に送信可能:ユーザーは他のアセットを他のアドレスにいつでも送信可能。

     一時的に送信可能:ユーザーは他のアセットを他のアドレスに送信可能だが、いつでも「常に送信可能」「一時的に送信可能」に変更可能。

     指定されたアドレスのみ送信可能:ユーザーはホワイトリストされたユーザーにのみ送信可能。

    送信手数料:アセット発行者へ送られる取引手数料。

    初期供給量:最初に供給されているアセット数。

  3. 「アセット作成」を押すとEnjin Walletと連携するようにいわれるので、Enjin Walletの「リクエスト」メニューを開いて待機します。

    f:id:hori_y:20210203143601p:plain

  4.  正常にリクエストが送信されれば下記の画像が表示されます。

    f:id:hori_y:20210203143800p:plain

    たまにリクエストがうまく送信されない場合がありその場合はウォレット連携からやり直す必要があります。

    ブラウザ上では下記のように表示されます。

    f:id:hori_y:20210203143945p:plain

アセットの配信

  1. 作成したアセットを配信します。

    アセット画面の右端、「発行」ボタンを押します。

    発行したい数と受信者のアドレスを入力し「アセットの発行」ボタンを押します。

    f:id:hori_y:20210203150714p:plain

  2.  Enjin Walletにリクエストが来るので「作成」を押します。

    f:id:hori_y:20210203151307p:plain

アセットの確認

  1. この時点でウォレットは本番環境につながっており、Kovanテスト環境のアセットは見えないみたいなので、ウォレットの設定を「開発者」にします。

    ウォレットの「設定」メニューを開き、一番下の「アプリのバージョン」を10回程タップします。

    すると「開発者になりました!」的なメッセージが出ます。

    f:id:hori_y:20210203151658p:plain

  2.  ウォレットメニューから「アセット」を選択すると表示されるようになります。表示されない場合は5〜10分程待つと表示されます。

    f:id:hori_y:20210203151906p:plain

    f:id:hori_y:20210203152032p:plain

アセットをマーケットプレイスにアップロードする

  1. 作成したアセットはウォレットからEnjinXのマーケットプレイスに出品することができます。アイテムのメニューから「販売アイテム」を選択します。

    f:id:hori_y:20210203152702p:plain

  2. 販売価格を設定して「次のステップ」をタップします。

    f:id:hori_y:20210203153334p:plain

  3. 「アセットの販売」をタップして操作を完了します。販売時に2.5%の手数料が取られます。

    f:id:hori_y:20210203153501p:plain

  4. ブラウザからEnjinXマーケットプレイスから確認します。https://kovan.enjinx.io/eth/assets からプロジェクト名(今回は「TestGameProj」)を検索します。

    f:id:hori_y:20210203153732p:plain

  5. 「ON SALE」となっている箇所に「1 items on sale」となっているのでクリック。

    f:id:hori_y:20210203153921p:plain

  6. 先ほどマーケットプレイスに上げたアイテムが売られていることが確認できます。

    f:id:hori_y:20210203154116p:plain

アセットの削除(融解、melt)

  1. 現在保持しているアセットを「融解 (melt)」してみて、KENJが得られるかどうか確認します。「アイテムを破壊」→「破壊」を選択。

    f:id:hori_y:20210203152702p:plain

    f:id:hori_y:20210203154912p:plain

  2.  「しばらくお待ちください」的なメッセージの後、アセットは削除されます。 

    f:id:hori_y:20210203155059p:plain

  3.  ウォレットに戻ると融解した分のKENJが追加されます。上記例の場合、融解時の元値の割合を50%と設定してたので0.05KENJ(表記が四捨五入なので0.1KENJ)増えています。

    f:id:hori_y:20210203155329p:plain

以上がEnjin Platformを用いたNFT管理の一連の操作になります。

NFTを作成して発行するまでならEnjin Platformを使用すればブロックチェーンの複雑な操作は必要なく簡単に行うことが可能です。

発行元によると、Enjin Platformは完全に有料版を廃止し、今後は無料版の制限緩和を徐々に行っていくとのことです。

まとめ

やってみると、ERC-1155準拠のNFTの発行、売買、管理等はEnjinのサービスを使用すると意外と簡単にできる為、Dapps参入の障壁をかなり低くすることができるのではと感じました。

また、今回は深堀りしませんでしたが、ゲーム開発の総合プラットフォーム大手であるUnity3D用のSDKも用意されており、ブロックチェーンゲームの開発も比較的簡単なのではと思っています。ゲーム数の増加に伴いPlay-to-Earnの体験も増えていくことが期待されます。

更に、Enjin BeamといったQRコードを活用したNFTの配布手法の開発や、EnjinXマーケットプレイスにおいて記念バッジやアート作品などの出品など、ゲーム以外の活用方法も存在しており、今後どのようにEnjinが活用されていくか注目していきたいと思います。

メンバー募集中!

新規事業開発部では、上記記載したような技術検証や新規通貨調査などを行うリサーチエンジニアを募集しています!
ご興味ある方は是非ご応募ください。

www.wantedly.com