これははんドンクラブ Advent Calendar 2020のふぇむの記事です。
12月に入って以降、史上最高値を更新し、にわかに再度話題になりつつあるBitcoinについて、その誕生と特徴、技術の概要、課題について書いてみました。
注:私はBitcoin関係の開発者でもなければ暗号学者でも何でもありません。そのため、下記内容には誤りが含まれている可能性があります(大体合ってるとは思いますが)。
※Bitcoinネットワークへの接続は、Bitcoin Coreと同じルールで動作するソフトウェアなら何でも可能なので、厳密にはBitcoin Coreのみで構成されたネットワークではありませんが、本文中ではBitcoin Coreであるとします。
※厳密には、アカウントは、ECDSAの公開鍵に対して特定の処理を施した上でハッシュ関数(RIPEMD-160)を適用して得られる160bitのバイト列です。誰かにBTCを送金する際には、このバイト列を指定します。
これらについて、以下に書いていきます。
本編に入る前に、Bitcoinを支えている暗号技術に関して概要を書きます。
電子署名は、Bitcoin以外でも今日のコンピューター、特にインターネットで多用されている技術です。どのような目的で使われるかというと、デジタルデータが改ざん(書き換え)られたり破損していない事、そしてそのデジタルデータの出自はどこなのか、ということを証明するために使われます。電子署名は、公開鍵暗号という暗号技術によって構成されています。
「暗号」は、「何らかの情報」を、「何らかのルール」で変換し、その何らかのルールを知らない人間には変換前の何らかの情報が知れないようにする手段です。知れないように変換することを「暗号化」、暗号化された情報を元に戻す手段を「復号化」と呼びます。また、暗号化時・復号化時には「鍵」と呼ばれるものを使います。元の情報は同じでも、暗号化・復号化に鍵を用いることで、鍵を変えることによって、異なる形に暗号化することができます(そして復号化にもそれに対応した鍵が必要になります)。