【個人開発】DApps初心者がNFTガチャゲームをリリースしてみた話
ブロックチェーン初心者が、スマートコントラクトを活用したNFTガチャゲームDApps「COTOVA」をIOSTで開発・リリースした体験談。JIS漢字を使ったNFT生成、IWALLET連携、アーキテクチャ概要、開発に必要なもの、IOSTでの開発における注意点、そして今後の展望について解説。
1. DApps個人開発の始め方:ブロックチェーン初心者がNFTガチャゲームに挑戦
2. DApps個人開発で何を作った?:IOSTで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(分散型金融)の学習を兼ねて実装しました。
3. DApps個人開発のアーキテクチャ:NFTガチャゲーム「COTOVA」の仕組み
3.1 スマートコントラクトの機能: NFTの発行、所有権の管理など、コアとなるロジックを実装しています。3.2 IWALLETと連携してスマートコントラクトを実行する機能: Webブラウザから直接スマートコントラクトを呼び出すことはできません。IOSTでは、ブロックチェーンノードがGRPC、HTTPS(REST API)のエンドポイントを提供しており、これらを介してアクセスします。IWALLETの場合は、エンドポイントはhttps://api.iost.ioに固定されています。この仕様は開発時に少し手間取る点がありました。(詳細は後述)3.3 NFTを表示する機能: 生成されたNFTコンテンツを表示する機能です。膨大な組み合わせ数に対応するため、コンテンツはオンデマンドでクライアントサイドレンダリングによって生成しています。
4. DApps個人開発に必要なもの:IOST、サーバー、ドメインなど
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への展望
1. Ethereum - スマートコントラクトの紹介
2. Truffle Suite Documentation
3. Web3.js Documentation
Q&A
Q1: DAppsはどのような用途に使われますか?
A1: DAppsは金融、ゲーム、投票システムなど、さまざまな分野で活用されます。
Q2: スマートコントラクトはどのようにデプロイされますか?
A2: スマートコントラクトはEthereumネットワーク上にデプロイすることで、他のユーザーが利用できるようになります。
Q3: DAppsの開発にはどれくらいの時間がかかりますか?
A3: プロジェクトの規模や複雑性により異なりますが、数週間から数ヶ月が一般的です。
その他の参考記事:Dapps