実践DApp開発入門 〜NFT編ステージ2〜
DApp開発の基礎をきちんと学びたいあなたへ この講座では、発展的なスマートコントラクト開発手法とフロントエンドアプリからスマートコントラクトを操作する方法を、『FT/NFTの活用事例となるサンプルDApp』開発を通して習得します。
Description
【注意事項】
コース制作時はEthereum のテストチェーンとして「Rinkeby」を使用していましたが、先般実施された大型アップデート「ETH Merge」にてRinkebyが廃止となったため「Goerli」読み替え、聞き替えをお願いします。動画レクチャーは順次アップデートしていきます。ご不便おかけしますが、よろしくお願いいたします。
NFTを所有している特別なアカウントのみが使える機能(トークン移転、預入、引出)を提供するDApp(分散アプリケーション)を開発していきます。
スマートコントラクトは2つ開発します。
1つは、NFTスマートコントラクトです。ERC-721に準拠したものをOpenZeppelinのContractsライブラリを使って開発します。
もう一つは、ERC-20に完全準拠はしていないもののERC-20の一部をスクラッチ開発していきます。さらに、銀行機能をイメージしたようなトークンの移転、預入、引出機能を開発します。
具体的に何をどのような順番で学んでいくかについては、以下と『コースの内容』をご参照ください。
開発の流れなど
開発する順番
NFTスマートコントラクト->FTスマートコントラクト->フロントエンド
スマートコントラクト開発
開発->ユニットテストを繰り返していくスタイルで開発していきます
ユニットテストは品質向上だけでなく、フロントエンドアプリからスマートコントラクトを操作するために使うEthers.jsの習熟も目的にしています。
開発が終わったら最終的にテストネットのGoerliにデプロイします
フロントエンドアプリ開発
大きく2セクションに分けています
MetaMaskを開発するサイトに接続する機能開発
スマートコントラクトに接続し、クエリやトランザクションを発行する機能開発
注意
Ethers.jsを使ったDApp開発に主眼を置いています
Next.js/TailWind CSSについては「学ぶ」というより「体験する」を重視しているため、深く解説することは行っていません
本コースで扱う主な技術・規格・サービス
開発言語 :Solidity (v0.8.9)
ライブラリ :OpenZeppelin(v4.7.0)
開発フレームワーク :Hardhat(v2.9.9)
クライアントライブラリ : Ethers.js(v5.6.9)
ユニットテスト : Waffle(v3.4.4)/Chai(4.3.6)
フロントエンドアプリ : Next(v12.2)
CSS : TrailWindCSS(v3.1.4)
ホスティングサービス : Vercel(フロントエンドのデプロイ先として使用)
Ethereum規格 :ERC-721,(ERC-20は参考程度)
ブロックチェーン(テスト用ネット):Ethereum Goerli
エクスプローラ :Etherscan
ウォレット :Metamask(ブラウザ:Chrome)
ソースコードリポジトリサービス :GitHub
NFTマーケットプレイス :OpenSea
分散型ストレージ :NFTStorage(IPFS/FileCoin)
注意事項
・本コース制作の中で発生したエラーやWarning、バグについて
本コースでは開発の中で出たエラーやWarning、バグなどについてあまり編集をせず残しています。
本コースは教材なので、あえてエラーを発生させ修正する方法学ぶ、というものも当然多くありますが、私自身意図していないエラーの発生やタイポなどお見せするのも恥ずかしいようなものも少し残しています。このような類のエラー、不具合は、ユニットテストなどテストで気づけることが多いので、テストの重要性をより強調するための意図で残すことにしました。あらかじめご了承ください。
・質問の受付について
コースで扱っているレクチャー内容やレクチャーを進めていくにあたり進められず詰まってしまったなどあれば質問をください。可能な限り回答するようにしますので活用ください!
また、講義に解説を追加して欲しい!というリクエストも随時受け付けていますので連絡ください。お待ちしています。
ただ1点、コースで扱っているレクチャー内容以外のご質問は基本的に受け付けていませんので予めご了承願います(コース関係ない内容だけどご自身が今開発してるコードのレビューなどはご勘弁ください)。
・本コースで扱うソースコードについて
本コースで扱う2つのスマートコントラクトとフロントエンドアプリのソースコードは学習目的のものですが、本コースの受講者か否かに限らず提供できるようパブリックリポジトリにし、コードもMITライセンスを採用しています。
(この形でスタートして何か問題が出て来ればそのタイミングで見直します。)
利用者の権利はMITライセンスの内容通りですので必ず確認をお願いします。また、ソースコードをそのまま使ったり、切り貼りしたりしてご自身のNFTコントラクトを開発し、Ethereumなどのメインネットワークにデプロイするのは推奨しません。
・免責事項
このコースで多くのサービスを使いながら学びますが、全て学習目的です。技術を学ぶためのコースであり、特定の銘柄や商品の投資や投機を促すものではありません。いかなる責任も賠償もできませんので予めご了承の上受講ください。
What You Will Learn!
- 特定のNFT保有者だけが使える機能を提供するDApp開発
- Hardhatフレームワークの使い方(開発、テスト、デプロイ)
- 2つのスマートコントラクトを連携させる方法
- スマートコントラクトのユニットテスト実装方法
- フロントエンドアプリ(NextJSwithEthersjs)からバックエンドのスマートコントラクトにクエリ、トランザクション発行する方法
Who Should Attend!
- DApp(分散アプリケーション)開発スキルを身につけたい方
- NFTプロジェクトを検討されている方