タイムスタンプ機能としてのビットコイン利用は?
ビットコインを発明し、未だその正体が分かっていないサトシ・ナカモト。そんなサトシが残した約2年間の文章を、小宮自由氏の解説と共に紹介する連載「サトシ・ナカモトが残した言葉〜ビットコインの歴史をたどる旅」の第23回。
まずサトシのメールの前に、本連載の元になっている書籍『ビットコイン バイブル:サトシナカモトとは何者か?』の著者フィル・シャンパーニュ氏の解説も掲載する。
フィル・シャンパーニュ氏の解説
ここでは、ブロックチェーンを用いて特別なハッシュの手法で文書にタイムスタンプしてはどうかと、誰かに提案されたと、Hal が述べている(第2章の「2-4 暗号学的ハッシュ関数:デジタルの指紋」と題したセクションの暗号学的ハッシュの説明を参照のこと *1)。
[ビットコインリスト]ビットコイン・バージョン0.1.5のリリース サトシ・ナカモト 2009年03月04日 16時29分12秒
それではサトシのの投稿を見ていこう。
========================
(注:斜体部分は、サトシ以外の者の質問を指す)
Hal Finneyは書きました:
それはよさそうですね。他には、複数のマシンで複数のコイン/ブロック生成機を稼働して全部同一のNATアドレスでできるといいなと思います。まだ試していないので、現在のソフトウェアでうまくいくかどうか分かりません。
現在のバージョンならうまくいくはずです。各マシンがインターネットにつながりますが、着信接続はポート8333のルート先のホストにのみ届きます。
最適化として、特定のアドレスのみにつながるよう-connect=1.2.3.4のスイッチを作ってみます。サブノードをメインノードにつなげ、メインノードだけがインターネットにつながります。帯域が無視できなくなる前にネットワークが巨大化している必要があるので、いまのところ問題にはなりません。
ところで、話したかどうか忘れましたが、先日、誰かが安全なタイムスタンプの話をしていました。ある文書が過去のある時刻に存在したことを証明できるようにしてほしい、ということです。ビットコインのブロックならこの点は完璧だと思います。
実際に、ビットコインは分散型の安全な取引タイムスタンプ・サーバー*2です。タイムスタンプを必要とする物に対し、内部に特別なハッシュを付けた取引を数行のコードで作成できます。その手法でファイルにタイムスタンプするコマンドを追加しましょう。
後々の話ですが、サーバー側のあらゆる言語からウェブサイトに統合しやすくできるインターフェースを加えたいです。*3
そうですね。プログラミング言語やスクリプト言語から呼び出せるライブラリー・インターフェースをもっとクライアント側でも見てみたいです。
私もまさにそう思います。
サトシ・ナカモト
http://www.bitcoin.org
========================
【訳注】
*1 未翻訳
*2 ビットコイン論文の「3. タイムスタンプサーバ」を参照。タイムスタンプとは、インターネット上の取引や手続き等が行われた時刻や電子文書の存在した日時を証明するサービスであり、ビットコインではブロック生成の証明のため用いられている。
*3 誰の発言かは原著に記載なし。この発言の下に Hal の返信があり、その下でさらに Hal にサトシが返信している。
解説
このセクションは前半と後半に分かれます。前半は1つのグローバルIPを使って、複数の端末でビットコインのマイニングをすることは可能か、という点の議論です(結論としては可能)。
後半はタイムスタンプシステムとしてビットコインを利用できないかという話です。ビットコインでは、ブロック作成の証明のため、タイムスタンプを利用しています。ビットコインのトランザクションには任意のメッセージを含めることができるので、この機能と組み合わせて文書の存在証明をしようというアイデアです。
現在では、このアイデアを発展させて、電子契約システムや、アート作品が特定の日時に創作された証明等に活用されています。後者は NFT として一般にも広く知られることになりました。
小宮自由