ジェネレーティブNFT 発行用オールインワンプログラム 「NFTboil」 を公開しました
2022年にはいり、日本のジェネレーティブNFTプロジェクトは大きく盛り上がっています。たくさんのプレイヤーがNFTに参入し、またユーザーも大きく増加することが予想されます。
今後、世界のNFT市場で日本プレイヤーが戦うためにも、日本のNFTプロジェクトを伸ばしていく事が重要です。
ですが、日本のNFTを始めたい優秀な事業者やクリエイターは多数おりますが、NFTのコントラクトをはじめとしたNFT に関するシステムは未整備のままです。
海外においては、貫通やハッキングといったセキュリティインシデントにより台無しになるNFTプロジェクトも多数存在しています。せっかく優れたコミュニティをもったNFTプロジェクトも、ハッキングにより崩壊したら元も子もありません。
私はAstarCats などで培ってきたNFTプロジェクトのエンジニアリング経験を活かし、この度 オープンソースにてジェネレーティブNFT プロジェクト のためのオールインワンのプログラムを公開します。
本プログラムに含まれるもの
本プログラムにおいては下記の3つのプログラムが含まれています。これは私が普段ジェネレーティブNFTプロジェクトを運営するにあたって使っているものであり、この3つがあれば基本的に問題なくNFTのリリースまで持っていくことが可能です。
1, NFT発行用コントラクト
2, NFT 画像生成用プログラム
3, mint ページ作成用 のフロントエンドプログラム
NFTを発行したいエンジニアは、こちらのプログラムを自由に利用し、改変することで自分のプロジェクトに転用することが可能です。
特徴
こちらのNFTBoil は下記の特徴を持っています。
MerkleTree 対応
ERC721利用
充実したコントラクトのテストケース
コントラクトテストのカバレッジ対応(予定)
CSV データを基にした柔軟な画像生成
フロントエンドのテンプレートも完備
とりわけ、コントラクトのテストケースは30個以上用意しております。
こちらのテストパターンでは、貫通対策やオーバーアロケート対策のパターンなども用意されており、コントラクトを改変した場合においても、テストパターンをすべて通すことにより安全性をある程度担保することが可能です。
また、フロントエンドはReactを利用しており、コントラクトのデータを読みだしてフロントエンドの設定を変更する仕組みも導入しています。そのため、パブリックセールやプレセールの設定変更時にはコントラクトの関数を叩くだけで変更可能です。これは本番操作時のエンジニアの負荷軽減にもつながります。
また、ガス代を大幅に圧縮し、デプロイ時のホワイトリストのコスト削減をするためのMerkleTreeにも対応しています。
なぜERC721Aを使っていないのか
昨今、日本のジェネレーティブNFTではERC721Aを利用するプロジェクトが多いですが、このNFTboilにおいてはあえてERC721を利用しています。
ERC721A は、多くのプロジェクトで使われているとはいえ、 OpenZeppelin で採用されている ERC721 と違い EIP の標準ではありません。 今後永続的に NFT が残ることを考えると ERC-721 のほうがスタンダードです。
また、ERC-721A は複数 mint 時のガス代しか安くならず、 Transfer においては逆にガス代が高くなることもあります。 また、tokenOfOwnerByIndex が全ての発行済みトークンを走査するため、この関数をトランザクションの一部で実行した場合に、発行済みトークンの数だけ処理が実行されることになります。この処理は、ストレージの更新を伴わないため、1 つ 1 つは大きな gas となりませんが、膨大な数のトークンがある場合には注意が必要になったりします。
2022年6月時点のガス代の情勢などを鑑みて、ERC721Aにするのはデメリットのほうが大きいと考えています。ERC721Aを使う方は、単純に「ほかのプロジェクトも使っているから」という理由ではなく、よくよく検討したうえで選択してください。
今後の予定
今後、要望があれば更なるドキュメントの追加や、英語対応、機能追加なども行っていきたいと思います。皆さんの反応が励みです。
ドキュメントに関してはわかりにくい点もあるかと思いますので、色々相談いただければ幸いです。
終わりに
これから、このプロジェクトを利用して世界に羽ばたいてくれる大きなNFTプロジェクトが出来ると幸いです。また、エンジニアに向けたサポートも行っております。NFTのプログラミングをするうえで分からないことがあれば気軽にDMしてくれると幸いです。
また、私は NFT プロジェクトの エンジニアとしてのご依頼も承っています。 NFT プロジェクトの エンジニアリングを希望される方は、 TwitterのDM (@HayattiQ) までご連絡ください。