Paoの技術力を磨くブログ

機械学習やブロックチェーン等の技術を身に付けていくブログです。

【Ethereum】スマートコントラクト開発の基本用語をまとめる

今まで勉強してきた基本的な内容をまとめておきます。
かなり省略気味です。
PlasmaやCasper, RaidenNetworkなど、今後のEthereum内の技術は一旦置いときます。
(あくまでスマートコントラクト開発ということで)

Ethereum

スマートコントラクト

Dapps

  • Decentralized Applicationsの略
  • ブロックチェーン・スマートコントラクト により非中央集権で分散化されたアプリケーション
  • 現時点での使われ方としては、ゲームが多く、後はDEX(分散型取引所)や予測市場(Augur, Gnosis)など
  • CryptoKittiesと呼ばれる仮想猫を育てたり交換するゲームが一番有名

ここから技術的なところ

Geth

  • EthereumのP2Pネットワークにアクセスするためのクライアント
  • 他のクライアントとしては「Parity」が有名だが、Gethが現状一番メジャー
  • Go Ethereumの略で、Go言語ベース
  • マイニングやブロック上の情報確認(特定アドレスの資産など)、デプロイ済みのコントラクトプログラムの実行が可能

Solidity

Web3.js

  • Ethereum用のjavascriptAPI
  • JSON RPCのラッパー
  • RPC経由でコントラクトの実行などをできる
  • Dappsのフロントエンドとして、htmlに組み込んで使う

Truffle

OpenZeppelin

  • セキュアなスマートコントラクト開発をするためのフレームワーク
  • トークンとして、ERC20、ERC721、ERC827の機能が実装されていたり、ICOの機能も実装されている
  • ユーザのトークンを扱うことになるスマートコントラクト/Dappsにおいて、セキュアなコーディングは必須なので重要
  • Truffleの中で使うことが可能

Remix

  • 旧名:browser-solidity
  • Ethereumの統合開発環境
  • コーディングだけでなく、コンパイルやデプロイも可能
  • オンライン上とローカルに立てる方法がある

Ganache

  • Truffleのチームが開発した開発環境
  • Gethなどのクライアントがなくても、Ethereumネットワークにアクセスできる
  • Remixの場合、Gethの起動が多分必要(RPCによる接続のため)

Mist

  • Ethereumのウォレット兼ブラウザ
  • 公式のウォレット
  • マイニングやDAppの操作が可能
  • GUIのため、わかりやすい

MetaMask

  • GoogleChromeFireFoxなどのプラグインとして使えるEthereum用ウォレット
  • メインネットやテストネット、プライベートネットへの接続が可能で切り替えも簡単
  • これによりChromeとかから送金ができたり、Dappsの利用ができる

ざっと書きました。
もし、これ大事なのに忘れてるとか意味間違ってるとかあればご指摘ください。

あとは上にあげた中のツールを開発時にどう活用していくかですね。
特に、開発環境は、Remixを使うのか、Ganacheを使うのか、一般的なIDEを使ってコンパイルとかは別でするのか等パターンがいろいろあります。
まずは色々触って自分にあった使い方を見つけていくしかないですね!
僕ももっと触っていきたいと思います。