kakts-log

programming について調べたことを整理していきます

What is Ethereum? を読む

概要

この記事はブロックチェーン Advent Calendar 2017 - Qiita 9日目の記事です。

Ethereumについての勉強のため、公式ドキュメントの「What is Ethereum?」を翻訳しました。
What is Ethereum? — Ethereum Homestead 0.1 documentation

ところどころ解釈が不明瞭な箇所のもありますが、ご了承ください。

What is Ethereum?

Ethereumはオープンブロックチェーンネットワークであり、ブロックチェーンテクノロジによる非中央集権的なアプリケーションを誰でも構築・利用することを可能にします。
Bitcoinのように、世界中の多くのユーザによって作られたOSSプロジェクトであり、誰もEthereumをコントロールすることはできません。
しかし、Bitcoinとは違って、Ethereumはよりフレキシブルになっています。Ethereumプラットフォーム上で新たなアプリケーションの構築は非常に容易で、Homesteadリリース(Ethereum platformの2番目のメジャーバージョン)により、 誰でもこのアプリケーションを安全に使えます。

次世代のブロックチェーン

ブロックチェーンテクノロジはBitcoinの技術基盤で、2008年に謎の多い著者であるSatoshi Namamotoによるホワイトペーパー「Bitcoin: A Peer-to-Peer Electronic Cash System」で最初にコンセプトが著されました。
他の分野におけるブロックチェーンユースケースはこのホワイトペーパーで議論されていましたが、数年後にブロックチェーンは一般的な用語として登場しました。
ブロックチェーンは全てのネットワークノードが同一のトランザクションを実行し、記録する分散型コンピューティングアーキテクチャで、トランザクションはブロックとして扱われます。
一度に1ブロックだけ追加され、全てのブロックは前のブロックとつながっていることが数学的に証明するデータを保持しています。この方法で、ブロックチェーンの分散データベースはネットワーク全体のコンセンサスのもとに保持されます。

各ユーザのトランザクションは強固な暗号により守られています。ネットワークを維持し、トランザクションを処理するノードはプロトコル内に実装された数学的に証明されたインセンティブ方式によってインセンティブが付与されます。

Bitcoinにおけるケースでは、分散型データベースは各アカウントの残高、トランザクションを表したテーブルとして使われ、トランザクションBitcoinトークンの転送を意味し、信頼できない個人間でのファイナンスを促進します。
しかしBitcoinが技術者の注目を集める中、新規のプロジェクトでBitcoinを価値の転送以外の用途で使いはじめました。
これらの多くはBitcoinプロトコルの改良と、新機能を追加したalt-coinとして登場しました。
2013年後半、Ethereumの発明者であるVitalik Buterinは、任意の複雑な計算を実行するために再プログラムする機能を備えた単一のブロックチェーンが、これらの多くの他のプロジェクトを包含することを提案しました。

2014年、EthereumのファウンダーであるVitalik Buterin, Gavin Wood, Jeffrey Wilckeがより一般的であり、fully trustlessなスマートコントラクトプラットフォームを実装するという野望をもった次世代ブロックチェーンの開発に取り掛かりました。

Ethereum Virtual Machine

Ethreumはプログラム可能なブロックチェーンです。ユーザに最初から定義されたいくつかのオペレーションセットも提供し(例として、Bitcoinトランザクション)、Ethereumはユーザが独自のオペレーションを作ることを可能にします。
これにより、Ethereumは暗号通貨の他に、様々なタイプの非中央集権的ブロックチェーンアプリケーションのプラットフォームとなります。

Ethereumは狭義では、非中央集権的なアプリケーションのプラットフォームを定義する一連のプロトコルを意味します。 その中心たるものはEthereum Virtual Machine(EVM)と呼ばれ、任意の計算量をもつアルゴリズムを実行できます。
コンピュータサイエンスの用語でいうと、Ethereumは「チューリング完全」です。
開発者はJavascriptPythonをモデルとしたプログラミング言語でEVM上で動くアプリケーションを作ることができます。

他のブロックチェーンと同様に、Ethereumはpeer-to-peerのネットワークプロトコルを含みます。
Ethereumブロックチェーンデータベースはネットワークに接続された複数のノードにより、維持・アップデートされます。
ネットワーク内の全てのノードはEVMを実行し、同一のコードを実行します。これにより、Ethereumはときおり、"World Computer"として表現されます。

このEthereumネットワーク全体を通じて行われる巨大な並列計算は、計算を効率化されていません。
実際には、このプロセスはEthereumにおける計算をさらに遅くさせ、従来のコンピュータに比べてより高負荷になります。
むしろ、すべてのEthereumノードはブロックチェーンを通じたコンセンサスの維持のためにEVMを動かします。
非中央集権的コンサンサスは、Ethereumシステムの究極的なレベルの耐障害性、ゼロダウンタイムを保証し、ブロックチェーンに保存されたデータを永久に変更不可にし、検閲への耐久性も実現します。

Ethereumプラットフォームそれ自体は機能のない、価値のないものです。 プログラミング言語と同様に、そのシステムをどう使われるかは起業家や開発者に委ねられています。
しかし、1つ明らかなことは、あるタイプのアプリケーションはEthereumの機能によって、他のタイプよりも利益を得ることができるということです。
特に、Ethereumはネットワーク内のpeer間同士の直接的なやりとりと、グループ内の協調的行動の促進を自動化するようなアプリケーションに適しています。
例えば、peet-to-peerでの市場を運用したり、複雑な金融契約の自動化するアプリケーションなどがあげられます。
Bitcoinは個人間での通貨のやり取りを銀行や証券会社などの中間業者抜きで行えるようにしました。Ethereumの影響は、もっと大きなものになりえます。
理論的に、金融上のやりとりや計算処理は、Ehereum上で実行されているコードにより自動的かつ確実に実行できます。
金融系のアプリケーションだけでなく、信頼、セキュリティー、永続性が重要とされる全ての分野でEthereumプラットフォームは大きな影響を及ぼします。

How does Ethereum work?

Ethereumは、Bitcoinユーザに馴染みのある多くの機能を組み込んでおり、それらの機能に修正を加えたり、独自機能もあります。

Bitcoinブロックチェーンが純粋にトランザクションのリストである一方、Ethereumの基本単位はアカウントになります。
Ethereumブロックチェーンは全てのアカウントの状態をトラックしており、すべての状態遷移はアカウント間での価値と情報の移転を意味します。

外部アカウント(Externally owned accounts - EOSs) これらはプライベートキーによってコントロールされます