本ページはプロモーションが含まれています
イーサリアムとは何か、に挑むシリーズ。
第2回は、イーサリアムを第1回よりもさらに深く解説していきます。イーサリアム開発の目的と動機とは何か、ぜひWeb3.0を学んでいただければと思います。
第1回 イーサリアム(Ethereum)とは何か(1)〜その実体を知る〜
「Ethereumとは何か」の第2回になります。第1回では、Ethereum(イーサリアム)として機能する実体が「クライアント」と呼ばれるソフトウェアであること。Ethereum Yellowpaper(イーサリアム イエローペーパー)という文書にEthereumの詳細な動作原理・仕様が定められており、クライアントはこれに従って設計され、様々な実装が存在することなどについて触れてきました。
今回は、イーサリアム イエローペーパー第1章、導入の部分で述べられているイーサリアム開発の目的と動機について触れていきたいと思います。
イーサリアム開発の目的
前提知識
イーサリアム イエローペーパーは非常に形式的に、詳細に書かれています。そのため、コンピューターサイエンス関連の知識が全くないと読み進めていくのは非常に困難です。ここでは準備として、本文中に登場する聞きなれない用語について簡単な説明を行います。
トランザクション
イーサリアムに限らず、多くのブロックチェーン(技術)についての文脈で「トランザクション」という言葉は頻繁に登場します。
一般的に「トランザクション」とは、コンピューターに対して特定の動作を行うよう指示する一連の命令の内、それ以上分割することのできない個別のものを言います。
これについては、人間がやり取りする文書などを思い浮かべると良いでしょう。引越しに伴って住所変更の届け出を自治体の役場に提出しなければなりません。この時、氏名はなんであるか、生年月日はいつであるか、前住所やこれからの住所はどこであるか等々を役所に伝える必要があります。
これら一つ一つの情報のやり取りも「命令」と言うことができ、それぞれ個別で不可分であるとも考えられます。しかし、役所がこれら一連の命令を受け取るのは、届け出書類の様式に従ってそれらがまとめて記載され、しかるべき窓口で受理されたときのみです。つまり、必要事項を記入した書類の窓口への提出ひとまとまりで住所変更の「トランザクション」と言えるわけです。
トランザクションが正常に受け取られ、実行されたかどうかはトランザクションひとまとまりについて決定されるものであり、部分的に成功する、あるいは部分的に失敗するということはあり得ません。
ステートマシン
「ステートマシン」という用語は、特定の機械を指す名称ではなく、コンピューターの数学的なモデルとしての名称です。ステートマシンとしての特性を持つコンピューターは、基本的にある状態に属しており、一定の条件が満たされた場合にのみこれが更新、すなわち新しい状態に遷移します。
これもまた、先に出した住所変更の例で考えてみましょう。住所変更の手続きは大きく2段階に分かれ、元居た自治体で行う「転出」と新たに生活の本拠とする自治体で行う「転入」の手続きがあります。ここで、戸籍をステートマシンであるとし、ある瞬間の戸籍の登録内容全体を戸籍の状態、すなわち「ステート」とします。この際、「転出届の提出」、「転入届の提出」と言った「トランザクション」は別々に行われるわけですが、両方のトランザクションが正常に受理され、実行されなければ戸籍上の住所は変更されません。逆に、転出・転入の完了という条件が満たされた場合には、届け出における当人の関わる戸籍が更新され、全体として新しい戸籍の「ステート」に遷移するわけです。
このように、議論するシステム、あるいはコンピューターによってなにが「ステート」であるか、ステートが「遷移する」とはどのような事かは大きく変わります。
参照:https://developer.mozilla.org/en-US/docs/Glossary/State_machine
End-to-End(エンドツーエンド)原理
この原理は、あるシステムやサービスを構築する際、その機能をネットワークの最も終端にある装置に実装するべきであるというものです。
銀行のサービスを例にとってみましょう。2022年現在では銀行窓口をはじめとして、ATM、Webページ、アプリなどを用いて預金残高の確認や振込、引き落とし等が可能になっています。今あげた手段が銀行ネットワークの「終端」、すなわちサービス利用者が銀行ネットワークと接点を持つ地点です。「終端」はネットワークの中心にあるサーバー群が管理している情報の入出力を取り扱うのみで、これらは顧客情報・残高の管理や送金手続きといった銀行としての機能そのものを担っているわけではありません。
対して、銀行の開発提供するアプリ等が直接データの管理と送受信を行い、介入なしに顧客情報の管理や送金手続きの実行を実現した場合、エンドツーエンド原理を採用していると言えます。
参照:https://devopedia.org/end-to-end-principle
オブジェクト指向メッセージ
プログラミング言語には、言語そのものの違い(例:Python、JavaScript、Go、Rust、…)のほかに、それら言語が採用する方式の違いによる種類分けが存在します。その中でも、オブジェクト指向プログラミングという概念に基づいた言語の機能が「オブジェクト指向メッセージ送信」です。
プログラミングでは、値を保存する変数や定数とそれらを集合体として形式化したデータ構造、そしてそれらを用いて計算やデータに対する処理を行う関数などが登場します。これらをひとまとまりに組み合わせたものを「オブジェクト」と呼んで取り扱うことがあり、オブジェクト間でメッセージをやり取りすることによって処理を実行することがあります。
この際扱うメッセージは、主に4つのパートで構成されています。
- メッセージを受信するオブジェクトを特定する情報
- 受信者が実行するコード
- 実行コードに引き渡す値
- 実行結果の出力値
参照:https://atomicobject.com/resources/oo-programming/messaging
イーサリアム開発の動機
イーサリアム開発における最も重要な目的は、ネットワーク上の他の対象を信頼することが困難なエンドユーザー同士が、合意形成を試みて行うトランザクションを容易にすることです。
現代においてインターネットは世界中に普及し、物理的な障壁を越えて人々がネット上で接続できるようになりました。しかしながら、物理的障壁の克服は完全なものには至っていません。今でも山間部などの僻地では電波強度や通信速度が不足し、平等な環境は実現されていません。また、ある2地点間に大きく隔たりが存在する場合、十分な環境が整備されていても通信にはラグが生じることがあり、これはシステムに大きな影響を与える可能性があります。
物理的要因のみならず、経済的理由や人的理由も障壁となることがあります。都市部や首都圏からアクセスすることで地理的障壁は回避できても、回線や通信速度の確保には相当の出費を伴います。加えて、スパムやDoS攻撃を想像すると理解しやすいように、ネットワーク上の接続先が期待通りの動作や悪意に基づかない動作をするという保証は必ずしもありません。
イーサリアムプロジェクトは、あらゆるトランザクションベースのステートマシンの概念が適用されうる汎用的な技術の開発を試みるものです。また、これまで主流ではなかった、信頼性を備え、オブジェクト指向メッセージ送信に基づいたコンピューター処理の概念に基づいたソフトウェアを開発するための極めてよく統合されたEnd-to-End(エンドツーエンド)システムを提供します。
これにより、イーサリアムユーザーが考え得る結果とそれが得られる過程について絶対的な信頼をもってネットワーク上のいかなる対象とも相互に関与できるシステムを実現することを目指しています。
まとめ
ここまで見てわかるように、イーサリアムとはその仮想通貨としての人気に反して、極めて技術的な側面から、既存のネットワークテクノロジーに対する代替策として開発が進められているプロジェクトなのです。
しかし、イーサリアムに実装されている技術や理論は全く新しいと言うわけではなく、Bitcoin(ビットコイン)を含むいくつもの先行研究にもとづいて形作られたものです。
次回の記事では、実際に使用されたり参考とされたりした理論や技術の実例を紹介しながら、イーサリアム開発にある背景についてさらに触れていきます。
続きはこちら↓
第3回 イーサリアム(Ethereum)とは何か(3)~DworkとNaorのアイデア~
スポンサー