実際にアドレスの作成から送金までの流れを追い、ビットコインの仕組みについて見ていきます。ビットコインのウォレットソフト・アプリではこのような作業を自動的に実行し、仕組みを知らなくても誰でも簡単に使えるようになっています。
このページでは、公開鍵暗号とデジタル署名という前提知識を持っていると理解が早くなります。これらは、インターネットのセキュリティ技術の基本的知識のため、多くの日本語の解説サイトがあります。詳細は、リンク先やその他サイト等も参照してください。
ビットコインにおいては、公開鍵を変換したものがアドレスとなり、アドレスがつまり口座番号になります。アドレスは銀行の口座とは違いいくらでも簡単に作れるため、お金を受け取れる「メールアドレス」に例えられることもあります。公開鍵に対応するのが秘密鍵(プライベートキー)です。ビットコインの世界では大抵そのまま秘密鍵またはプライベートキーと呼ばれます。これは送金の際に使う暗証番号(パスワード)になります。
ビットコインを利用する上では、とりあえずアドレスは口座番号、秘密鍵は暗証番号と覚えておけば十分でしょう。
ここでは、実際に秘密鍵とアドレスを作成する流れを追ってみます。流れ的には秘密鍵→公開鍵→アドレスというかたちになります。
最初に作るのは秘密鍵です。実はビットコインの秘密鍵にあまり厳格な制限はなく、512ビット(128文字)でも128ビット(32文字)でもいいのですが、ここでは、最も一般的な256ビット(64文字)の秘密鍵をランダムに生成してみたいと思います。
ちなみに任意の文字を単にハッシュ化したものも秘密鍵にでき、このような方法で作ったウォレット(財布)は、秘密鍵を暗記できるため、ブレインウォレット(脳内ウォレット)とも呼ばれますが、セキュリティが弱いためほとんど使われません。
取引の署名・検証等に使うため、ビットコインでは秘密鍵から公開鍵への変換はsecp256k1という楕円曲線を利用します(ECDSA)。ただし、説明には複雑な数学的説明が必要なためここでは省略します。
※本ページで作ったアドレス・秘密鍵は実際に使うことも可能ですが、セキュリティ上使用は止めてください
まずビットコインにおける取引(送金)について、重要な仕組み・仕様があります。
上図はビットコインの送金の構造を簡単に表したものです。見て分かるようにビットコインでは送信額(input)と受信額(output)+取引手数料は必ず等しくなければなりません。
このため、例えば10BTCの残高があるうちの1BTCを送信したい場合、1BTCを相手に送信し、残りの9BTCは自分のアドレスに再度送信する、ということになります。
この仕様は「お釣り用アドレス(change address)」の仕組みを知るうえで重要です。上図のように、ビットコインのウォレットソフトのなかには、プライバシー保護のために毎回お釣り用アドレスを新規作成し、元のアドレスにいくら大量のビットコインがあったとしても、全てをお釣り用アドレスに送信し、元のアドレスの残高を空っぽにするという作業を行っているものが多くあるのです。もし元のアドレスから全額がなくなっていたとしても混乱しないようにしましょう。
ちなみに取引手数料というのは、取引が正しいものであることを検証してもらうのに第三者の取引承認者である採掘者(マイナー)に払うものです。一般的に取引手数料が高いほど、早く取引が承認されると言われています。詳細は、第4回にて解説します。
普段ビットコインを使う上では先ほどの仕組みを知っていれば十分ですが、せっかくなので前半で作った秘密鍵と公開鍵を使って取引に署名を行ってみます。
最終更新日: 2017年12月08日
ゲスト(匿名)としての投稿の場合は、任意のメールアドレス(非公開、123@456.com等ランダムな文字列でも可)の入力も可能です。SNS等を利用してログインした場合には、自分の投稿を編集することができます。