1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AMBL株式会社Advent Calendar 2022

Day 14

BTCのホワイトペーパーを改めて読み直してみた

Posted at

はじめに

こんにちは。AMBL株式会社の諏原です。AMBLアドベントカレンダー2022の記事です。

今回は、BTCのホワイトペーパーを改めて読み直そうと思います。

BTCの要点はこれ!

ブロックチェーンによりデータを分散管理し中央管理者不在でも動く仕組み

BTCと既存システムの比較

ビットコイン 既存のシステム
管理方式 分散型台帳(ブロックチェーン) 中央銀行などの第三者機関
発行権限 取引のあったユーザー 中央銀行
手数料 なし or 安価 あり
少額の取引 できる できない(銀行など)

既存のシステムは、第三者機関に対する信用が必要ですが、ビットコインではブロックチェーンにより、第三者機関なしで取引することができます。
また、少額のやり取りもブロックチェーンで行うことができます。

二重支払い防止

タイムスタンプサーバーを用います。タイムスタンプサーバーは、タイムスタンプを行う各アイテムを構成するブロックのハッシュを取得し、そのハッシュを広く公開することで機能します。
タイムスタンプは、ハッシュ化されるデータがタイムスタンプを行った時点で間違いなく存在していた事を証明するものとなります。。

ブロックチェーン

ブロックチェーンのデータ構造 2022-12-13 23.54.48.png
(画像元:https://blog.triedge-lab.com/2017/10/03/post-1143/)

ブロックチェーンの1番のポイントは、同じデータを複数の場所に分散して管理していることでデータの改竄を困難にしているところです。

たとえ、悪意を持った人が一部のデータを書き換えることができたとしても、他のコンピューターで管理されているデータも書き換えなければならないため、とても金銭的にも心理的にもコストがかかります。

また、複数のコンピューターで管理しているため、一部のコンピューターでシステムダウンが起きても、全体のコンピューターで補完することができます。

コンセンサスアルゴリズムーPOW(Proof Of Work)

POWは2つのことを可能にします。

  1. どれを正しいチェーンとするか選ぶ
  2. 取引やデータをブロックチェーンにつなぐための仕組み

1.どれを正しいチェーンとするか選ぶ

原則として、1CPU=1票となります。
計算量が最も使用されてたチェーンが最長チェーンとなり、これが集団の意思決定における代表のチェーンとなります。
51%以上のCPUが善良なコンピューターにより制御された場合であれば、そのチェーンは最も早く成長し、競合のチェーンたちを退けます。

2.取引やデータをブロックチェーンにつなぐための仕組み

中央の管理者がいない代わりに、計算を成功させた人が、そのデータを承認してブロックチェーンにつなぎます。この時、計算を成功させた人は、報酬としてBTCをもらえます。

計算およびデータ承認の作業のことをマイニング(mining)、作業を行う人や組織をマイナー(miner)と呼びます。

より具体的には、幾つかの取引やデータがブロックとしてまとめられます。このブロックをチェーンに組み込むためには、Nonceと計算結果とのハッシュ値が一緒である必要があります。

Nonceは、Number used once(一度だけ使用される使い捨ての数字)の略で、ブロックを生成するときに採掘者(マイナー)によって生成される 32 ビットの数値です。

計算は、Nonceの最初のnビットが全て0で始まる値を発見することを目的とします。
ハッシュ関数によって計算しハッシュ値を求め、その計算値が、非常に小さい値(=計算された値の先頭に0がいくつも並ぶようでな値)を見つけ出したノードがブロック生成権を手に入れることができるというものです。

何度計算してもハッシュ値は同じなのでNonceをどんどん変更させてハッシュ値を変えていき、うまくいくNonceを探すことになります。

そして見つけ出したNonceの値が承認されれば、報酬がもらえます。

以下に、ネットワークの作動手順を記します。

  1. 新しいトランザクションは全ノードに送信される。
  2. 各ノードが新しいトランザクションをあるブロックに取り入れる。
  3. 各ノードがそのブロックに対する Proof-of-Work を算出する。
  4. Proof-of-Work を見つけ次第、ノードはそのブロックを全ノードにブロードキャストする。
  5. 各ノードは、そのブロック内の全トランザクションが有効かつ未使用の場合のみ、承認を行う。
  6. 各ノードは、承認したブロックのハッシュを直前のハッシュとして使用し、次のブロックの作成を開始することで、ブロックの承認を表明する。

課題点

ビットコインの課題として、以下のようなことが挙げられます。
・ブロックの生成が遅い
・Miningするために膨大な電力量が必要になり、環境へ悪影響を及ぼす。
・規模が重要なマイニングビジネスにおいて、優位に立つために各minerが協力し、組織的なサーバーを用いてマイニングを行う。→結果的に中央集権化してしまう。

感想

思ったよりも自分の記憶が曖昧でした。びっくりです。勉強したことをまとめるって大切だなと思いました。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?