215
190

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ethereumの学習フローを整理した

Last updated at Posted at 2018-01-21

ブロックチェーンの勉強を始めて、そろそろ1年です。
最初はBitcoinを動かしてみたり、API使って、簡単な送金アプリを作ってみたりしました。
去年の春から夏にかけては業務の関係でFabricを中心にHyperledgerプロジェクトのブロックチェーンを触っていました。

しかし、Fabricだけ分かっててもな〜と思い、9月からEthereumの勉強を始めました。
これが運の尽きでした...

「...Ethereum、めっちゃ楽しいじゃん!!!!」

Ethereumにどっぷりとハマってしまいました。学習しても、しても終わりが見えない感じが楽しいですね(笑)

学習を始めてからもう少しで半年、一通りEthereum周辺の技術を触ったので、備忘の意味を込めて、学習の流れを整理してみました。
なお、今後も新しい技術を触ったら、随時更新していく予定です。

他にも、これやった方がいいよというものがあればぜひ教えてください!
よろしくお願いします!

##1. 基礎知識の習得

###1. Ethereumの基本的な用語や仕組みについて理解する

  • gas, EVMといった用語の意味がわかれば良いのでは?
  • おすすめの本「ブロックチェーン イーサリアムへの入り口」 
    (ただし、Ethereumの仕組みについては結構ディープなところまで書かれているので最初は流し読み程度でいいかも)

##2. 開発環境の構築
###1. gethのインストール

  • gethのインストール後、プライベートネットを立ち上げて、miningしたり、transactionを実行したりする
  • gethコマンドでこんなことができるんだなということがわかればよいのでは?
    https://github.com/ethereum/go-ethereum

###2. parityのインストール

##3. Solidityプログラミング
###1. Solidityを使ったsmart contractの開発を学ぶ

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

##4. 開発フレームワーク
###1. truffleのインストール

  • Solidityを使ったWebアプリケーション開発用のフレームワークを導入する
  • truffleのコマンドでSmart Contract開発のための雛形を作ることができる
  • truffle.jsでネットワークの設定を行う。ここを理解すれば、開発の幅が広がる(色々なネットワークに接続できるようになる)

【Reference】
https://qiita.com/amachino/items/8cf609f6345959ffc450

  • truffleがなんとなく分かってからICOのコントラクトを参考にスマートコントラクトの勉強を集中的に行った

【参考にしたプロジェクト】
「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など、ICOに必要な要素を体系的に学ばせていただきました

この段階で以下のAdvent Calendarを全部読むことをお勧めする
https://qiita.com/advent-calendar/2017/ethereum

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.jsの理解
・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の理解
###1. EthereumのWalletについて学ぶ

  • MetaMaskを使用

インストール方法
https://business-infinity.jp/metamask-how-to-use/

※1 基本的にRopstenのテストネットを使いました
https://ropsten.etherscan.io/

※2 SEED情報のメモをお忘れなく

##6. セカンドレイヤーの学習へ
###1. Raiden Network

  • 文献は少ないが公式ドキュメントだけでも十分学習できる
  • APIを試して、Web UIで実行するところまでできればやってることがなんとなく分かるようになる

【Official】
https://github.com/raiden-network/raiden
http://raiden-network.readthedocs.io/en/stable/index.html
 
【Qiita】
チェーンの同期で非常に参考になりました
https://qiita.com/tomohata/items/21e33b0d68374090a697#comment-a0a88db459dc093139d3

215
190
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
215
190

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?