今週のざっくばらん
スマートコントラクト
私はこれまで、NFTを活用した "Play to Earn" ゲーム等に関しては否定的な発言をして来ました。暗号通貨は、これまでのテクノロジーと違って、「お金」が直接的に絡むイノベーションであるため、そこで一儲けしようという人々の欲が渦巻く、「人の欲につけこんだ汚いビジネス」が先行してしまっているのです。
とは言え、頭から否定していては、問題点の本質に迫ることも難しいし、その中から良いものを見つけ出すのも難しいので、私なりに勉強を開始しています。
その一つが、Ethereum のスマートコントラクト用の記述用に作られた言語 Solidity です。
Ethereum は、Bitcoinと同じく「ブロックチェーンを活用した暗号通貨」の一つです。ブロックチェーンとは、下の図のように、ブロック上のデータがチェーンのように繋がったデータ構造のことです。
ブロックチェーンの役割は、ウォレット(お財布、もしくは口座)間の一連の「取引」を記録することであり、会計の世界で「取引台帳」と呼ばれるものに相当します。
例えば、ウォレットAとウォレットBとの間で、特定のNFTが0.1ETH (ETHは、Ethereum上の通貨の単位)で取引された(つまりAさんがBさんからNFTを0.1ETHで購入した)とすれば、ウォレットAからウォレットBに0.1ETHを移動ウォレットBからウォレットAに特定のNFTを移動
という二つの操作が、同じブロックの中に記述されることになります。
「同じブロックの中に」という部分が重要です。ブロックチェーンの変更は、かならず「ブロックの追加」という形で行われるため、同じブロックの中に記述された二つの操作は切り離して実行されないことが保証されるのです。
これだけならば、紙の台帳でも十分に出来る話ですが、より複雑な取引を、自動的に処理するために導入されたのが「スマートコントラクト」という技術です。
例えば、特定のアートと紐づいたNFTが売買された場合、そのアートを作ったアーティストに手数料が10%支払われる場合を想定します。
その場合、上と同様の取引は、アーティストの持つウォレットをウォレットCとすれば、ウォレットAからウォレットBに0.09ETHを移動ウォレットAからウォレットCに0.01ETHを移動ウォレットBからウォレットAに特定のNFTを移動
となりますが、これを(人手を介さずに)自動的に実行するプログラムがスマートコントラクトなのです。
スマートコントラクトのコンセプトを最初に提唱したのは、Nick Szaboという科学者です(彼は、1998年にそれを Bit Gold という暗号通貨とともに発表しました。そのため、彼こそが Bit Coin の発明者なのではないかという憶測が広がりましたが、本人は否定しています)。
通常の取引では、契約書(コントラクト)に記述された条件通りに取引をするために莫大な手間をかけていますが(CDが一枚売れた時に、小売店・卸売業者・レーベル・演奏家・作詞家・作曲家などに売上を分配する手間を考えてみてください)、それをソフトウェアにより自動化することにより、手間を減らすだけでなく、契約違反そのものを不可能にしてしまう、というのがスマートコントラクトの発想です。
初代暗号通貨である Bitcoin もスマートコントラクトの仕組みがありましたが、非常に限定的で、その上でさまざまなアプリケーションを作ることは不可能でした。そこに目をつけたVitalik Buterinが、より強力なスマートコントラクトの機能を持つ Ethereum を発表しました。
Ethereumのスマートコントラクトは、Ethereum Virtual Machine (EVM) と呼ばれる仮想マシン(VM)の上で動くプログラムです。
「仮想マシン」という言葉を使うとなんだか難しそうですが、「特定のルールに従って動く仮想的なコンピュータ」のことで、現代ではあらゆるところで使われている技術です。皆さんが普段使っているブラウザーも、ルールに基づいて記述されたウェブページを表示し、実行する「仮想マシン」です。
ブロックチェーン上の仮想マシンは、ノードと呼ばれるマイニング・コンピュータの上で動きます。マイニング・コンピュータとは、インターネット上のブロックチェーンを健全に運営するための計算をするコンピュータですが、その報酬の仕組みが「金などの発掘(マイニング)」に似ているため(運と努力の両方が必要な点が似ています)、マイニング・コンピュータと呼ばれるのです。
実際にいくつぐらいのノードが世の中で稼働しているかは誰も把握していませんが(そこがブロックチェーンの面白いところです)、Ethereumの場合だと、常に数千から数万のノードが稼働して、マイニングをし、スマートコントラクトを実行しています。
ブラウザーの場合、それぞれのパソコン上で動く仮想マシンは、異なる「状況」にあります。開いているウェブページも違えば、そのページの中での操作も異なるからです。
仮想通貨の場合、同じブロックチェーン上にあるノードの仮想マシンは、基本的にすべて同じ状態に保たれます。
この記事は約
NaN 分で読めます(
NaN 文字 / 画像
NaN
枚)