技術者向け Ethereum(イーサリアム)の基礎知識

NO IMAGE

次世代プラットフォーム Ethereum の技術面の基礎知識。

状況がすぐに変わるので、随時追加、変更していきます。

前提知識

  • 基本的なインターネットのネットワークの知識
  • 基本的なプログラミングの知識
  • Bitcoin関連の技術的基礎知識
    • ブロックチェイン
    • Proof of Work

上記、知っていることとする。

Ethereum とは?

公式サイトでの表現は「次世代のスマートコントラクトと非中央集権型アプリケーションのプラットフォーム」

上記の説明だと、スマートコントラクトとDApp(非中央集権型アプリケーション)とは何かがわからないと思いますが、一言で言うと

Ethereumは、ブロックチェーン上でアプリケーションを配置し、実行できるプラットフォームです。

大雑把に

  • ブロックチェーンの上で動くプラットフォーム(プロトコル)
  • スマートコントラクトを実行基盤
  • 独自Blockchainを利用
  • 独自Proof of Work(Ethash) から Proof of Stake(Casper)に移行予定
  • P2P上でチューリング完全なブログラムを動かせる
    • 例えると、HTML上のJavaScript (Bitcoin上のEthereum)
  • Ethereum Virtual Machine(EVM)上で、コードを実行
  • 独自言語でコントラクト(プログラム)を書く (Solidity, Serpentなど)
  • アプリは、ブラウザからJavaScriptから直接ブロックチェーンへ問い合わせて動作させる形がメジャー

大雑把に、次世代の非集権型の契約、財産をやり取りするためのプロトコル、とも言えるでしょう。
独自プログラムで、アプリが作れます。

ざっくりとしたEthereumの動き

以下に講義をした内容が書いてあります。

Ethereumは、何ではないか

  • Bitcoinのような暗号通貨ではない
    • ビルトイン通貨は、Ether (プログラムを動かす燃料として使われる)

基礎用語

  • Ether: Ethereumのビルトイン通貨。手数料を払うために使われる
  • message: メッセージ。ビットコインのトランザクションに似ているがもの。コントラクトを動かしたりする
  • transaction: etherの送信等に使われる
  • smart property: スマートプロパティ。資産管理に利用される。
  • smart contracts: スマートコントラクトとは何か? Smart Contractの定義 | block-chain.jp
  • GAS: 燃料(fuel)。プログラムを実行するのに必要な燃料となるether
    • STARTGAS: 燃料の上限。
    • GASPRICE: 計算ステップ当たりにマイナーに払う手数料
  • EVM(Ethereum Virtual Machine): プログラムを動かすためのVirtual Machine
  • Mist: Ethereumのブラウザ (Web3.0)
  • Ethereum Wallet: 公式ウォレット
  • DApp: Decentralized Applicationの略。非中央集権的アプリ。
  • Mix -> ReMix: DAppのIDE Mix: The DApp IDE · ethereum/wiki Wiki
  • Whisper: メッセージ用プロトコル
  • Swarm: データ・ストレージ用 (IPFSと同じようなもの)

Ethereumの2つのアカウント

以下の2つがある

  • 外部所有アカウント: EOA (Externally-owned Account)
    • 簡単に言うと、人が使うアカウント
    • 外部所有アカウント (ビットコインでいう普通のアカウント)
    • 人かDAppによってコントロールされる
    • EOAのみが、トランザクションを初期化できる
    • このEOアカウントの秘密鍵で署名されたトランザクションが引き金となる
    • 簡単に言うと人が管理するアカウント
  • コントラクトアカウント(Contract Account)
    • コントラクト・アカウント
    • 簡単に言うと、デプロイしたコントラクトのアカウント(アドレス)
    • ブロックチェーン上に存在する
    • トランザクションを受け付けることができる
    • メッセージを自分自身か、他のコントラクトに送ることができる
    • メッセージを送るとプログラムを実行する

Ethereumクライアント

  • geth (Go言語)
  • parity (Rust)
  • eth (C++)
  • pyethapp (Python)
  • EthereumJ (Java)

などなど

メッセージとトランザクション

  • メッセージは、ビットコインのトランザクションに似ているが以下の点で違う
    1. 外部からもコントラクトからも作れる
    2. レスポンスを返す
  • トランザクション: 外部所有アカウントから送られるメッセージを保持しておく署名されたデータパッケージへの参照

BitcoinのScriptingに追加してできるようになったこと

  • チューリング完全性
  • Value-awarenss
  • blockchain-awareness
  • 状態

できること

自律的な組織がブロックチェーン上で作成することができる

  • DAOs (decentralized autonomous organizations)
  • DAC (decentralized autonomous corporation)

プロトコル

  • GHOST (Greedy Heavist Observed Subtree) protocol
  • Block Protocol 2.0 (BP2)

コントラクトを書くための言語

以下は、昔あったが今聞くことはない

  • CLL, ECLL (Ethereum C-Like Language)
    • AST(Abstract Syntax Tree)
    • EHLL (Ethereum High Level Language)

使えるデータ保存場所

  • Stack: プログラム用のスタック
  • Memory: 所謂プログラム実行用のメモリ
  • Storage: データを保存するためのストレージ

詳しくは以下へ
EVM(Ethereum Virtual Machine)が保存できる3つのデータ領域 | block-chain.jp

仕様

  • RLP
  • Patricia Tree
  • Wire Protocol
  • block’s ancestor (in Ethereum jargon, “uncles”)

Ethash (Proof of Work)

  • Dagger + Hashimotoの最新バージョン
  • EthashのPoWは、メモリーハードで、基本的にASIC resistant

Ethash DAG

ASIC耐性のために必要

  • DAG: 数ギガバイトのデータセット
  • DAGを生成するのは、長い時間がかかる
  • DAG は、30,000ブロック毎に全く違うものになる。
  • この30,000ブロック(100時間)は、epochと言われる

Ethash DAG · ethereum/wiki Wiki

RLP (Recursive Linear Prefix)

大雑把な説明: データをエンコードする方法のこと

  • RLPの目的
    • 任意にネストしたバイナリーデータの配列をエンコードすること
  • Ethereum でオブジェクトをシリアライズために使われるメインのエンコーディング方法

パトリシア・ツリー(Patricia Tree)

  • ブロックチェーンの状態を保存、ハッシュ化するために使われる構造

Wire Protocol

EthereumノードのP2P通信のためのプロトコル

関連する他のプロジェクト

Ethereumは、以下2つのプロジェクトから影響を受けています。

  • Colored Coins

blockchainの上でスマートプロパティとカスタム通貨とアセットをやりとりするためのシステムを実装するための最初の試みは、Bitcoinの上に一種のオーパーレイとして作られた。
よくTCP上にあるHTTPに例えられる。

  • Metacoins

書き途中。

日本語の技術情報

Ethereumを学ぶ

インストール方法

使い方

スマートコントラクト

ツール

アルゴリズム

日本語の記事

基礎

説明

ウォレットのまとめ

翻訳・紹介

勉強会の動画

ホワイトペーパーを読む勉強会の動画
Ethereum勉強会 – YouTube

ブログ・感想・意見

White Paper

[English] White Paper · ethereum/wiki Wiki

Official Sites

  • Main site: http://www.ethereum.org
  • Forum: http://forum.ethereum.org
  • Code: https://code.ethereum.org
  • Blog: http://blog.ethereum.org
  • Wiki: http://wiki.ethereum.org
  • Whitepaper: http://ethereum.org/ethereum.html
  • Facebook: https://www.facebook.com/ethereumproject
  • Youtube: http://www.youtube.com/ethereumproject
  • Vimeo: https://vimeo.com/ethereumproject
  • Google+: http://plus.google.com/+EthereumOrgOfficial
  • 日本語チュートリアル: [Japanese] Ethereum Development Tutorial · ethereum/wiki Wiki

  • ネットワークステータス: Ethereum Network Status

  • ビルドのステータス BuildBot: Ethereum

コース

Ethereum 101 | B9Lab Academy

https://academy.b9lab.com/courses/B9lab/X16-0/2016/about

FAQ

wiki

FAQ · ethereum/wiki Wiki

General FAQ @Reddit

coinwatcher comments on Hi, we’re the Ethereum Founding Team. Ask us anything!

技術ユーザグループ

ブロックチェーン技術を話し合う日本のユーザグループです。

日本ブロックチェーンユーザ会

ミートアップ

関連用語

イーサリアム、イサリウム、エセリウム、エサリアム、エサリウム、イーサ、ether, ethereum, smart contract, smart property, スマートプロパティ、スマートコントラクト

     

免責事項

本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。

技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。

     

コンセンサス・ベイス(株)とブロックチェーン事業を行なってみませんか?

当サイトを運営するコンセンサス・ベイス株式会社は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。

ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などご希望でしたら、お気軽にお問い合わせください。

     
     

ブロックチェーン学習に最適の書籍の紹介

図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

ブロックチェーン イーサリアムへの入り口 第二版 (ブロックチェーン技術書籍)

本書は、ブロックチェーン技術に興味を持ったエンジニアや、その仕組みを学び、自分の仕事に活かしたいビジネスパーソンを対象にして、ブロックチェーンのコア技術とネットワーク維持の仕組みを平易な言葉で解説しています。この本を読んだうえで、実際にコードを書くような専門書、ブロックチェーンビジネスの解説書を読むことで、理解度が飛躍的に高まるでしょう。(はじめにより)

イーサリアム(Ethereum)カテゴリの最新記事