【注目スキル:DApp(分散アプリケーション)】体系的に学ぶ『スマートコントラクト』開発〜NFT編ステージ1〜
NFTとスマートコントラクトをきちんと学びたいあなたへ この講座では技術的な仕組みを明らかにし、基本知識と開発スキルを体系的に習得します。受講後にこれらの「事実」を知り、その先の「可能性」や「革新性」を感じることになるかもしれません。
Description
【注意事項】
本コース(収録は2022年5,6月)リリース後、2022年9月に実施された大型アップデート「The Merge」などの影響で利用するテスト用チェーンを変更しています。本コースで利用するツール類の現状を鑑み、現在Polygonのテストネットワーク「Mumbai」を中心に使い、学んでいくことにしています。詳しくは最初のセクションでご案内していますので、ご確認お願いします。
--
このコースは、DApp(Decentralized Application)の中核である「スマートコントラクト」開発を学ぶためのコースで、テーマはNFTです。
各NFTプロジェクトの要件に合わせた機能を持つ独自のスマートコントラクトを開発するための基本的な知識とスキルを体系的に身につけていきます。
実はNFTスマートコントラクトを開発せずともOpenSeaの画面からNFTを作成する方法があり、機能的にこのスマートコントラクトで十分なプロジェクトもあります。プログラムを書かずともNFTを作成できるこのようなツールはNFTが広く普及するために非常に有用なものですよね。
ただ、もっと独自の機能を使いたいという場合はスマートコントラクトの開発を行い機能を実装していく必要があります。実は海外の著名なNFTプロジェクトの多くはそれぞれ独自のスマートコントラクトを開発しています。
それもNFTアート、NFTゲーム、ユーティリティNFTなどジャンルは問わず、多くのプロジェクトが独自開発しています。
Nounsも、Azukiも、Meebitも、Doodleも、Sandboxも、Illuviumも...挙げたらキリがないくらいに。
OpenSeaなどのマーケットプレイス付属のスマートコントラクトにない機能を使いたい、もしくはコードをOSS化してプロジェクトの信頼を得たいという場合など様々な要望に対して独自にスマートコントラクトを開発することは最も有力な選択肢の一つです。
このコースはまさに様々な機能を持つNFTスマートコントラクトを開発するための第一歩となるコースです。具体的に何を学べるかについては、以下と『コースの内容』をご覧ください。
本コースで扱う技術・規格・サービス
開発言語 :Solidity (v0.8.14, 1つのみv0.8.7)
ライブラリ :OpenZeppelin(v4.6.0)
開発環境 :RemixIDE
Ethereum規格. :ERC-721
ブロックチェーン(テスト用ネット):Polygon Mumbai, (一部 Ethereum Sepolia)
エクスプローラ :Polygonscan, (一部 Etherscan)
ウォレット :Metamask(ブラウザ:Chrome)
ブラウザ :Chrome,(一部 Brave)
ソースコードリポジトリサービス :GitHub(コースで作成するコードの完成形置いてます)
NFTマーケットプレイス :OpenSea、(一部 Raribleを紹介)
分散型ストレージ :NFTStorage(IPFS/Pinata/FileCoin),(ARweaveは紹介程度)
オンチェーンNFT画像データ形式 :SVG
オラクルサービス :Chainlink VRF
本コースで学べること(採用技術ツール観点)
以下は本コース採用技術、ツール観点で主に学ぶリストです。
この観点以外で学ぶことリストは『コースの内容』のセクション、レクチャー名等をご覧ください。
ブロックチェーン
テスト用のチェーンを使います。パブリックチェーンではPolygon Mumbai,Ethereum Sepolia、プライベートチェーンではRemixIDE(後述)機能を使います。
Solidity
SPDX/pragma/contract/import/Inheritance/constructor/function/function visibility/State Variable Visibility/Types/virtual/override/require/modifier/Events/Using For/abi.encodePacked/keccak256
OpenZeppelin Contractsライブラリ
ERC721.sol/Ownable.sol/ERC721URIStorage.sol/ERC721Burnable.so/ERC721Pausable.sol/Counters.sol/Strings.sol/Base64.sol
RemixIDE
画面レイアウト/コーディング/コンパイル方法/Polygon Mumbai, Ethereum Sepolia,プライベートチェーンへのデプロイ方法/ENVIRONMENT利用方法/COMPILER利用方法/Functionボタンの色の意味/EtherscanへのスマートコントラクトコードのVerify&公開方法/GitHubとの連携方法
MetaMask
インストール方法/アカウント作成方法/テストネット表示方法/チェーン追加方法/nonce表示方法/送金方法/テスト用通貨取得方法/MetaMaskからEtherscanを表示する方法/オーナーとなっているNFTの数を表示させる方法
MetaMaskに直接関係ないですが以下も学習します。
アカウントアドレス生成の仕組みと一瞬でシークレットリカバリーフレーズから派生する秘密鍵,公開鍵,アカウントアドレスを生成する体験
Etherscan/Polygonscan
テスト用のEtherscan/Polygonscanを使います。トランザクション確認方法(EOA->EOA,EOA->コントラクト)/APIkey発行方法
IPFS(+Pinata),FileCoin,NFTStorage
Braveに内包するIPFSノードの利用/メタデータファイル、コンテンツデータをアップロードする方法/コンバートしたCARで複数コンテンツをIPFSへ一括アップロードする方法/
OpenSea
テスト用のOpenSeaを使います。開発したスマートコントラクトでmintしたNFTを表示、売買する方法(売買はNFTの権限委譲と移転を学ぶために行います)/OpenSeaが定義するMetadata Standardsを元にメタデータを定義する方法
Chainlink VRF
オラクルChainlink VRFでの乱数取得及び活用方法(ランダムNFT生成するスマートコントラクト開発で使います)
本コースを通して伝えたいこと
NFTとスマートコントラクトについて技術に基づいた正しい知識と開発スキル
2022年6月現在でもまだまだNFTに対する誤解が多いです。
※ブロックチェーンだからNFTは削除・変更できないかというとそれはスマートコントラクトのプログラム内容次第です。
また、正しく理解するにはスマートコントラクトコードの読み書きの基本的なスキルがないと妥当な判断はできないでしょう。
なので本コースでは、NFT(ERC-721)の本質、つまり「画像なし」から入ります。徐々に機能を追加、動作を試していき有名なNFTの仕組みやスマートコントラクトができることの基本を習得していきます。
本コース受講に向いている方
このコースの内容が役に立つ人とそうでない人がはっきり分かれるコースです。
今これを読んでくださっているあなたにとって、このコースが役に立つかどうか、
↓で2つ質問させていただきます。受講要否の判断材料にしてください。
また本ページ最後に質問への回答について基本的なポリシーを書いていますのであらかじめご確認お願いいたします。
1つ目の質問
テレビ、YouTube、雑誌、ネットなどなど多くのメディアで「NFT」と言う言葉をよく耳にするようになりましたね。
2022年6月現在まで、メディアでは「NFTとは何か」について概ねこのように説明されているのを良く見ます。
NFTは世界に1つだけのデジタル証書
NFTはコピーできない
NFTは改ざんできない
納得感得られていますか?
そもそも説明聞いたことないという方はぜひYouTubeやネット検索して確認してみてください。
もしあなたが
「スッキリ理解、納得できた」
「自分で追加で調べて理解、納得している」
という状態であればこのコースは不要です。
ここまで読んでいただきありがとうございました。別の機会があればその時改めてよろしくお願いします。
一方、
「理解、納得できてない」
「何かモヤモヤする」
「この人、メディアの言ってること信用していいの?」
「詳しく仕組みを理解したい」
「自分で手を動かして理解したい」
もしくは
「興味はあるけど詐欺に引っかかりたくない」
「NFTって画像でしょ?ダウンロードすれば手に入るのになぜわざわざ買うのか気になってた」
「ブロックチェーンで変更できないはずなのにNFTゲームで「体力」の数字が変わるのが謎だった」
このような方々にはこのコースが役に立つ可能性があります。
2つ目の質問
もう一つ質問があります。主にNFTの売買に際して技術的な質問です。
そもそも用語がわからないという方もいらっしゃると思いますが、再び突然の質問失礼します。
あなたがNFTを購入する立場だとして、
オンチェーンのNFTは削除改ざん不可能と言われていますが、本当でしょうか。
オフチェーンだけどIPFSを使っているNFTは削除改ざん不可能と言われていますが本当でしょうか。IPFSを使えばデータは永続的に保存されるとも言われていますが本当でしょうか。
NFTのコンテンツデータ(画像ファイルなど)がどこに保存されているかをどのように確認しますか
例えば、NounsとSandboxとWorld of Womenの3つについて、NFTに付随している画像データの保存先の違いを確認できますか。※オンチェーンですか、オフチェーンですか。オフチェーンの場合は置いているのは中央集権的なサーバですか、分散型ストレージですか
NFTスマートコントラクトのプログラムコードの確認と公開方法を説明できますか。
あなたがNFTを作成、販売する立場だとして、
購入者に対して自身が販売する、(画像等の付属データ含む)NFTの不変性や永続性について説明できますか
OpenSeaで初めて「Sell」する際の同意事項の一つに「setApprovalForAll」が実行されますが、これは何を行うために必要なのでしょうか。
ERC-721規格のNFTであればOpenSeaの画面から明示的に「登録」する必要はありませんし、Raribleでも閲覧することが可能です。「登録」していないのにNFTマーケットプレイスでNFTが表示されるのはなぜでしょうか。
これらの質問に関しても回答がわかり、理解している方であれば本コースの受講は不要です。
ここまで読んでいただきありがとうございました。不躾な質問、大変失礼しました。
別の機会があればその時改めて是非よろしくお願いします。
一方、
「用語含め全くわからない」
「一部わからない」
「聞いたことあるけど仕組みを理解したい」
このような方々にはこのコースが役に立つ可能性があります。
現状わからなくても全く問題ありません。むしろ本コースはそのような方々を想定して制作しました。
このコースを最後まで受講すれば回答できるようになります。
ここまで該当している方は、
・「本ページの残り部分」の一読と「コース紹介」と「無料で見れるレクチャー」の動画もご覧ください。
購入前にご自身が求める内容であるか、
また、声が嫌いじゃないか、とか説明の仕方が理解しやすいか、というのも個人差ありますので併せて確認お願いします。
学習スタンス
ここからはコース紹介動画であまり話していない内容を少し書きます。
まずは取り組むスタンスについてです。
似たような言葉に「DYOR(Do Your Own Research):自分で調べましょう」がありますが、新しい技術なのでこのスタンスは必要ではあるのですが、特にこのコースでは「don't trust , verify.」を意識して作っています。
例えば「巷で言われてるけど、NFTって本当に削除できないの?」と言う疑問に対して実際にコードを書いて動作を検証・確認していきます。
この理由は、このコースの受講生が、技術的な根拠について少しでも自力で調べたり、実験・検証して動作確認できるようになってもらうためです。人の言葉を信じるのも選択肢の一つですが、自分のために自分の力で確認できる選択肢も手に入れましょう。
質問の受付について
コースで扱っているレクチャー内容やレクチャーを進めていくにあたり進められず詰まってしまったなどあれば質問をください。可能な限り回答するようにしますので活用ください!
また、講義に解説を追加して欲しい!というリクエストも随時受け付けていますので連絡ください。お待ちしています。
ただ1点、コースで扱っているレクチャー内容以外のご質問は基本的に受け付けていませんので予めご了承願います(コース関係ない内容だけどご自身が今開発してるコードのレビューなどはご勘弁ください)。
注意事項
・本コースで扱うソースコードについて
本コースで扱うNFTコントラクトのソースコードは学習目的のものですが、本コースの受講者か否かに限らず提供できるようパブリックリポジトリにし、コードもMITライセンスを採用しています。
(この形でスタートして何か問題が出て来ればそのタイミングで見直します。)
利用者の権利はMITライセンスの内容通りですので必ず確認をお願いします。また、ソースコードをそのまま使ったり、切り貼りしたりしてご自身のNFTコントラクトを開発し、Ethereumなどのメインネットワークにデプロイするのは推奨しません。
・免責事項
このコースで多くのサービスを使いながら学びますが、全て学習目的です。技術を学ぶためのコースであり、特定の銘柄や商品の投資や投機を促すものではありません。いかなる責任も賠償もできませんので予めご了承の上受講ください。
では、長い文章でしたがここまで読んでいただきありがとうございました!
What You Will Learn!
- ERC-721規格準拠の基本的なNFTスマートコントラクト開発の方法(Solidity/OpenZeppelin/RemixIDE使用)
- Solidityの基礎
- NFTの作成(mint)、削除(burn)、停止(pause)、権限移譲(approve)、移転(transfer)、資産情報紐付け(tokenURI)の仕組み
- NFTに付与するメタデータとコンテンツデータのオンチェーン(SVG利用)とオフチェーン(IPFS/FileCoin/nftstorage利用)への配置方法
- NFTがどのようにOpenSea上で表示されるのか、その仕組み
- ランダムNFTのmint方法(keccak256擬似乱数とオラクルchainlink乱数それぞれ使用)
- NFTスマートコントラクトをパブリックテストネットEthereum/Polygon、プライベートネットに展開する方法
- ブロックエクスプローラ(Etherscan/Polygonscan)を使ってトランザクションの内容を調べる方法
- スマートコントラクトのコードをEtherscanに公開する方法
- NFTスマートコントラクトのプログラムコードやNFTコンテンツデータの保存先を確認する方法(ブロックエクスプローラ使用)
Who Should Attend!
- NFTプロジェクト固有の機能を持つ独自のスマートコントラクトを開発したい方
- NFT売買に関心のある方、NFTプロジェクトを検討している方(開発者に限らず起業家、クリエイター、マーケター問いません)
- NFTを技術的な仕組みから理解したい方
- 日本語で体系的に基本を習得したい方