NFTチュートリアル

NFT TUTORIAL SERIES
Ethereumの公式NFTチュートリアル。全3部シリーズ。
HOW TO WRITE & DEPLOY AN NFT (PART 1/3)
流れ
まずAlchemyとMetamaskに登録する。Hardhatのプロジェクトを作成し、NFTを定義するスマートコントラクトをSolidifyで実装し(MyNFT.sol
)、ropstenにデプロイするところまで行う。
コメント
ネットワークはRopstenを使っているが、Alchemy上でDeprecatedとなっていたので代わりにGoerliを使った。Solidifyのコードを一行ずつ説明していて親切だが、OpenZeppelinライブラリをいきなり使うので、先にOpenZeppelinのチュートリアルをやっておいた方が分かりやすいかも。
HOW TO MINT AN NFT (PART 2/3)
流れ
Pinataを使ってIPFS上に画像とメタデータをアップロードする。NFTをミントするためのmintNFTメソッドをJavaScriptで実装し、アップロードした画像を対象とするNFTを発行する。
コメント
mintNFTメソッドが割と長い。web3.jsというライブラリのAPIを知らないこともあり、ちゃんと理解するにはまだ知識が足りない。
HOW TO VIEW YOUR NFT IN YOUR WALLET (PART 3/3)
流れ
Metamask上でNFTを見れるように設定する。
コメント
デスクトップのChrome拡張では見れないので注意(そもそもcollectablesタブが無い)。Androidにアプリをインストールした。

LINE Blockchainサービスチュートリアル
流れ
映画チケットの予約サービスをサンプルサービスとして、Line Blockchainにおけるサービストークンやアイテムトークン(fungiable/non-fungiable)の発行・鋳造・転送を学ぶ。
コメント
日本語かつGUIでの操作も多いので、チュートリアルの内容を把握すること自体は簡単。ただ、トークンの鋳造はAPIでしか出来ず、チュートリアルには謎のcurlコマンドが書いてあるだけなので、面食らった。APIガイドを見ると、署名の生成やAPIコールをPythonで行うサンプルコードがあるので、それを元に実行した。
ブロックチェーン上の操作が全てHTTPのエンドポイントとして提供されているので、普通のAPIコールをしているような気持ちになる。ブロックチェーンについて理解が深まったかというと微妙。

Hardhat's tutorial for beginners
流れ
Ethereumの代表的な開発環境であるHardhatの使い方を学ぶ。トークンの機能を実装するスマートコントラクトを実装し(Token.sol
)、chaiというライブラリを使ってテストを書く。Alchemyを使ってGoerliにデプロイしてみる。
コメント
Tokenのスマートコントラクトが正しく実装できているか、テストを書いて具体的に検証するところが勉強になった。ただ、デプロイするところまでで終わっているので、デプロイしたスマートコントラクトが具体的にどう使われるかのイメージは湧きにくい。

OpenZeppelin Learn
流れ
HardhatもしくはTruffle環境を使って、スマートコントラクトを実装していく。値を保存するだけの単純なコントラクトではあるが(Box.sol
)、1ファイルから複数ファイル、そしてOpenZeppelinのコントラクトの継承、と段階的に進めていく。実装したコントラクトをローカルネットワークにデプロイし、コンソールやスクリプトを使って操作してみる。また、chaiやOpenZeppelin Test Helpersを使った単体テストを書いて検証する。テストネット(rinkeby
)へのデプロイはAlchemyとmnemonicを使う。さらに、OpenZeppelin Upgrades Pluginsを使って、既にデプロイしたコントラクトからマイグレートする方法を学ぶ。
コメント
全体的に丁寧。例えば、代表的な開発フレームワークであるHardhatとTruffleの両方のコードを切り替えられるようになっていたり、npx hardhat compile
の意味などもちゃんと説明してくれて初心者に優しい。それでいて、デプロイ済みコントラクトのマイグレーションなど発展的な内容も説明してくれるので、勉強になった。
テストネットへのデプロイはmnemonicsでその場で生成した単語を使っているが、他のチュートリアルで既にMetaMaskのアカウントを作っている場合はそっちの方が便利かも。
なお、OpenZeppelin Test Helpersの単体テストはartifacts.require is not a function
というエラーが出て動かなかった。ググると同じ症状が出てくるが、現段階では深入りはせず。

A Developer's Guide to Ethereum
Pythonを使ってEthereumに触ってみるチュートリアル。今のところ2部作。
流れ
Web3.pyというPythonライブラリを使ってEthereumに触ってみる。Geth(Go Ethereum)でローカルに実際のノードを立ち上げるのは大変なので、Web3.pyに付随するシミュレーションノードに接続し、アカウント・ブロック・トランザクションといった基本オブジェクトを見ていく。アカウントを作成し、etherを送付してみる。
コメント
Ethereumの公式ドキュメントからリンクされていたこともあり、たどり着いたが、いきなり読んでもあまりピンとこないかも。ただ、今改めて読み直してみると、スマートコントラクトをデプロイする際に、具体的にどういうトランザクションを発行されているか、などにも触れていて勉強になった。最初に読むべきかと言われると微妙。

CryptoZombies
流れ
オンラインエディタを使ってインタラクティブにSolidityの文法やweb3.jsの使い方を学ぶ。
コメント
ゲーム形式だが説明は丁寧なので、Solidifyの雰囲気で読み流していた部分が分かって良かった。ただ、そもそもSolidityをいつ使うのか知らないと、なぜ学ぶべきか分からないので、他のチュートリアルをやって全体像を把握してからの方が良いと思う。第2章までやるのに1時間以上かかったので、全部やるのは大変そう。自分は1-2章のSolidifyと6章のweb3.jsをやった。終わった後に日本語版もあることに気付いた。