blockchain

「blockchainとは」から始まる人向けの記事になります。

blockchainとは

blockchainの成り立ち

blockchainとはなんでしょう?よくbitcoinとかethereumとかいった用語を耳にしますが、それはblockchainなのでしょうか?

私も最初はそんな疑問がありました。 なので少し調べてみました。

調べてみると、そもそも サトシ ナカモトさんが下記の論文をメーリングリストに載せた事が始まりと言われているようです。

Bitcoin: A Peer-to-Peer Electronic Cash System

その中で、bitcoinを支える技術や仕組みとしてblockchainが初めて登場したと言われています。 順序としては、blockchainがあったから、bitcoinを作ろうという話ではなく、bitcoinを実現するために必要だったという事です。

分散型取引台帳

blockchainは、分散型取引台帳を実現するための技術とも言われます。 このキーワードについては、後ほど詳しく書いていこうかと思いますが、 まず 分散 という言葉と 取引台帳 という言葉に分けて簡単に説明してみます。 まず、分散 ですが、この辞書的な意味は、「ばらばらに分かれること。散っていること。ちらばり。」となっております。 つまりblockchainに当てはめて言えば、一部の国や企業、システムなどが一箇所(データベースなど)で管理しているデータではなく、それぞれ世界中に散らし、みんなで共有して管理するということです。

次に 取引台帳 というキーワードですが、bitcoinを例に挙げると、Aさんが100bitcoin持っていて、Bさんに10bitcoinをあげたとします。 その場合、取引台帳にはA->B 10bitcoinといったような情報が記載されます。 ここで重要なのが、Aさん今、100bitcoinから10bitcoinをあげたので90bitcoinを持っているという情報は特に記載しないということです。 個々人の残高については、取引履歴を全て追えば、わかるでしょうといった感じで、取引のみを追記していく感じになります。 ethereumなど、他のプラットフォームには、瞬時にアカウント残高がわかる機能もありますが、ここでは、一旦理解のために省きます。

なんでblockchainっていう名前

先ほどお話した、取引履歴を追記していくblockchainですが、もちろん世界中でリアルタイムで追記していきますので、同時に追記してしまうことが起こり得ます。 全然関係ない人のやりとりならいいのですが、例えば同じAさんに関する出入金のデータだったりした場合に、 コンフリクトが起きてしまいます。どちらの追記が正しいかといった問題が生じます。 その場合、簡単にいうとブロックチェーンでは、先にこのチェーンに取り込まれたほう、そして、そのチェーンが先に伸びた方を正とするといったルールがあります。 少し、難しいですが取引が行われると台帳に追記されます。そしてその追記は、他のノードに伝播していきます。 その取引履歴を「ブロック」と呼ばれる記録の塊に格納します。 そのブロックをチェーン状でつないでいくので、ブロックチェーンという名前で呼ばれます。

blockchainの構成する技術要素は?

  • data格納技術 まず、先ほどの説明の通りブロックを作りチェーンにしていくデータ構造が特徴時です。 内部的には、下記のデータから構成されます。

    • TransactionData
    • 前のBlockのHash値
    • ナンス こちらは、詳細を述べるのは後述にします。
  • P2P(分散化技術)

P2Pの技術は、既にあった技術ですが、中央サーバからクライアントに接続するのではなく、それぞれのノードがpeerをはって、データのやりとりをする技術になります。 中央管理のないblockchainでは、p2pが使われて同期がなされています。

  • コンセンサス 先ほどからしつこいようですが、blockchainは、管理者がいない中、みんなが取引の正当化の合意形成を行っております。 その場合、どの取引履歴が正しくて、合意されたのかが重要であり、私は、このblockchainの肝だと思っております。 現在では、powとかposとか色々なコンセンサスアルゴリズムが開発されています。 ここも、長くなりそうなので、後述します。 ただ、見知らぬ人同士の取引を周りの見知らぬ人たちが正しいという合意をすることが、とっても素晴らしいことだと私は思っています。

  • hash化、電子署名などの技術 blockchainでマイニングという言葉は、よく耳にすると思いますが、ブロックチェーンは、マイニングによって積まれたトランザクションを検証して、ブロック化していきます。 その時、ブロックヘッダーのハッシュ値が一定以下になるようにnonceを求める作業がマイニングです。 つまり、マイニングとはトランザクションを検証し、過去のブロックとの整合性を取りながら新しいブロックを生成することです。 ブロックには、トランザクションデータ(取引履歴)と一つ前のブロックのハッシュ値が記載されています。 ブロックチェーンでは、その一つ前のハッシュ値を加えて新しいハッシュ値を生成してブロック化します。 もちろんその時のルールなどがありますが、それは後述する詳細で書いていこうと思います。