hero-rinのブログ

某会社で某システムの運用、開発をやっているただのおじさん

AWSのサービスを理解するーブロックチェーンカテゴリ編ー(前半)

AWSサービスを理解しよう!

何か久しぶりなような?AWSの製品一覧も日々更新されているようなので、それも見つつ1つ1つ書いて行こうと思います。今回は"ブロックチェーン"です。

カテゴリ:ブロックチェーン

AWSが提供するブロックチェーンサービスになります。今後なんですが、一度に書く分量も段々と増えて来ていることから前後半と分けて前半は其の物の内容説明、後半はAWSサービスの内容説明として行きたいと思います。今回は前半ということで、プロックチェーン自体についてまとめた内容を書いていこうと思います。では改めて、ブロックチェーンとは何なんでしょう?自分もいまいち分かってないので改めて調べてみました。

ブロックチェーンとは

取り合えずWikipediaの引用を載せときます。

ブロックチェーン(英語: Blockchain、ブロックチェインとも)とは、分散型台帳技術、または、分散型ネットワークである。ビットコインの中核技術(サトシ・ナカモトが開発)を原型とするデータベースである。

また、技術的概要でこんなことが書かれています。

ブロックチェーンは、「ブロック」と呼ばれるデータの単位を生成し、鎖(チェーン)のように連結していくことによりデータを保管するデータベースである。

正直、上の引用だと全然ピンとこなかったので、さらに調べたところ自分の理解は下のような感じでした。

文章で書くと分かり辛いので図に頼るとこんな感じです。

f:id:hero-rin:20190513010100p:plain

データの持ち方部分が、”手法の一種”として細分化されたところなのだと思います。

あとWikipediaの引用には『または、分散型ネットワーク』とありますが、分散型システムのネットワークは分散ネットワークなので紛らわしいからこの文章いらない感じがしました。

ここでは、分散ネットワークの話はちょっと置いといて、分散型台帳技術とブロックチェーンの仕組みの話を記載して本題のAWSサービスの話をして行きたいと思います。

分散型台帳技術

Distributed Ledger Technology (DLT)。データを不特定多数の場所で保管し特定の管理者なしに参加する人達が同じデータを共有する、分散して台帳(データ)を管理する技術。台帳と書いてあるのでついつい紙の売り買い帳簿を連想してしまうのですが、台帳=データですね。もうちょっとイメージしやすいように例を箇条書きしてみました。

  • まず、あるルールで定義した台帳*1を不特定多数の参加者が用意する
  • 各参加者が台帳にデータを書き込む
  • 各所にある台帳をPeer to Peerネットワークを使い共有

雑な言い方をすると、データを分散して持ちネットワークで共有すれば分散型台帳技術かなと。

ブロックチェーンの仕組み

『データをブロックという単位に分けてチェーンというもので繋ぐ技術』なんですが、ビットコインを例に少し具体的な内容で理解していこうと思います。

ビットコインは大きく分けて下の3つで構成されています。

ナンス値とは?

また新しい用語が出てきました。これはワンタイムトークンともいうんですが、簡単にいってしまうと”1回限定の使い捨てな値”です。ビットコインの場合は、ブロックが作られるたんびに毎回発行される32ビットの半角数字となります。

この3つの要素(取引履歴&前のブロックのハッシュ値&ナンス値)からそのブロックのハッシュ値が生成され、そのハッシュ値が次のブロックに反映されてチェーンができ上がる。この仕組みがビットコインブロックチェーンになります。

f:id:hero-rin:20190513011127p:plain

ビットコインには、もう1つ"マイニング"という重要なワードがあります。

マイニングとは?

マイニング(mining)直訳すると採掘ですね。この作業をして1番最初に正解にたどり着いた人には報酬が与えられることから、まさにお宝を採掘するという作業(処理)になります。具体的にどんなことを行うかを下に書いていきます。

マイニングは、新しくブロックを作成する権利を得るために、1番新しいブロックにあるナンス値がどんな値かを見るける作業になります。マイニングを行う人をマイナーと言いますが、マイナーはそのブロックのナンス値を世界で1番速く見付けるという作業をし、それが成功したら次の新しいブロックを作成して報酬をもらうという流れになります。

ナンス値はどうやって見付ける?

上の"ナンス値とは?"の部分でも書いたんですが、ビットコインは、3つの要素からハッシュ値が生成されます。そのハッシュ値には、"ある条件"がありマイナーはその"ある条件"になるようなハッシュ値を生成するためにナンス値をいろいろ組み替え、条件を満たすようなハッシュ値を世界で1番速く生成することができれば、成功となります。では、その”ある”条件"とは何でしょう?

"ある条件"=採掘難易度

採掘難易度(Difficulty)とは、ビットコインの場合はナンスを見付ける難易度になります。この採掘難易度の計算方法については、数種類の方法があるようですがビットコインではPOWというアルゴリズムを使っています。

閾値の条件は、マイニングの作業が10分に1回成立するような閾値を設けて、過去2週間の平均グロック生成時間が10分より長いと閾値を下げて簡単にし、10分より短ければ閾値を上げて難しくする。ということをしていて世の中のPCスペックが上がっても担保できる手法をとっているようです。

マイニングざっくりまとめ

ざっくりまとめると『マイニングの作業とは、この採掘難易度の閾値より小さい値のハッシュ値を探し出す作業』で、『成功すると報酬がもらえる!』となります。

条件に合うハッシュ値になるまでナンス値を組み換えまくる単純作業をPCは行っているわけです。

余談

もっと深掘りしたい人のためにちょっとキーワードを載せておきます。

コンセンサスアルゴリズム

上で、採掘難易度のアルゴリズムと書きましたが、正しく表現するとコンセンサスアルゴリズムと言うらしいです。そこでもうちょっと勉強したい人のためにキーワード情報を載せておこうと思います。

Consensus algorithm。直訳すると合意方法です。分散型台帳技術などのデータを分散させるような技術は、基本データを管理する管理者がいないため全体のシステムを担保するためそのデータが問題ないか合意を取る仕組みが不可欠になります。

管理者がいて管理者が「OK!」と言えばそれが"正しい行い"とみなされるんですが、この技術では管理者がいないので『これだけやれば、それは"正しい行い"だ!』と立証する方法を編み出した感じです。

手法は複数あるので、代表的なものを記載しておきます。

手法 利用している仮想通貨(抜粋)
PoW BTC/BCH/LTCなど
PoS ETH/ADAなど
PoI XEMなど
DPoS LSK/EOSなど
PoC XRP/ZIPなど

各種ブロックチェーン

ブロックチェーン自体にもいろいろあるみたいです。少し情報を載せておきます。

種類 管理者 承認権限 代表サービス
パブリック なし なし Bitcoin
プライベート 単独組織管理 あり※ mijin
コンソーシアム 複数組織管理 あり※ Ripple

承認権限とは、承認する人(団体・会社など)が存在するということで、プライベートは1人、コンソーシアムは複数人の承認者が存在するという意味です。パブリックの"承認権限:なし"は、参加するすべての人が承認者となります。

※."承認権限:あり"のブロックチェーンは、パーミッションブロックチェーンと呼ばれています。

最後に一言

毎週アップが難しくなりつつある&ちょっと長ったらしくなって来た感もあるので、今回みたいに切り分けられるところがあれば切り分けてアップしたいと思います。なので、次はブロックチェーン後半です。

それでは、今回はここまで!

*1:容器は、DBでもNoSQLでもテキストでもOK

*2:Number used onceの略