Ethereum学習ロードマップ

3 min read読了の目安(約3200字

はじめに

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のインストール

3. Solidityプログラミング

1. Solidityを使ったsmart contractの開発を学ぶ

IDEはRemixというオンラインベースのものがあるが個人的にはローカルで普段使っているIDEを使うのがおすすめ。

Remix クラウド環境

https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js

Remix ローカルに導入

https://github.com/ethereum/browser-solidity

2. ConsenSys/smart-contract-best-practicesを読む

https://github.com/sot528/smart-contract-best-practices/blob/master/README-ja.md

4. 開発フレームワーク

1. truffleのインストール

  • Solidityを使ったWebアプリケーション開発用のフレームワークを導入する
  • truffleのコマンドでSmart Contract開発のための雛形を作ることができる
  • truffle.jsでテストネットワークの接続の設定を行う。

【参考にしたリソース】
Ethereum上で公開されているコントラクトコードは全て公開されているので実際のコードを読むことが1番の勉強になる。

「OpenZeppelin/zeppelin-solidity」

https://github.com/OpenZeppelin/zeppelin-solidity
※ ICOのコントラクトの場合、zeppelin-solidityの理解は必須!

「gnosis/MultiSigWallet」

https://github.com/gnosis/MultiSigWallet
※ MultiSigWalletの理解のために

「AlisProject/ico-contracts」

https://github.com/AlisProject/ico-contracts
※ テストコードが非常に豊富

「DRI-network/RICO」

https://github.com/DRI-network/RICO
※ダッチオークションやPoDなど

【その他のリソース】

test netへデプロイする方法

https://tech.pepabo.com/2017/12/06/erc20-token-on-ropsten/

truffleで接続するプライベートはganacheが早いかも

http://truffleframework.com/ganache/
  • ホスティングサービス「infura」

【Official】

https://infura.io/
【解説】
https://wakuwaku-currency.com/virtual-currency/ethereum/about-use-hosting-service-infura.html

これを使えば、truffleで簡単にtest netにコントラクトがデプロイできるようになる

2. web3の理解

・Webアプリ開発に必要なAPIを理解する

※1 truffle, web3.jsともjavascript, Node.jsを使用している
※2 ただし、自分の場合はRoRで開発したかったので、ethereum.rbを使った

https://github.com/EthWorks/ethereum.rb
https://qiita.com/shiki_tak/items/1fdac873e35c5257a4d7

5. Walletの理解

  • MetaMaskを使用

※1 Ropstenのテストネットを使ってテストしました

https://ropsten.etherscan.io/