dapps 個人開発

【個人開発】DApps初心者がNFTガチャゲームをリリースしてみた話

ブロックチェーン初心者が、スマートコントラクトを活用したNFTガチャゲームDApps「COTOVA」をIOSTで開発・リリースした体験談。JIS漢字を使ったNFT生成、IWALLET連携、アーキテクチャ概要、開発に必要なもの、IOSTでの開発における注意点、そして今後の展望について解説。

1. DApps個人開発の始め方:ブロックチェーン初心者がNFTガチャゲームに挑戦

スマートコントラクトという技術に興味を持ったのがきっかけで、ブロックチェーンの知識はほぼゼロの状態から、IOSTを使ってNFTガチャゲームのDAppsを開発・リリースするに至った体験談です。 運営側の不正操作が問題視されることの多いガチャゲームだからこそ、スマートコントラクトの透明性と改竄耐性が活かせるのではないかと考え、このジャンルを選びました。

2. DApps個人開発で何を作った?:IOSTでNFT漢字ガチャゲーム「COTOVA」をリリース

今回開発したのは「COTOVA(言葉)」という、IOSTブロックチェーン上でNFTを発行するサービスです。(https://cotova.net/) NFTのコンテンツは、漢字ガチャでランダムに生成される漢字の組み合わせです。 以下にCOTOVAの仕様概要をまとめました。

  • JIS第一水準漢字、JIS第二水準漢字、計6,355文字の組み合わせからNFTが生成されます。

  • 1文字、2文字、3文字の組み合わせがあり、1億3千3百万以上のパターンが存在します。

  • さらに7色のカラーバリエーションを用意しています。

  • ガチャを試すのは無料ですが、NFTを取得するにはIOSTが必要です。

  • NFTの取得には、IOSTのWebウォレット(Chrome拡張機能)であるIWALLETが必要です。

  • EthereumでいうERC721に相当するIRC721(NFT)と、ERC20に相当するIRC20(独自トークン「筆トークン」)の2種類のトークンを同時に発行しています。現時点では筆トークンに使い道はありませんが、複数のトークンを扱うDeFi(分散型金融)の学習を兼ねて実装しました。

(IRC20とIRC721のコントラクトアドレス、発行状況などをここに掲載)

3. DApps個人開発のアーキテクチャ:NFTガチャゲーム「COTOVA」の仕組み

COTOVAは大きく分けて以下の3つの機能で構成されています。

  • 3.1 スマートコントラクトの機能: NFTの発行、所有権の管理など、コアとなるロジックを実装しています。

  • 3.2 IWALLETと連携してスマートコントラクトを実行する機能: Webブラウザから直接スマートコントラクトを呼び出すことはできません。IOSTでは、ブロックチェーンノードがGRPC、HTTPS(REST API)のエンドポイントを提供しており、これらを介してアクセスします。IWALLETの場合は、エンドポイントはhttps://api.iost.ioに固定されています。この仕様は開発時に少し手間取る点がありました。(詳細は後述)

  • 3.3 NFTを表示する機能: 生成されたNFTコンテンツを表示する機能です。膨大な組み合わせ数に対応するため、コンテンツはオンデマンドでクライアントサイドレンダリングによって生成しています。

4. DApps個人開発に必要なもの:IOST、サーバー、ドメインなど

DAppsを公開するために必要なものを以下に列挙します。

  • IOST: IOSTメインネットのアカウント発行手数料、RAM購入費用などに必要です。国内の取引所で購入可能です。

  • IOSTメインネットアカウント: IOST Sonataで無料で作成できます。電話番号の登録(SMS認証)が必要です。追加アカウントの作成は、既存アカウントからコマンドで行います(10 IOST必要)。

  • Webサーバー: ランディングページとNFTコンテンツの公開に使用します。今回はConoHa VPSを利用しました。

  • 独自ドメイン: サービスの認知度向上のため、独自ドメインを取得することをお勧めします。

  • メールボックス: 問い合わせ対応などに必要です。

  • HTTPS証明書: セキュリティのため、HTTPS化は必須です。Let's Encryptを利用すれば無料で取得できます。

  • Googleアナリティクス: アクセス状況の分析に役立ちます。

  • サイト用のTwitterアカウント: サービスの告知や情報発信に使用します。

5. DApps個人開発の注意点:IOSTでのNFTゲーム開発で学んだこと

開発中に直面した問題点や、注意すべき点をまとめました。

  • 5.1 スマートコントラクトのJavaScript制限: IOSTはJavaScriptでスマートコントラクトを記述できる点が魅力ですが、外部ライブラリの使用や一部の標準JavaScript関数が制限されています。シンプルで必要最低限のコードを心がける必要があります。

  • 5.2 コンパイルはABIを生成するだけでABIも手修正が必要: IOSTのコンパイルコマンドはABIファイルの生成のみで、コードの論理的なエラーはチェックされません。また、生成されたABIファイルはトークンの送受信に関する記述が不足しており、手動で修正する必要があります。具体的には、amountLimit{"token":"*","val":"unlimited"}を追加する必要があります。

  • 5.3 公式ドキュメントはいまいち: 公式ドキュメントの情報が整理されておらず、スマートコントラクトのJavaScript、WEB REST API、クライアントサイドJavaScriptの情報が混在しているため、理解に苦労しました。

  • 5.4 IWALLETからのスマートコントラクトの呼び出し方のノウハウが少ない: IWALLETとの連携方法に関する情報が不足しており、試行錯誤が必要でした。

  • 5.5 IWALLETの接続はほぼメインネットのみ: IWALLETはメインネットとテストネットにしか接続できません。これはコードにハードコードされているため、ローカル環境でのテストが困難です。

  • 5.6 リリース時はGASとRAMに注意: スマートコントラクトのリリーにはGASとRAMが必要となります。トランザクション実行時にGAS不足になると、GASは消費されるもののトランザクションは失敗するため、事前に必要な量を見積もっておくことが重要です。

6. DApps個人開発の未来:NFTの可能性とEthereumへの展望

スマートコントラクトは、ブロックチェーンネットワークが稼働している限り、いつでも実行可能な状態を維持できる、可用性の高い分散システムです。 また、トランザクション実行費用を利用者がGAS代として負担するため、ランニングコストも非常に低く抑えられます。

今回、IOSTでの開発を通してDAppsの可能性を実感しました。今後は、Ethereumでの開発にも挑戦し、より多くのユーザーに利用してもらえるような、魅力的なNFTコンテンツを提供したいと考えています。 また、才能あるクリエイターと協力することで、NFTの新たな可能性を探求していきたいです。

1. Ethereum - スマートコントラクトの紹介
2. Truffle Suite Documentation
3. Web3.js Documentation

Q&A

Q1: DAppsはどのような用途に使われますか?

A1: DAppsは金融、ゲーム、投票システムなど、さまざまな分野で活用されます。

Q2: スマートコントラクトはどのようにデプロイされますか?

A2: スマートコントラクトはEthereumネットワーク上にデプロイすることで、他のユーザーが利用できるようになります。

Q3: DAppsの開発にはどれくらいの時間がかかりますか?

A3: プロジェクトの規模や複雑性により異なりますが、数週間から数ヶ月が一般的です。

その他の参考記事:Dapps