読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

Ethereum によるスマートコントラクトという謎の概念について調べている

ブロックチェーン 仮想通貨 Ethereum AdventCalendar

仮想通貨・ブロックチェーン Advent Calendar 2016 3日目の記事です。

最近 Bitcoin 等のブロックチェーン技術について興味があり黙々と情報収集をしている。(ついでにお小遣い目的で売買にも手を出している)

仮想通貨の Bitcoin およびオルトコインについて

皆さまおそらくふわっとご存知のとおり、仮想通貨は Bitcoin 意外にも Litecoin だの Monacoin (日本発祥) だの Dogecoin (アイコンが最高) だのいろいろある。これらは一般的にオルトコイン (AltCoin = Alternative Coin) と呼ばれており、この世には実に数百種類ものオルトコインがある。

f:id:kobake:20161203225714p:plain:w100 f:id:kobake:20161203225718p:plain:w100 f:id:kobake:20161203225721p:plain:w100 f:id:kobake:20161203225726p:plain:w100

どれもこれも(というと若干主語がでかいのだが)だいたいの作りは Bitcoin のソースコード をフォークしてちょっと設定値を変えたりしたようなものであり、そんなわけで新しいコインを作るのは難しくなく(ただし普及させるのは難しいが)、そんなわけで前述のように大量のオルトコインが存在する(興味本位でみんな作りまくっちゃったんだろう)。

改竄が極めて難しいブロックチェーン

オルトコインはさておき Bitcoin の技術基盤となるブロックチェーンの話に移るが、例えば Bitcoin の場合、現時点で世界中に数千のフルノードが存在する。
ルノードというのはつまり、Bitcoin のネットワークの稼働が始まった 2009年1月 から今現在までの「すべての取引情報」を保持するようなノードである。(ちなみに Bitcoin Core というソフトウェアを PC にインストールすれば誰でもフルノードの稼働を開始することができる)

「全ての(フル)ノードが全取引内容を記載した台帳をそれぞれ保持している」という表現がよく例えとして言われるが、まさにその通りの仕組みである。

詳しい仕組みの解説は割愛するが、この取引記録(ブロックチェーンという形で保持される)を改竄することは極めて難しい。世界中に存在するノードの51%程度のマシンパワーを牛耳れるほどの資産力がありさえすれば実は改竄も可能なのだが、そんなことは現実的とはいえないため実質かなりの安全性が担保されている。

ブロックチェーンはデータ集合に過ぎない

さきほど数百のオルトコインが存在すると述べたが、所詮「コイン」に過ぎない。世界中に円だのドルだのユーロだの様々な通貨があるのと同じように、仮想通貨にもいろんな単位の通貨がある、それだけの話。

ただ、その中で異彩を放つ Ethereum というモノがある。これをオルトコインと称して良いのかよく分からないが、とりあえず Bitcoin と同じようにブロックチェーン技術を利用した代物であるという点は共通である。

f:id:kobake:20161204000323p:plain:w200

他のオルトコインと違うのは、タイトルにも掲げた「スマートコントラクト」を実現することに主眼があてられている点である。コントラクト、つまり契約。契約データをブロックチェーン上に記録する。

そう、ブロックチェーンというのは単にデータの集合に過ぎないため、何を埋め込んでも良いのである。Ethereum は「コントラクト」という形で契約情報をブロックチェーン上に記録する

改竄不能な契約情報をブロックチェーン上で管理する

f:id:kobake:20161203233020p:plain

  • Ethereum ではいわゆる人間(や組織)的なものを示す「アカウント」、および、契約的なものを示す「コントラクト」が存在する。
  • Ethereum 上では ether という単位の通貨が存在し、アカウントは ether を所持することができる。
  • アカウントはコントラクトを作成することができる。コントラクトはスクリプトである。
  • コントラクトはスクリプトであり、「状態」を持つことができる。この状態というのはスクリプト上で定義された変数により管理される。
  • アカウントがコントラクトを作成するためにはいくらかの ether を消費する。
  • 他のアカウントがコントラクトの状態を変更することができる。状態の変更にもいくらかの ether を消費する。
  • 特定の人間(または組織)しかコントラクトの状態を変更できないようにしたければ、コントラクトのスクリプトを「そのように組めば」良い。
  • 各アクションで消費された ether は採掘者に支払われる。これはブロックチェーンのネットワーク維持のために必要な対価である。

「状態の変更」は「改竄」ではないことにご注意願いたい。
「状態の変更」はいわゆるバージョン管理システムでいうところの「コミット」に該当するものだと考えれば良い。すべての変更記録は参照可能である。

実践

概念ばかり理解したつもりになったところで役には立たないので実際に Ethereum を「使って」みようと思う。多くの人間にとって「概念を理解したつもり」になることは簡単であっても「本当に仕組みを理解できたと実感」することは極めて難しい。

大抵の場合、実践の段階になって自身の理解の誤りに気づき実践を繰り返しながら理解を修正していく。

ということで Ethereum を実際に使うためのノウハウを以下サイトにまとめ始めた。随時更新していく。

ethereum.clock-up.jp

自分自身もまだ勉強中のため理解がかなり曖昧なのだが今後に渡って実践とアウトプットを繰り返しながら理解を深めていきたい。

参考サイト

以下のサイトが大変参考になった。感謝。

});