
スーパーのレシートは、袋の中身の支払いを済ませた証拠になる。誰かの台帳にあなたの名前とひもづけて記録され、あとで照合されるようなものではない。ただの紙切れであり、それを持っている人がその紙切れを証拠として示せるだけだ。破いたり失くしたりすれば、その証拠そのものが永久に消える。
ビットコインは、貯金箱のコインや銀行の残高欄の数字よりも、このレシートに近いふるまいをする。物としての実体はなく、あなたの名前が書かれた口座残高がどこかのサーバーにあるわけでもない。実際にあなたが手にしているのは、このレシートのような紙切れの束であり、「残高」とはそれらを合計した金額にすぎない。
この 1 枚 1 枚を、専門用語では未使用のトランザクション出力、略して UTXO と呼ぶ。「未使用」というのは、まだ誰にも使われていないという意味だ。使われた瞬間、それは破れたレシートと同じように二度と使えなくなる。使うというのは、1 枚の金額を書き換えることではない。1 枚を丸ごと使い切り、新しい紙切れを何枚か発行することだ。支払い先へ 1 枚、そしてもし元の紙切れの額面が支払い額より大きければ、お釣りとして自分宛にもう 1 枚。トランザクションとは、要するにこの「古い紙切れを入れて、新しい紙切れを出す」という操作のすべてを指す。
では、どの紙切れが自分のものだと決めるのは何か。ここで、レシートとはまったく別の発想、錠前と鍵の話が出てくる。
自分だけが開けられる錠前
誰でもお金を入れられるが、決まった鍵でしか開けられない貯金箱を思い浮かべてほしい。ビットコインは利用者一人ひとりに、まさにそういう仕組みを与える。ランダムに生成され、誰にも見せない秘密の数値、秘密鍵がそれだ。この秘密鍵から、ふつうの数学によって別の数値、公開鍵が導かれる。これは錠前そのものだと考えるとよい。世界中に見せても安全だ。錠前の見た目を知っていても、それをこじ開ける手がかりにはならないからだ。
公開鍵から、同じ数学によって短いアドレスが作られる。誰でもそのアドレスにビットコインを送れる文字列で、郵便の宛先が誰からでも手紙を受け取れるのと同じ感覚だ。そのアドレスへビットコインを送ることは、貯金箱に紙切れを投げ入れるようなものだ。誰でも入れられるが、貯金箱を開けて中身を取り出せるのは秘密鍵を持つ本人だけだ。
実際に使うとき、ウォレットは秘密鍵そのものを差し出したりしない。それは錠前の鍵を公開してしまうようなものだからだ。代わりに署名という一片の数学的データを作る。これはその特定のトランザクションに固有のもので、鍵そのものを一切明かさずに、作成者が秘密鍵を持っていることを証明する。ネットワーク上の誰もがその署名が本物かどうかを確認できる一方、署名から鍵を逆算して盗むことは誰にもできない。
ウォレットとは、日常的に言えば、あなたの秘密鍵を管理し、この施錠・開錠の作業を代行してくれるソフトウェアにすぎない。他人の鍵に触れる必要は一切なく、自分自身の鍵だけを扱う。
ビットコインの小銭の単位
最後に実務的な話をひとつ。普段目にするのは BTC という単位だが、内部では 1 億分の 1 BTC というもっと小さな単位で数えている。これはサトシと呼ばれ、このシステムの匿名の作者にちなむ。サトシ単位で考える機会は滅多にないが、これは UTXO の額面が実際に保存されている単位であり、ごく小さなビットコインの金額が、扱いにくい小数点以下のゼロの羅列ではなく「何サトシ」という言い方で表されるのはこのためだ。
ここまで見てきたレシート、錠前と鍵、署名の話は、ネットワーク上の他の全員がその紙切れを本物だと認めるかどうか、あるいは同じ紙切れがどこか別の場所で二重に使われるのを何が防いでいるのかには、まだ何も答えていない。それが全員で共有する台帳の話であり、次のページのテーマになる。



