図1

3. Ethereumの仕組み【東大AI研究者のノート】技術者でないあなたもブロックチェーン技術が与える社会インパクトを正しく理解する

前回までのあらすじ

こんにちは!普段は東京大学松尾研究室ってところでAIの研究やっているたむこうです.今回は【東大AI研究者のノート】技術者でないあなたもブロックチェーン技術が与える社会インパクトを正しく理解する ~2. PoWの課題と解決~の続きの記事になり,Ethereumについてまとめた記事です.

7. Ethereumとは?

引用元: http://gaiax-blockchain.com/wp-content/uploads/2017/02/smart-contract_image1.jpg

Ethereumは,次世代のスマートコントラクトと非中央集権型アプリケーションのプラットフォームです.ブロックチェーン技術を「通貨」の枠組みを超えた領域に用いることが可能になり,今まで当然とされていた資本主義的概念を破壊し,新たなEconomy(経済圏)を形成していく可能性を持っていると期待されています.

8. スマートコントラクト 

Ethereumのプラットフォームにおいて特徴的な機能として,スマートコントラクトが挙げられます.スマートコントラクトとは,権利の証明や権利の移動,現実世界では契約と呼ばれるものをブロックチェーン上で自動的に執行する仕組みです.

引用元: http://gaiax-blockchain.com/wp-content/uploads/2017/02/smart-contract_image1.jpg

例として,自動販売機がよくあげられます.自動販売機はユーザーが必要な金額を投入し,求める商品のボタンを押すと,結果として自動で商品を提供するという契約が執行されます.

スマートコントラクトによる利点は,


1. 契約相手を全面的に信用する必要がなくなるということ

相手を信用せずとも価値の交換(契約)がスマートコントラクトによって行われる上,取引情報が中央集権的でないブロックチェーンに書き込まれているため,透明性が高く不正が難しい

2. 仲介する第三者がないため,コスト(手数料,時間)が少なくて済む


中央集権的な信用機関を必要としないため,コストが少なく,契約を執行することが可能になる

ということが挙げられています.

使用例として,勤怠管理システムがあげられます.(個人的には会社にこれを導入したいなーって思っています)あらかじめ決めれれた雇用契約条件に対して対価をスマートコントラクトで支払いを行うことが可能です.管理なども透明性が高く,既存の人事システムを一新できるポテンシャルを持っています.

[参考]
- ブロックチェーンアプリケーション開発の教科書

9. Ethereumの仕組み

Ethereumのblockchainにはトランザクションに基づいたState(状態)という概念があります.始まりの状態(genesis state)から新しいトランザクションが生成される度に状態遷移が行われます.
Ethereumネットワーク全体の状態を表すWorld Stateは,Ethereumネットワークを構成するAccountの状態Account Stateによって表現される.World Stateは,全てのアカウントのマークル木のルートとして成り立っています.

引用元: https://raw.githubusercontent.com/ethereumbuilders/GitBook/master/en/vitalik-diagrams/chaindiag.png

World Stateを表す上位概念のブロックはBitcoinなどと同じ構造を持っています.上図の右下部分にあるブロックは,accountであり,その構造などは後述します.

9.1 Account

Ethereumには状態(State)を表現するアカウント(accounts)オブジェクトから構成されます.

引用元: How does Ethereum work, anyway?

Ethereumのアカウントは状態を表すための4つのフィールドをもちます.

1. nonce: 各トランザクションの処理が一度きりであることを確約するためのカウンター.トランザクションを発信したトランザクション数を表す
2. ether balance: アカウントの所持している残高をwei(ether通貨の最小単位)で表したもの
3. contract code (if present): EOA(後述)の場合はから文字のハッシュ.コントラクトアカウントの場合はアカウントが持っているコードのハッシュ
4. strage (if present): アカウントが持っているデータのマークル木のルートハッシュ

そして,Ethereumには2つのアカウントがあります.

1. EOA(Externally Owned Account)
2. コントラクトアカウント(Contract Account)

引用元: How does Ethereum work, anyway?

1. EOA

Ethereumを利用するユーザーのアカウントです.EOAは秘密鍵の署名でコントロールされており,コードは持ちません.ユーザーはEOAを通してEthereumネットワークとやり取りをすることができます.EOAがコントラクトアカウントと違う点は,EOAおよびコントラクトカウントの「双方」にprivate keyを用いてトランザクションを作成することで,メッセージを送ることができることです. EOAから他のEOAに対しては,「価値」をメッセージとして送るトランザクションを作れます.EOAからコントラクトアカウントに対しては,コントラクトアカウントが持っているコードを実行するようなトランザクションを作ることができます.

2. コントラクトアカウント

自身のコントラクトコードにより管理されるアカウントです.このコードがいわゆるスマートコントラクトとして機能します.コントラクトアカウントは直接自分でトランザクションを作ることができませんが,EOAから受け取ったトランザクションに基づいて他のコントラクトアカウントに対するインターナルトランザクションを生成することができます

[参考]

- トランザクションレベルで理解する。イーサリアムの具体的な仕組みを解説
- How does Ethereum work, anyway?


9.2 Message & Transaction

トランザクションは,以下の要素を含みます.


- to: メッセージの受領人
- v,r,s: 送信者を特定する署名
- value: 送信者から受領人へ送られるetherの量
- data: オプショナルデータフィールド(署名付きデータパッケージ)
- gasLimit: トランザクションの実行にかかる計算のステップ数の最大値
- gasPrice:送信者が支払う、1計算ステップあたりの手数料
- nonce: a count of the number of transactions sent by the sender

メッセージは,以下を含みます

- メッセージの送信者 (implicit)
- メッセージの受信者
- メッセージと一緒に送信されるetherの量
- オプショナルデータフィールド
- STARTGAS 値

9.3 Gas

Ethereumでは,手数料を必要とすることはBitcoinと変わらず,EtherというEthereumのビルトイン通貨が用いられています(これがいわゆるみなさんがよく聞く仮想通貨としてのEthereumです).Bitcoinと異なる点として,Ethereumは全ての処理がトランザクションであり,トランザクションの計算を実装させるために必要な燃料に相当するGasが必要となります.

- STARTGAS: 燃料の上限
- GASPRICE: 計算ステップあたりにマイナーにはらう手数料

引用元: How does Ethereum work, anyway?

ではここで,Gasがどのように消費されトランザクションが行われているか見てみましょう.

- Gas(燃料)が十分定義されている場合

手数料としてminorに支払われます.余った分はrefundされます.

引用元: How does Ethereum work, anyway?

- Gas(燃料)が不足していた場合

トランザクションは無効となり,Gasも返却されません.これは不必要な計算や非効率な計算をプラットフォームのなかで排除する動機を与えるものです.

引用元: How does Ethereum work, anyway?

[参考]
- Etheruem white paper in Japanese
- 技術者向け Ethereum(イーサリアム)の基礎知識
- How does Ethereum work, anyway?

9.4 GHOST protocol

Ethereumのblockchainは,GHOST(Greedy Heaviest Observed Subtree) protocalによってメインチェーンを決定しています.

GHOSTにおいて、マイニングにより最も多く計算が蓄積されているチェーンをメインチェーンとしているのです。ここで「最も長いチェーン」ではなく「最も多く計算が蓄積されているチェーン」をメインチェーンに選択しているのは、イーサリアムのブロック生成時間が平均15秒とかなり短いからです。(ビットコインは約10分です。)
引用元: 【図解】ブロックチェーンレベルでのイーサリアムの理解

高速(15sec)なブロック生成を可能にしていますが,

- ブロックチェーンがフォーク(分岐)しやすくなってしまう(多くのユーザーが同時にマイニングに成功する可能性が高いため)
- マイニングプールの寡占化が進んでしまう
という問題があり,GHOST protocolによってその問題の解決を試みています.

フォークの問題を解決するために,メインチェーンから派生している ommer (uncle)のブロックに費やされたハッシュパワーも加味してメインチェーンを決定しています.こうすることで,フォークしたブロックもメインチェーンのセキュリティに寄与しています.

寡占化の問題を解決するために,ommer(uncle & nephew)のブロックにもマイニング報酬を与えることで,マイナーがommerを生成するインセンティブを与えています.

引用元: 【図解】ブロックチェーンレベルでのイーサリアムの理解

ただし,Ethereumは将来POSに移行することが発表されており,現在の仕組みからは変更されることが予想されます.

[参考]
-【図解】ブロックチェーンレベルでのイーサリアムの理解
- How does Ethereum work, anyway?

9.5 Block

Ethereumのブロックは,
1. the block header
2. information about the set of transactions included in that block
3. a set of other block headers for the current block’s ommers.
によって構成されています.

引用元:【図解】ブロックチェーンレベルでのイーサリアムの理解

ヘッダー部分は,以下のような構造をしています.

- parentHash:親ブロックヘッダーのハッシュ値
- ommersHash:ommerのリストのハッシュ値
- beneficiary:マイニング報酬を得るアドレス
- stateRoot:stateのマークル木ルートのハッシュ値
- transactionsRoot:トランザクションのマークル木ルートのハッシュ値
- receiptsRoot:レシートのマークル木ルートのハッシュ値
- logsBloom:ログ情報のブルームフィルタ(ブルームフィルタとは、確率的な探索フィルタで欲しいパターンを正確に特定しなくてもパターンを記述できる方法です)
- difficulty: マイニング難易度
- number: ブロックのインデックス番号(genesisブロックから何番目のブロックか)
- gasLimit:ブロックのgas制限(含められるトランザクションの制限にあたります)
- gasUsed:トランザクションで使われたgasの合計
- timestamp:unixタイムスタンプ
- extraData:このブロックに関する参照情報
- mixHash:nonceと組み合わさって十分にPoWの計算がされたことを証明
- nonce: ナンス。mixHashと組み合わさって十分にPoWの計算がされたことを証明
引用元:【図解】ブロックチェーンレベルでのイーサリアムの理解

この記事が気に入ったらサポートをしてみませんか?