メインコンテンツへスキップ

BIP 350

v1 以降の witness アドレスのための Bech32m 形式

原題: Bech32m format for v1+ witness addresses

Status
Deployed
Type / Layer
Specification / Applications
Author
Pieter Wuille
割り当て日
Status 検証日
原文
github.com/bitcoin/bips/blob/master/bip-0350.mediawiki

要約

アドレスの符号化に使う bech32 のチェックサムに見つかった弱点を直した提案です。BIP173 の bech32 には、末尾が「p」で終わる文字列のその直前に「q」を任意の個数だけ挿入したり削除したりしても、チェックサムが有効なままになるという性質がありました。既存の witness version 0 のアドレスは長さが仕様で固定されているため実害はありませんが、長さが可変になりうる将来の witness version や、bech32 を流用する他の用途では、打ち間違いを検出できない事故につながります。bech32m の変更点はごく小さく、チェックサム計算に使う定数を 1 から 0x2bc830a3 に置き換えるだけで、人が読む部分(HRP)や文字集合、その他の構造はすべて bech32 と同じです。そのうえで、どちらを使うかを witness version で切り分けます。version 0 の P2WPKH と P2WSH は従来どおり bech32、version 1 以上は bech32m です。両者は互いに検証を通らないため、古いソフトウェアが新しい形式のアドレスを取り違えて扱う事故も同時に防げます。

技術的意義

Taproot の「bc1p」で始まるアドレスを符号化しているのがこの形式です。witness version ごとに符号化方式を切り替えるという決着によって、チェックサムの弱点を塞ぎながら、既存の「bc1q」アドレスを作り直させずに済ませました。

関連する BIP

関連する解説記事

このページに掲載しているのは原文の翻訳ではなく日本語の要約です。BIP は原文が正であり、Status を含むメタデータは上記の検証日時点で bips リポジトリから転記した値です。実装・検証の際は必ず原文を参照してください。

bitcoin/bips で原文を読む