用語集 / アドレスと鍵
ビットコインアドレス
別名はアドレスです。
- ビットコインアドレスとは?
- ビットコインアドレスとは、送信者のウォレットに、コインへどのようなロック条件を設定するかを伝える短いエンコード済みの文字列であり、後からコインを使用できるのは自分の鍵だけになります。
アドレスは口座ではなく、残高も保有しません。アドレスはスクリプトを符号化した送金先の形式です。ビットコインには一般に使われるアドレスが4種類あり、1で始まるレガシー形式の文字列から、bc1pで始まるTaproot形式の文字列まであります。Taproot形式はブロック709,632で、2021年11月14日に使用可能になりました。ウォレットが発行するアドレスの種類によって、使用時に支払う手数料と保たれるプライバシーが変わります。
仕組み
すべての支払いはアウトプットを1つ作成し、各アウトプットには将来の使用者が何を提供しなければならないかを定めたスクリプトが付いています。アドレスは、そのスクリプトを人間がチャット画面やQRコードで受け渡せる形にしたものです。ウォレットは利用者が管理する鍵を取り、その鍵にコインをロックするスクリプトを計算し、結果をチェックサムとともに符号化します。そのため、文字を打ち間違えるとエラーになり、どこにも送金されないまま静かに処理が進むことはありません。
流通している符号化方式は2つあります。1または3で始まる文字列はBase58Checkを使用します。これは古い形式で、短いチェックサムを末尾に付加し、似て見える文字を避けるように選ばれた文字体系を用います。bc1で始まる文字列は、BIP-173のbech32、またはTaproot向けのBIP-350のbech32mを使用します。bech32の2つの方式はいずれも最大4文字の誤りを検出でき、誤りの位置を示すことができます。またどちらも大文字と小文字を区別しないため、ウォレットはより小さく、より確実に読み取れるQRコードとして表示できます。
残高はアドレスに保存されません。残高は、ウォレットが導出方法を知っているアドレスにロックされた未使用アウトプットのうち、ウォレットが見つけられるものの合計です。現代のウォレットは1つのシードから数千のアドレスを導出します。そのため、受取画面を開くたびに新しいアドレスが提示されます。
ビットコインを購入するときにこれが重要な理由
多くの人が最初に使うアドレスは、取引所の出金フォームに貼り付けるアドレスであり、ここが最も間違えやすい手順です。
アドレスはウォレットからコピーし、ブラウザの画面ではなくウォレット自体の画面で確認してください。クリップボードを狙うマルウェアはコピーしたアドレスを攻撃者のアドレスに置き換えます。文字を照合しない限り、この置き換えは見えません。ここでの防御はハードウェアウォレットの表示画面です。デバイスが実際に導出したアドレスが表示され、コンピューターはその表示内容を書き換えられません。
送金先が新しい場合は、まず少額のテスト送金を行い、その後で残りを送金してください。ほとんどの取引所はビットコインの出金手数料を取引ごとに定額で請求するため、1回の出金を2回に分けると手数料を2回支払うことになります。大口の送金では安価な保険になりますが、少額の送金では守れる額より多く失うことがあります。
プラットフォームが対応している場合はbech32を選んでください。ネイティブSegWitのインプットの使用は約68vbytes、レガシーのインプットは約148vbytesを要するため、20sat/vBでは同じ使用でも2,960サトシではなく約1,360サトシの費用になります。この差額はコインを動かすときに後から支払うことになるため、出金時にした選択が数か月後にも意味を持ちます。対応が遅れているプラットフォームもあります。出金フォームがbc1pの文字列を受け付けない場合、そのプラットフォームはTaproot対応を追加していないため、bc1qアドレスが代替となります。
次に、各アドレスを1回だけ使ってください。取引所、チェーン分析企業、そして過去に支払ったすべての相手は、あるアドレスに関わるすべてのトランザクションを見ることができるため、1つのアドレスを再利用すると購入同士が恒久的に結び付けられます。
実際に出会う4種類のアドレス
4つのアドレス形式で、今日行われる支払いのほぼすべてを網羅できます。それぞれの形式は、それを生成したウォレットについて何かを教えてくれます。
- 1...(P2PKH、レガシー)。 Base58Check。2009年の最初のリリースから使われています。どこでも受け入れられますが、使用時の費用が最も高い種類です。
- 3...(P2SH)。 Base58Check。マルチシグ向けに作られ、現在では多くの場合ラップされたSegWitアドレスです。取引所が「SegWit対応」と言うときに通常指すのはこれです。
- bc1q...(P2WPKH、ネイティブSegWit)。 bech32、42文字。2017年8月24日にブロック481,824でSegWitが有効になったときから利用できます。現在のほとんどのウォレットで既定です。
- bc1p...(P2TR、Taproot)。 bech32m、62文字。ブロック709,632から稼働しています。複雑な使用条件では最も安価で、Schnorr署名や、通常の単一鍵の支払いに見えるマルチシグの背後にある形式です。
接頭辞を読むことは簡単な点検になります。1と3は古い世界に属し、bc1qはウィットネスバージョン0、bc1pはウィットネスバージョン1です。テストネットワークは代わりにtb1を使うため、tbで始まるものは実際のコインでは決して機能しません。
ビットコインアドレスvs公開鍵
ビットコインアドレスは公開鍵ではありませんが、両者は関係しています。公開鍵は秘密鍵から導出されるsecp256k1曲線上の点であり、アドレスは符号化されたスクリプトです。古い種類では、そのスクリプトは公開鍵そのものではなく公開鍵のハッシュを含みます。実際上の結果として、アドレスを公開してもその背後の鍵については何も明らかにならず、レガシーおよびSegWitバージョン0のアウトプットでは、初めて使用するまで鍵は隠されたままです。Taprootはこの点を変えました。bc1pアドレスは32バイトの鍵を直接埋め込みます。
ビットコインアドレスvsウォレット
ビットコインアドレスは単一の送金先であり、ウォレットはソフトウェアと、数千のアドレスの背後にある秘密です。ウォレットをシードフレーズから復元すると、これまでに生成したすべてのアドレスが再生成されます。そのため、誰もアドレスを個別にバックアップしません。アドレスを失うことは大したことではありません。コインはウォレットがなお特定できるアウトプットにあるからです。シードを失うとすべてを失い、ブロックエクスプローラーでまだ読めるアドレスに置かれたコインも含まれます。