Ethereum学習ロードマップ
はじめに
Ehtereumの学習をはじめて半年ですが、どっぷりハマってしまいまして、コミュニティにコントリビューションできるところまでようやく到達できました。かなり色々なリソースを試しましたが、いい学習リソースもあれば非常に効率の悪いものもありました。そんな自分が今まで勉強した経験をもとに学習マップを簡単にまとめてみました。
0.おすすめ学習リソース
自分が勉強した中でおすすめしたい書籍が
SolidityとEthereumによる実践...は内容が開発に特化しているのでハンズオンで学習を進めることができてモチベーションの維持がしやすいので最初の一冊としておすすめです。
マスタリングイーサリアムは内容は分厚く、技術的なポイントよりも概念などにフォーカスしているのでより深く学びたい方にはおすすめです。読破はなかなか骨が折れました。苦笑
他にも、英語が多いですがEhtereum公式サイトなんかもおすすめです。
1. 基礎知識の習得
紹介した学習リソースの中からEVMやGasといったEhtereumの基本的知識を補っていくことが中心となる。
その他にもコンセンサスやBitcoinとの違い、Ethereumの歴史的背景などを意識しながら学習を進めると理解が進むと思います。
必ず理解しておきたい内容としては、
- Blockchainの基礎知識
- EVM
- Gas
- コントラクトとEOA
- 各コンセンサスの違い
あたりでしょうか。
あとは2020/12でEthereum2.0への移行が始まったので、大きな変更点であるShard chainやBecon chainなども理解しておくとコミュニティの方向性や流れが見えてくるので楽しいです。
2. 開発環境の構築
1. gethのインストール
- gethのインストール後、プライベートネットを立ち上げて、miningしたり、transactionを実行したりする
- gethコマンドでどのようなことができるか理解する
https://github.com/ethereum/go-ethereum
2. parityのインストール
- 基本はgethを使うがtestnetのチェーン同期はparityの方が早いらしいので、これも入れておく
https://github.com/paritytech/parity
3. Solidityプログラミング
1. Solidityを使ったsmart contractの開発を学ぶ
IDEはRemixというオンラインベースのものがあるが個人的にはローカルで普段使っているIDEを使うのがおすすめ。
Remix クラウド環境
Remix ローカルに導入
2. ConsenSys/smart-contract-best-practicesを読む
- CryptoKittiesのコントラクト
- トークン、ICO以外のコントラクトを学ぶにはCryptoKittesのコントラクトが一番参考になる
-
https://medium.com/loom-network/how-to-code-your-own-cryptokitties-style-game-on-ethereum-7c8ac86a4eb3
https://qiita.com/blueplanet/items/fa005a1c9457169a7391
https://qiita.com/blueplanet/items/e257450834a5a32f0f10
※ただし、最初はCryptoKittiesのコントラクトを読んでもさっぱりわからないと思われるので、一通り学習してから見てみることをおすすめする
4. 開発フレームワーク
1. truffleのインストール
- Solidityを使ったWebアプリケーション開発用のフレームワークを導入する
- truffleのコマンドでSmart Contract開発のための雛形を作ることができる
- truffle.jsでテストネットワークの接続の設定を行う。
【参考にしたリソース】
Ethereum上で公開されているコントラクトコードは全て公開されているので実際のコードを読むことが1番の勉強になる。
「OpenZeppelin/zeppelin-solidity」
※ ICOのコントラクトの場合、zeppelin-solidityの理解は必須!「gnosis/MultiSigWallet」
※ MultiSigWalletの理解のために「AlisProject/ico-contracts」
※ テストコードが非常に豊富「DRI-network/RICO」
※ダッチオークションやPoDなど【その他のリソース】
test netへデプロイする方法
truffleで接続するプライベートはganacheが早いかも
- ホスティングサービス「infura」
【Official】
【解説】これを使えば、truffleで簡単にtest netにコントラクトがデプロイできるようになる
2. web3の理解
・Webアプリ開発に必要なAPIを理解する
※1 truffle, web3.jsともjavascript, Node.jsを使用している
※2 ただし、自分の場合はRoRで開発したかったので、ethereum.rbを使った
5. Walletの理解
- MetaMaskを使用
※1 Ropstenのテストネットを使ってテストしました
Discussion
誠に有難うございます。とても勉強になりました