書いて覚えるSwift入門

第30回 SD読者ならわかるブロックチェーン入門

この記事を読むのに必要な時間:およそ 4 分

中央集権から分散へ

本誌の読者であれば電子署名がすでに枯れた技術であることはご存じかと思います。iOSやAndroidのアプリはすべてストアによって電子署名されていて,アプリを構成するデータがそのストアで配布されたことを保証しています。だからこそアプリストアが成り立つわけですが,だからこそアプリストアは中央集権なのです。アプリに署名できるのはストア主だけなのですから。

これを分散するにはどうしたら良いでしょう?複数の人が署名できるようにするだけならさほど難儀でありません。署名する権限がある人のリストを用意しておき,誰が署名したかをブロックごとに検証していけば良いだけです。しかしこれでも署名者登録が中央集権的にならざるをえません。世界最重要の分散型データベースであるDNSも,ルートサーバはInternicという組織がトップダウンに配布しています。

分散型ネットワークであるインターネットも,このように分散不可能な要素を抱えているのです。これを真の意味で分散可能にできないか? ブロックチェーンであればその根幹である署名プロセスを分散できないか?

Bitcoinのしくみ

そこに颯爽と登場したのが,Satoshi Nakamotoを名乗る1人の天才でした。彼は特権なしで誰でも署名できる一貫性のある方法を論文で提示したのです。

その方法は実にシンプルなものでした。

  • ① 最初に署名した人が正しい署名ということにする
  • ② ただし署名するにはそれなりの労力をかけてもらう
  • ③ その労力に対し代価を支払う(ビットコインで)
  • ④ 署名できなかった人はその署名を検証する

あとは,⁠それなりの労力がかかる」方法さえあればいい。Bitcoinではその方法は次のとおりです。

  • ① 署名元のデータに,32bitのnonceというデータを足す
  • ② それに電子署名する
  • ③ その署名結果,つまり2進法の数値が一定以下であれば正しい署名として認める。それ以外は不正な署名とする

図3はblockchain.infoによる481455番目のbitcoin blockの内訳ですが,右側にHashesという値があります。16進数表示で64桁,つまり256bitの数値ですがこれが署名です。いずれも頭に0がいくつも並んでます。この0が一定個数以下のものだけ,正しい署名と認めることにするのです。

図3 481455番目のbitcoin blockの内訳

図3 481455番目のbitcoin blockの内訳

この署名を得るために,署名者はnonceを変えては署名して,不正ならnonceを変えてまた署名……という作業を延々と繰り返します。この作業のことを業界では「採掘(mining⁠⁠」と呼んでいますが,そうして正しく署名したブロックをP2Pネットワークに流し,ほかのネットワークノードに検証してもらって初めて,そのブロックは正当なブロックとして承認されます。

正しい署名が見つかる確率を難易度(difficulty)と言いますが,ビットコインでは10分に1ブロック増える程度に都度調整されるようになっています。⁠送金に10分」というのはこれが理由です。送金記録がブロックに掲載され,それがチェーンにつながれたとき,その取引は正当なものとなるのです。

そう。送金記録。48万個を超えるブロックの連鎖からなり,今も10分に1つずつ増えていく,過去と未来すべての入出金の歴史。それこそがビットコインの真の姿。その意味ではそれを「台帳」(ledger)ではなく「コイン」という言葉を選んだSatoshi Nakamotoは罪作りではあります。しかし「コイン」という言葉の沿革を見ると,ビットコインという命名はなかなか渋い。中央銀行以上に信用があり得るものといえば金注2で,金でできた貨幣をコインと呼ぶのですから。

押さえておくべき3ポイント

ここでブロックチェーンに話を戻すと,見てのとおりブロックチェーンとは刻一刻と付け加えられるデータを全員で共有するための技術に過ぎず,どんなデータでも流せることは明らかです。分散署名も署名者を固定すれば不要で,たとえば日銀が電子署名する「日銀チェーン」だってあり得ますし,クローズドな環境ならば電子署名さえ不要で,さらにはログの共有などに用いても何の問題もありません注3⁠。

とはいえブロックチェーンという言葉がバズるところまで来たのは,何と言っても分散署名の方法をNakamotoがBitcoinとともに提示し,実際にそれを用いた取引が根付いてから。Nakamoto論文の公開は2008年。そこから10年足らずで「ただの思いつき」はビットコインだけでも約7兆円,仮想通貨全体では14兆円もの経済活動をカバーするにいたっています。IPOの代わりの資金調達手段としてICO(Initial Coin Offering)というものも登場しましたし,ブロックチェーンの世界の片隅で暮らし始めた筆者にもブロックチェーンの適応と放散の速度には眩暈(めまい)を禁じえません。

そろそろ紙幅も尽きるのでまとめます。

  1. ブロックチェーンとは刻々と追記されるデータをP2Pネットワークで安全確実に同期する技術
  2. チェーンにブロックを追加するには,追加前のブロックを署名する
  3. Satoshi Nakamotoが提示したのは,誰がブロックを用いて署名してもチェーンが切れない方法。ビットコインはそれを使って入出金記録を記録し続けるためのプロトコル(protocol)

これだけ押さえておけば,ブロックチェーンにはついていけます。読者のあなたの学習チェーンにぜひこの知識をつなげてみてください。

注2)
日本銀行の貸借対照表の資産の部の一番上にあるのはなんでしょう?
注3)
こういったブロックチェーンはプライベートチェーンと呼ぶことが多いようです。
Software Design

本誌最新号をチェック!
Software Design 2022年2月号

2022年1月18日発売
B5判/192ページ
定価1,342円
(本体1,220円+税10%)

  • 第1特集
    オブジェクト指向,関数型,それぞれのパラダイムに触れる
    JavaScriptの関数を極める
  • 第2特集
    GitHub Actionsで簡単・快適CI/CD
    GitHubベースの高機能な自動化ツールを体験しよう
  • 特別企画
    セキュリティキーITエンジニア流使いこなし術
    [前編]Twitter,GitHub,AWSでセキュリティキーを使う
  • 短期連載
    Cypressで作る⁠消耗しない⁠E2Eテスト環境
    [2]実運用に効くコードの書き方&便利な機能
  • 短期連載
    リアルタイム通信アプリを支える技術
    [3]リアルタイム通信アプリの実装概念

著者プロフィール

小飼弾(こがいだん)

1969年生まれ,東京都出身。元ライブドア取締役の肩書きよりも,最近はPokemon GOのガチトレーナーのほうが有名になりつつある……かもしれない永遠のエンジニアオヤジ。

活躍の場はIT業界だけでなく,サブカルからアカデミックまで多方面にわたり,ネットからの情報発信は気の向くまま毎日毎秒! https://twitter.com/dankogai,ニコニコチャンネルは,http://ch.nicovideo.jp/dankogai,blogはhttp://blog.livedoor.jp/dankogai/

当社刊行書籍は『小飼弾のアルファギークに逢ってきた』『小飼弾のコードなエッセイ』など。他にも著書多数。