たなかこういちの資料室

システム開発に携わる筆者があれこれ試したことや学んだことについてのまとめ

ビットコインとブロックチェーンについて、その2(スマート・コントラクト、そしてEthereum)

(※その1からの続きです。)
 
※私の理解を記しているので、誤りやあまり正しくない説明が含まれている可能性があります。
 
仮想通貨“ビットコインの新規発行メカニズムとその目的
 
ビットコインには、前回記事では全く触れなかった、極めて重要な機能性があります。「マイニング」と称される、報酬制度であり、かつ仮想通貨“ビットコイン”の唯一の新規発行メカニズムです。
 
ビットコインでは、下記3つの特性が、相互に支え合うような極めて絶妙な(あるいは巧妙な)関係性を構成していることで、システムが成り立っています。
 
(a) ビットコインのネットワークは、仮想通貨“ビットコイン”の決済システムである。
(b) 仮想通貨“ビットコイン”は、マイニングの勝者への報酬としてのみ新規発行される。
 
ここで、「マイニング」および「マイニングの勝者」について説明します。前回記事で説明した、ブロックチェーン伸長に必要なハッシュ値に対する入力値探しという演算のことを、「マイニング」と称しています。そして平均10分に1つのノードだけが正答を得られますが、その正答を探し当てたノードのことを「マイニングの勝者」と称しています。なぜ「勝者」なのかというと、実は、正答を探し当ててブロックの伸長を実施できたノードに対して、報酬として、新規ビットコインが発行される仕組みが組み込まれているからです。そしてこれが唯一の新規ビットコイン発行メカニズムです。
 
Satoshi Nakamoto氏の原論文には、「6. Incentive」という章があり、そこに下記の記述があります。
 
"The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended."
 
要は、ビットコイン新規発行メカニズムは、「入力値を探し出したノードには報酬を出すので、みんながんばって正答をみつけてブロックチェーンの保全に勤しんでね」という、ブロック伸長を実施することに対する動機付けメカニズムを兼ねている、というよりも、ビットコイン新規発行メカニズムとブロック伸長に対する動機付けメカニズムは一体的なのです。
 
何故このような仕組みを組み込んでいるのでしょうか。
 
ビットコイン、即ちブロックチェーンによる取引の正当性保証は、
 
・ネットワーク全体が稼働し続けること
・大半の参加者は一般に良心的であろうということ
 
を前提に、確率的に達成しています。確率が十分な確かさとなる為には、ネットワークがライブに動き続けていることが決定的な条件となっています。つまり、ビットコイン・ネットワークは、より多くの参加者が、絶え間なくマイニングし続ける(=ブロックチェーンが伸長され続ける)必要があるのです。
 
ビットコインのネットワークが生き続けるためには、ネットワークがクラッキングに対して安全であるためには、マイニングされ続け、ブロックチェーンは伸長され続けられなければならないのです。ブロックチェーンが伸長され続けるためには、善意のネットワーク参加者が、相当なCPUパワー、つまるところ電気代を費やしながら、 入力値探しをし続けてくれる必要があります。そこで、ネットワーク参加者が電気代を費やすような動機付けを行った、訳です。
 
ここで最後3点目の特性を示します。
 
(c) マイニングされ続けることが、ビットコインのネットワーク存続条件であり、仮想通貨“ビットコイン”の価値保全条件である。
 
スマート・コントラクト
 
ビットコインは決済のシステム、通貨の取引システムとして構築されています。ところが、ブロックチェーンなどの基盤技術自体にとっては、扱う電子データの内容は、実のところどのようなものでも構わず、論理的な記述方式が設計できさえすれば、どのような「取引」であっても、取り扱える(はずな)のです。
 
そうして「ビットコイン」を越えて、取引一般、契約一般をP2P環境下で扱う試みが進行しています。
 
ビットコインにおける決済取引は、次のような論理形式を持ちます。
 
「甲は乙へコインをn単位引き渡す」
 
これを、次のような感じに一般化します。
 
「甲は乙へXをn単位引き渡す」
 
任意の対象物クラスXを扱えるようにします。これにさらに、例えば次のような感じに論理演算を導入します。
 
「甲から乙へのXのn単位の引き渡しが成立しているならば、乙は甲へYをm単位引き渡す」
 
XやYが電子的なものであれば、ビットコイン同様、その執行がされたか否かは、完全に検証可能です。XやYが物理的なものの場合はIoTとの連携が想定されます。
 
このように、一般化した取引≒契約を扱おうという試み全般を「スマート・コントラクト」と称します。現在の「スマート・コントラクト」の文脈では、下記3つの技術要素の統合が論じられます。
 
(a) 業務上の取引や契約を、数理論理学の道具などを用いて形式的に記述する方式を考案すること
(b) (a)を電子署名の連鎖で保全し、共有し、検証可能な運用環境を実現すること
(c) (b)を、第三者機関に依存しないP2P環境で実現すること
 
スマート・コントラクトの考え方自体(※主に(a)や(b)について)は'90年代より議論されていたようですが、ここにきて、ビットコインが提供する“全く新しい取引環境の実現”というビジョンと、ブロックチェーンという契約・取引データの保全と共有に関する実証済みソリューションに触発され、スマート・コントラクトを実用に供しようという動きも改めて活性化してきた様子です。
 
Ethereum
 
ブロックチェーン技術を前提とした“ポスト・ビットコイン”プロジェクトが次々立ち上がっています。その中で、「スマート・コントラクト」をスコープにしている最も野心的なプロジェクトがEthereumである、という位置付けです。どういった点で最も野心的とされるのかというと、ビットコインが「P2P決済システム」ならば、Ethereumは「P2P汎用スマート・コントラクト運用システム」です。ポイントは“汎用”、チューリング完全プログラミング言語を備えて、取引あるいは契約を扱うどのようなシステムをも構築可能、とされています。Ethereumプロジェクトの白書より引用します。
 
"What Ethereum intends to provide is a blockchain with a built-in fully fledged Turing-complete programming language that can be used to create "contracts" that can be used to encode arbitrary state transition functions, allowing users to create any of the systems described above, as well as many others that we have not yet imagined, simply by writing up the logic in a few lines of code."
 
意訳してまとめると、
 
・組み込みのチューリング完全プログラミング言語と供に提供されるブロックチェーン
・そのプログラミング言語では、任意の状態管理を伴うような「コントラクト」を記述できる
・それにより、数行のロジックで様々なP2P取引システムを構築することができる
 
"Ether"とは、かつて宇宙に遍く存在する光の媒質(媒体)として仮定された「エーテル」です。(※そいえば「Ethernet」も"Ether-"ですね。)日本語表記は「イーサリアム」とするのが多そうです。
 
※ネィティブの発音は次の動画を参考に。。
 
 
Ethereumもオープンソースプロジェクトです。コアはC++、Go、Python版の実装があるようです。Ethereumが備える「チューリング完全プログラミング言語」とは、JavaScriptなようです。
 
 
※ちょっとリポジトリーのガイドが必要ですね。。
 
 
※このWikiから始めるのがよさそうです。
 
 
参考文献
 
◆以上