【Ethereum】スマートコントラクト開発の基本用語をまとめる
今まで勉強してきた基本的な内容をまとめておきます。
かなり省略気味です。
PlasmaやCasper, RaidenNetworkなど、今後のEthereum内の技術は一旦置いときます。
(あくまでスマートコントラクト開発ということで)
Ethereum
- ブロックチェーン 技術を活用したスマートコントラクトのアプリケーション(Dapps)のプラットフォーム
- プラットフォーム内で使う通貨は「Ether」
- 仮想通貨としてビットコインに継ぐ時価総額2位
- スマートコントラクトのプログラムの実行に必要な燃料「GAS」として消費される
スマートコントラクト
- 様々な契約(コントラクト)を自動で執行する仕組み。
- Ethereumなどブロックチェーン で有名になったが、ブロックチェーン じゃなくてもスマートコントラクトといえる
- ブロックチェーン の場合、契約情報をP2Pネットワーク上のブロックに記述。非中央集権的なスマートコントラクトが可能になる
Dapps
- Decentralized Applicationsの略
- ブロックチェーン・スマートコントラクト により非中央集権で分散化されたアプリケーション
- 現時点での使われ方としては、ゲームが多く、後はDEX(分散型取引所)や予測市場(Augur, Gnosis)など
- CryptoKittiesと呼ばれる仮想猫を育てたり交換するゲームが一番有名
ここから技術的なところ
Geth
- EthereumのP2Pネットワークにアクセスするためのクライアント
- 他のクライアントとしては「Parity」が有名だが、Gethが現状一番メジャー
- Go Ethereumの略で、Go言語ベース
- マイニングやブロック上の情報確認(特定アドレスの資産など)、デプロイ済みのコントラクトプログラムの実行が可能
Solidity
- Ethereumスマートコントラクトを記述するための言語
- 完全チューリングな言語
- javascriptに近い
Web3.js
Truffle
OpenZeppelin
- セキュアなスマートコントラクト開発をするためのフレームワーク
- トークンとして、ERC20、ERC721、ERC827の機能が実装されていたり、ICOの機能も実装されている
- ユーザのトークンを扱うことになるスマートコントラクト/Dappsにおいて、セキュアなコーディングは必須なので重要
- Truffleの中で使うことが可能
Remix
Ganache
- Truffleのチームが開発した開発環境
- Gethなどのクライアントがなくても、Ethereumネットワークにアクセスできる
- Remixの場合、Gethの起動が多分必要(RPCによる接続のため)
Mist
- Ethereumのウォレット兼ブラウザ
- 公式のウォレット
- マイニングやDAppの操作が可能
- GUIのため、わかりやすい
MetaMask
- GoogleChromeやFireFoxなどのプラグインとして使えるEthereum用ウォレット
- メインネットやテストネット、プライベートネットへの接続が可能で切り替えも簡単
- これによりChromeとかから送金ができたり、Dappsの利用ができる
ざっと書きました。
もし、これ大事なのに忘れてるとか意味間違ってるとかあればご指摘ください。
あとは上にあげた中のツールを開発時にどう活用していくかですね。
特に、開発環境は、Remixを使うのか、Ganacheを使うのか、一般的なIDEを使ってコンパイルとかは別でするのか等パターンがいろいろあります。
まずは色々触って自分にあった使い方を見つけていくしかないですね!
僕ももっと触っていきたいと思います。