05 — TECHNOLOGY 根幹の技術を、手を動かして理解する
5つの部品で全部できています。読むだけでなく、下のラボで実際に体験できます。
ビットコインを支える技術は、大きく5つ。①ハッシュ関数(指紋づくり)、②デジタル署名(本人確認)、③ブロックチェーン(鎖でつながる台帳)、④プルーフ・オブ・ワーク(マイニング)、⑤分散ネットワーク(皆で持つ)。順番に見ていきます。
① ハッシュ関数 — データの「指紋」
ハッシュ関数は、どんな長さのデータを入れても、決まった長さのランダムに見える文字列(指紋)を返す関数です。ビットコインはを使います。特徴は3つ。(a)同じ入力からは必ず同じ指紋。(b)入力を1文字でも変えると指紋は全く別物になる(雪崩効果)。(c)指紋から元データは復元できない。この「一方通行で改ざんがすぐバレる」性質が、台帳の改ざん検知を可能にします。
LIVE LAB — SHA-256 ハッシュ体験
1文字変えると、すべてが変わる
下に文字を入力してみてください。実際にあなたのブラウザがSHA-256を計算します。末尾に「.」を1つ足すだけでも、指紋がまるごと変わるのを確かめてみましょう。
SHA-256 ハッシュ(256ビット / 16進64文字) …
② デジタル署名 — 「本人だけが使える」鍵
各ユーザーはと公開鍵のペアを持ちます(公開鍵暗号)。公開鍵から作る「アドレス」は口座番号のように公開してOK。送金時は秘密鍵でを行い、「この取引は確かに鍵の持ち主が承認した」と数学的に証明します。秘密鍵がなければ誰もあなたのコインを動かせない。逆に言えば、秘密鍵を失えば資産も永遠に失う。「自分が自分の銀行になる」とはこの意味です。
③ ブロックチェーン — 鎖でつながる台帳
取引はおよそ10分ごとに「ブロック」へまとめられます。各ブロックは直前のブロックのハッシュ(指紋)を必ず含むのがミソ。こうしてブロック同士が指紋で鎖のように連結されます。もし過去の取引を1つでも改ざんすると、そのブロックの指紋が変わり、それを含む次のブロック、さらに次……と後続すべての指紋が連鎖的に崩れる。だから古い記録ほど書き換えが絶望的に困難になります。
ブロック #100
取引: A→B 0.5
前のハッシュ: 0000…
自分の指紋: a91f…
ブロック #101
取引: C→D 1.2
前のハッシュ: a91f…
自分の指紋: 7b3e…
ブロック #102
取引: E→F 0.8
前のハッシュ: 7b3e…
自分の指紋: c4d0…
④ プルーフ・オブ・ワーク(マイニング) — 心臓部
ここがビットコインで最も独創的な部分です。新しいブロックを台帳に追加する権利を得るには、必要があります。具体的には「ブロックの中身 + と呼ばれる数字」のハッシュが、先頭に決められた数だけ0が並ぶ形になるナンスを探す作業。答えを逆算する近道はなく、ひたすら数字を変えて試すしかありません(総当たり)。これが世界中の採掘者(マイナー)が膨大な電力を使って競争している正体です。
解いた人には新規発行のビットコイン(報酬)が与えられます。重要なのは、解くのは難しいが、答えの検証は一瞬という非対称性。だから他の全員がすぐ正しさを確認できる。さらに改ざんしようとすれば、その後の全ブロックのパズルを解き直し、世界中のマイナーの計算力を上回り続けねばならず、現実的に不可能です。プルーフ・オブ・ワークは、「計算力という物理的コスト」で歴史を守る仕組みです。
LIVE LAB — ミニ・マイニング体験
実際に「ブロックを採掘」してみる
本物のマイナーと同じことを、ごく簡単な難易度でやってみましょう。条件を満たすナンスが見つかるまで、ブラウザが総当たりで計算し続けます。難易度を1つ上げるだけで、必要な試行回数が桁違いに跳ね上がるのを体感してください。
0
計算したハッシュ回数
待機中
状態
LIVE LAB — 改ざんに挑戦する(最重要)
過去を書き換えると、何が起きるのか
下は鎖でつながった3つのブロックです。各ブロックの指紋は「前のブロックの指紋」を材料の一部にして作られています(これが「鎖」の正体)。
いまは全ブロックが採掘条件=指紋の先頭が 0000 を満たし「有効(VALID)」。では実際に、いちばん左 #1 の取引データを書き換えてみてください。
STEP 1どれかのブロックの「取引データ」を書き換える(1文字でOK)
STEP 2そのブロックから右が一斉に赤=INVALID になるのを観察
STEP 3直すには、赤いブロックを左から順に「再採掘」する
VALID = 指紋が条件(先頭0000)を満たす=正しい INVALID = 条件を満たさない=壊れている
⑤ 分散ネットワークと自動調整
台帳のコピーは世界中の(参加コンピューター)が保持し、新しいブロックを互いに検証・共有します。一部のノードが落ちても、嘘をついても、多数派の正しい記録が生き残る。さらにネットワークは約2週間ごとにパズルの難易度を自動調整します。「ブロックは約10分に1個」のペースを保つため、採掘者が減って遅くなればパズルを自動でやさしく、増えて速くなれば難しくします(=走者が減るとゴールが自動で近づくマラソンのように)。参加者が何人でもペースは一定です。誰も指揮していないのに、全体が自動でバランスを取ります。
∞
稼働率99.98%
2009年の稼働開始から17年以上。止まったのは2回・合計十数時間だけで、メンテ休止も管理者もありません。
🌐
非中央集権
サーバー室も本社もない。世界中に散らばったノードが共同で運営します。
🔒
改ざん耐性
過去を書き換えるには地球規模の計算力が要り、事実上不可能です。