ビットコインの原論文を読む 3節 タイムスタンプサーバ

3 タイムスタンプサーバ

提案する解決法は、タイムスタンプサーバを必要とする。タイムスタンプサーバとは、ブロックを受け取ってハッシュ値を計算し、一般的には新聞やネットニュースのような仕組みで配信するサーバである[2-5]。データをハッシュ化しタイムスタンプに組み込むことにより、そのデータがその時点で存在したことを、明確に証明する。また、タイムスタンプは、一つ前の段階のタイムスタンプをハッシュ化したものを組み込み、チェーンを作る。そのため、タイムスタンプが後方に連なるに従って、信頼性が増して行くことになる。

fig2

[2] H. Massias, X.S. Avila, and J.-J. Quisquater, “Design of a secure timestamping service with minimal trust requirements,” In 20th Symposium on Information Theory in the Benelux, May 1999.

[3] S. Haber, W.S. Stornetta, “How to time-stamp a digital document,” In Journal of Cryptology, vol 3, no2, pages 99-111, 1991.

[4] D. Bayer, S. Haber, W.S. Stornetta, “Improving the efficiency and reliability of digital time-stamping,” In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.

[5] S. Haber, W.S. Stornetta, “Secure names for bit-strings,” In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.

タイムスタンプサーバの目的は、ある時間に、あるデータが存在したことを証明することです。これは、信頼できる中央機関があれば容易に実装できます。「○時○分に○○というデータ(のハッシュ値)が存在したことを証明する」という文書を、電子的に署名して配布すれば良いだけのことです。twitterに「こんなことを思いついた!」とツイートしてアイデアの証拠を残すのも、その一種でしょう。問題はビットコインのように、中央機関が無い場合です。どうやれば、ある取引がある時刻に行われたことを、P2Pシステムで証明できるでしょうか。

もっとも、ビットコインでは取引時刻をそれほど厳密には扱いません。「ビットコインでは取引に10分程度の時間がかかる」という話を聞いたことが無いでしょうか。これは、およそ10分以内に為された2つの取引は順序が入れ替わる可能性があるため、多重取引ではないと下した判定がその間に覆るかもしれないからです。実際には数10分待った方が良いのですが、いずれにせよ、取引時刻の曖昧さを許した代わりに、即時性が多少犠牲になっています。

分単位での時刻証明は得られなくとも、24時間前に確認したはずの取引が突然無効になるという事態は避けたいので、そういった大まかなレベルの時刻証明は必要です。ビットコインは、これを次のようにして解決します。すなわち「全世界のコンピュータを集めても、24時間かけて計算しなくては作れないようなデータ」を作ります。それをどう実装するか。次節で語られます。

コメントを残す

メールアドレスは公開されません