Blog

制作現場の日常

Web3 のハードルがぐっと下がる!Unity Asset Store に 分散型テクノロジーカテゴリが登場

こんにちは。新しもの好きプログラマーの稲垣です。
NFTアートの熱狂は去ってしまったのでしょうか…。Twitter のアイコンにNFTが設定できるよ!アイコンが六角形になるよ!というのも、Twitter のゴタゴタであまり話題にならないままひっそりと影を潜めてしまった気がします。

日本では法規制もあり、Web3 ど真ん中の独自トークンを使ったブロックチェーンゲームよりは NFT の方がまだ一般の方でも「聞いたことがある」くらいの認知度はあるのかなと思います。
最近ゲーム x NFT で話題になったのは、ゲーム特化型ブロックチェーン Oasys 上に構築された「キャプテン翼 -RIVALS-」でしょうか。
プレイヤーごとに自動生成されるオリジナルのNFTを集めたり育てたりして遊ぶゲームで、何よりキャプテン翼という人気のあるIPなので海外の注目度も高そうですよね。

そんなとき、Unity のアセットストアに分散型テクノロジーのカテゴリが新しくできているのに気が付きました…!!どうやら一週間ほど前の2月末に新設されたよう。

2023年2月末に Web3 系のカテゴリがオープン

Solana、APTOS、flow、MetaMask と言った有名なブロックチェーンやウォレットの SDK がアセットストアに登場。検証済みのマークが付いているのも安心して利用できて嬉しいですね。(The Sandbox や Decentraland も Unity 製だったんですね…、知らなかった!)

折角なので、今回は MetaMask SDK for Unity を試してみようと思います。

MetaMask はイーサリアムというブロックチェーンを基盤にした、仮想通貨のウォレットです。
ウォレットという名前の通り、用途を考えるとお財布と言えばお財布なのですが、実際には口座番号とその所有者であることを証明するハンコをセットで管理するソフトウェアのこと。
MetaMask は NFT の売買ができる NFT マーケットプレイス最大手の OpenSea が「人気」マークを付けて採用していることもあり、使っていらっしゃる方も多いのではないでしょうか。

MetaMask の SDK にはサンプルが付いていたので実行してみます。
するとこんな画面が表示されました。

MetaMask 接続のデモ画面

「Connect」を押すと接続用のQRコードが表示されます。
スマホのカメラでQRコードを読み込むと、MetaMask のアプリが立ち上がってウォレットに接続します。

接続した後、Unity 側の「Transaction」というボタンを押すと、0 ETH のテスト用の送金トランザクションを受け入れるかどうか、スマホの方に確認画面が表示されます。

Unity 側からのトランザクションのリクエストがスマホに届く

「Transaction」ボタンを押したときの処理がどうなっているのか気になりますね。
コードを少し見てみましょう。

public async void SendTransaction()
{
    var transactionParams = new MetaMaskTransaction
    {
        To = "0xd0059fB234f15dFA9371a7B45c09d451a2dd2B5a",
        From = MetaMaskUnity.Instance.Wallet.SelectedAddress,
        Value = "0x0"
    };

    var request = new MetaMaskEthereumRequest
    {
        Method = "eth_sendTransaction",
        Parameters = new MetaMaskTransaction[] { transactionParams }
    };
    onTransactionSent?.Invoke(this, EventArgs.Empty);
    await MetaMaskUnity.Instance.Wallet.Request(request);
}

「transactionParams」にどこからどこにいくら送るのか、トランザクションの詳細が書かれています。
リクエストを送るときのメソッド名は文字列でそのまま指定されていますね。Web3.js などフロントエンドのライブラリだと、もう少し隠蔽されて簡単に記述できるようになっているものが多いです。今回の例のような仮想通貨のやり取り「以外」を担うスマートコントラクトの扱いも特にまだ専用で用意されていないようなので、これからのアップデートに期待したいところですね。

MetaMask 以外のラインナップ、名前は聞いたことがあるけれど触ったことない、よく知らないというものもたくさんありました。
インポートするだけならちょっと試してみようかな、と思える手軽さが有り難いです。
興味はあるけどまだ手を出していないという方、この機会に試してみてはいかがでしょうか。

それでは、また!

次の記事へ