いまからSolidityを学ぶなら? 〜簡単なdAppsを作れるようになるまで〜
2022/09/12 更新
自分が学んだ経緯をツイートしたら少しだけ反応あったので、改めて記事としてまとめます。
はじめに
最近、Web3領域の特に技術的な部分について面白いな〜と思っていて色々調べていました。さらに深く知るためにはWeb3アプリを作ろうと試行錯誤していたのですが日本語の情報が少なかったり古かったりでちょこちょこ躓くということが起きていました。
で、約2ヶ月ほど追ってきてみて、ようやく簡単なdAppsくらいなら作れるようになったので、これからSolidityを学びたい!という人に向けてその道のりを共有します!
対象読者
全くの未経験者がこのステップをいきなりこなすのは難しいと思います。先にドットインストールやProgate等で知識を付けておきましょう
Solidityの知識ゼロから簡単なdAppsを作れるようになるまでの道のり
①Web3.0周辺知識をざーっと流し見する
・Web3.0ってなんなの?
・ブロックチェーンとはなんなのか、ブロックの構造、改ざん耐性、マイニングとは?
・スマートコントラクトとは、ERCとは?ERC-20、ERC-721等
ERC-XXの中でも、特にERC-20、ERC-721、ERC-1155辺りは最低限知識を入れたほうが良いですね
② Remixを使ってコントラクトをデプロイしてみる
・大体の用語や知識が頭に入ったら、まずは手を動かして感覚を掴む!!
・コードはまだ読めなくてもOK。全体像を掴むの大事!
ここでやっていたことが次以降のステップで、Remixでやっていたのはコレだったのか〜〜ってなるので大丈夫!
③ CryptoZombies.ioでSolidityを体系的に学ぶ
・Progateの学習方法と似たような形で学習を進められる。
・Solidityの書き方はここで学べる!
トップページは英語ですが、日本語に切り替えられます!ただの機械翻訳ではなく自然な日本語になっているのですんなり頭に入ってきます!
SolidityのVersionが0.4.X(最新は0.8.X)と少し古いですが、基本的な書き方はほぼ変わらないので問題ありません。
④ Hardhatを使ってみる
・Hardhatとは→便利なEthereumスマートコントラクト開発環境
・ローカルPCに開発環境を整え、Hardhatからテストネットへコントラクトをデプロイしてみる
本格的な開発ではHardhatが使われています。ここからはSolidityの書き方というよりは実際の現場レベルでの扱い方を学ぶ形になります。
⑤ テストコードを書いてみる
・Hardhatを使うと簡単にテストコード実行環境が整います!
・公式チュートリアルに沿って書いてみよう
スマートコントラクトは一度デプロイすると二度とコードが変更ができないという特性から、入念なバグチェックや脆弱性チェックが重要になってきます。
Hardhatは便利なテスト環境が整っているので、チュートリアルを見ながら進めてみましょう
⑥ Hardhat + React等 でサンプルdAppsを作ってみる
・CryptoZombies.io のチュートリアル等を参考にして独自のdAppsを作ってみる
・簡単なものでOK、0からでも良いし、改造しても良い。
既にローンチされているdAppsでソースコードを公開されているプロジェクトもあります。実プロダクトのソースコードもめちゃくちゃ学びになると思います。
⑦セキュリティについて学ぶ
スマートコントラクトではその特性からコード内でお金に関わる処理を書くことが多いです。悪意あるユーザーが一方的にコントラクト内の残高全てを引き出せてしまうバグなんて仕込んでしまった場合、大変なことになるでしょう・・・。重大インシデントを未然に防ぐためにも、セキュリティを学んでおくことは重要です。
セキュリティを学べるサービスの1つとして、ethernautがあります。
CTF形式で脆弱性のあるコントラクトに対して1つずつ攻撃を成功させながら問題を解いていきます。
学習したての状態で全部自力で解くのはなかなか難しいです。1日最低1問解くことを目標に進めれば、1ヶ月で完了できます。
どうしても自力で解くのが不可能であれば、「ethernaut solution」と検索すると答えと解説が出てきます。全然わからなくてもまずは全問目を通しておこう!
この先は・・・
個人的なオススメは、好きなテーマを考えて(自動取引BOT、仮想ハムスターに餌をあげて育てるNFT等)、コントラクトを作って学ぶのが1番長続きするし頭に入ってくると思います。
ここまで来ると、誰かが公開してるdAppsのコードやコントラクトのコードが読めるようになってきているので実装の参考にしながら進めるのも良さそうです。
一緒にがんばりましょう!🚀🚀🚀
宣伝: 学習コミュニティに参加してみよう!
Solidityについてワイワイ学ぶコミュニティ「solidity-jp」を作りました!いまから学んでみたい/学習中だけどの日本語の情報が少ない/古くて時間がかかっているという方、一緒に学びましょう〜!!
また、TwitterにてSolidityについて技術的な部分を発信しています。良ければフォローお願いします!
Twitter: https://twitter.com/k0uhashi