WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

もやもやブロックチェーンが理解できる!のメモその1: ブロックチェーンとは

f:id:yoshiki_utakata:20180125112845j:plain

2017年1月15日、以下のイベントに参加してきました。

connpass.com

ブロックチェーン、勉強はしたいとは思いつつもなかなか機会に恵まれませんでしたが、いい機会でしたので参加してきました。そして結果としては非常にためになりました。

今回は、最初に発表されました、IBMの山下さんの発表を効きながら僕がとったメモをまとめておきます。

山下さんは「ブロックチェーンのビジネスバリュー」と題しまして、ブロックチェーンビットコインのお話をされました。このお話の最終目標としては

  1. ブロックチェーンは何なのかを理解する
  2. ビットコインの話をされた時に、これは「ブロックチェーン」の話なのか、「ビットコイン特有」の話なのかを理解できるようになる

ところかと思います。

メモ

何故ブロックチェーンが難しいと考えるか

実はビットコインの基礎技術は、非常に古い技術である。 そして説明するのがめんどくさい。 あまりかっこよくもない。 故に皆説明を省いたりする。

また、ブロックチェーンビットコインのイメージが強いが、実際そうではない。ビットコインみたいに「分散」していなきゃいけないイメージがある。

ビットコインは可能性に満ちているが、基礎技術や機能、非機能、特徴を理解してない人は何に使っていいのか分からない。

今回は基礎的な部分をやりたい。

「中央集権型」と「P2P分散管理型ブロックチェーン

扱うのは両方トランザクション

中央集権だと、そのサーバーが壊れたり会社が倒産したらなくなってしまう。

P2Pの方が、分散しているので全体が止まることが少ない。かつ不正会計もしづらい。

ではP2Pの方が良いように思えるが、どこが難しいのか。トランザクションまわりが複雑。

  • PCごとに時計が(秒とかミリ秒の単位で)違ったりする。NTPとか使っていても微妙にズレる。時間を完全に信用するとトランザクションの前後が入れ替わったりする。
  • ロックするデータも分散している。いったいどれをロックしたらいいのか。

口座残高と取引とかを考えると分かりやすい。

時間順序をまもって計算するというのが重要。

そこで登場してくるのがブロックチェーン

ブロックチェーンの基礎

「ある取引より前にあるべき取引」のハッシュ値を持つことで、取引をチェーンのようにつなげる。

A->B->C->D

と合った時に、BはAのハッシュを持つ CはA->Bの取引に対応するハッシュを持つ DはA->B->Cの取引に対応するハッシュを持つ

途中の取引とか偽装できない。Bを偽装したらCやDのハッシュ値がおかしくなる。これで順番を保証する。

どうやって分散させるか

あるサーバーが取引をある程度のまとまりでまとめる「アトミック」。そのブロックを全部のサーバーに伝える。伝わると全体が同じ状態になる。(ステートマシンレプリケーション)。 別のサーバーが新たなブロックを追加する。それを全体に伝える。

アトミシテイ(どこからどこまで処理をまとめたらいいのか)

「分散」だけど全てのサーバーが同じ状態を持っている。海外送金も簡単に。分散なのでマスターもない。

(分散というのは負荷の分散ではなく、所有者のぶんさん。データが中央集権的に管理されるのを防ぐための分散)

お金でなくても使える

トランザクション台帳をエンタープライズごとに分散したシステムで共有する トランザクションを扱っていれば、取引なんかを扱っていれば(ECサイトとか)、銀行とかビットコインとかでなくても応用可能。

取引のオープン化

中央集権型の場合、そのサーバーを持っている企業だけが取引が可能。分散型になるとそれがなくなる。

非中央集権型自立組織

トランザクションを書くこと、つまり契約書を書くことが、今保険会社だったり銀行だったりで発生しているが、そこがなくなるので、本来のコア業務に集中できる。

ではビットコイン

ビットコイン」の話をしているのか「ブロックチェーン」の話をしているのか。という話。

  1. トランザクションをデジタル署名
  2. ブロックチェーンをハッシュキャッシュ

ビットコインは安全性を保っている。この2つはビットコイン特有の話であってブロックチェーンの話ではない。

ビットコインは払うか貰うかの2つしかほぼ取引はないシンプルなトランザクション

通過の特性

ビットコインでは以下が必要

  • 本人以外は送金できない
  • 多重譲渡などはできない

マイニングとは

もともとはスパムメールをブロックするための技術。

ブロックのハッシュ値を見つける行為。ブロックチェーンではこんなことをする必要はない(つまりビットコインの特徴)。次のブロックをだれが作るか、というところでマイニングが始まる。ハッシュ値を見つけるとブロックが作れて、取引の手数料とかが貰える。 このハッシュ値を見つける計算はただの無駄な計算。とうことで電力の問題がある。

不正を行う人が不正なブロックを作らないようにしている。

ビザンチン将軍問題というものがある。ネットワークの半数以上が裏切るとネットワークが崩壊するという問題がある。

ビットコインブロックチェーンの一つの実装

ビットコインはほぼ2種類の取引しかない極めて単純な台帳なので、実装しやすく流行ったのではないか。 分散しているがある一定の時間で同期することが期待されるため、トランザクション負荷が分散しているとはいいがたい。

ビットコインの話をしているのかブロックチェーンの話をしているのかは見分けたい。

ブロックチェーンの流れ

Bitcoin(第一世代の仮想通貨) しかしビットコインは電力を無駄に食う問題がある。

第二世代 : スマートコントラクト Hyperledger Ethereum NEM ...

第三世代: より多用途に

ブロックチェーン、どこからはじめるか

ブロックチェーンは基盤技術

例えば、メールというのが開発された時。これは儲かるのかという話があったが、導入してみると非常に便利だった。

ブロックチェーンも似たようなものではないか。「ブロックチェーンは儲かるのか」と聞かれると、儲かるか儲からないかではない。ROI(対費用効果)の話からスタートしない。