Bech32 / Bech32m エンコーダーとデコーダー

bc1q、bc1p、ltc1、lnurl1、npub1 の文字列の中身を調べたり、witness プログラムや生のバイト列から文字列を組み立てたりできます。bech32 と bech32m を自動判別し、チェックサムを検証します。

bech32 と bech32m を判別し、人間可読部(HRP)、5 ビットデータ、生のバイト列を表示します。bc1 / tb1 / ltc1 アドレスでは SegWit の witness バージョンとプログラムも表示します。

ブラウザ内で JavaScript により計算されます。アドレスがアップロードまたは保存されることはありません。

bech32 エンコーダー / デコーダーとは

bech32 エンコーダー / デコーダーは、生のバイト列と BIP-173 の文字列形式を相互に変換します。この形式は、人間可読部(bc、ltc、lnurl、npub)、区切り文字 1、32 文字のアルファベットで 5 ビットずつ表したペイロード、6 文字の BCH チェックサムから成ります。Bech32m(BIP-350)はチェックサム定数だけが異なる同じ形式で、SegWit バージョン 1 以降(Taproot の bc1p…)で必須です。

具体例

witness プログラム 751e76e8199196d454941c45d1b3a323f1433bd6 をバージョン 0、hrp bc でエンコードすると、BIP-173 のリファレンスアドレス bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 になります。これをデコードするとバージョン 0、20 バイトのプログラム、エンコーディング bech32 が返ります。同じプログラムをバージョン 1 にすると bech32m が必要になり、bc1p で始まります。

bech32 が使われる場所

Bech32 vs. bech32m vs. Base58Check

エンコーディングチェックサム誤り検出主な用途
bech32(BIP-173)6 文字、定数 190 文字以内なら最大 4 文字の置換を保証付きで検出bc1q SegWit v0、LNURL、Lightning インボイス、npub
bech32m(BIP-350)6 文字、定数 0x2bc830a3同上。さらに末尾の p の前への挿入に対する弱点を修正bc1p Taproot、SegWit v1 以降
Base58Checkダブル SHA-256 の 4 バイト確率的、保証なし1… と 3… の Bitcoin、Tron の T…、XRP

よくある間違い

Base58 のレガシー形式を含む Bitcoin アドレス全体の検証は、Bitcoin アドレスバリデーターで行えます。

よくある質問

bech32 とは何ですか?

BIP-173 で定義された Bitcoin SegWit アドレス用のエンコーディングです。人間可読部、区切り文字 1、32 文字のアルファベットで表したデータ、最大 4 文字の誤りを検出する 6 文字の BCH チェックサムから成ります。大文字小文字を区別せず、大文字にすると QR コードに適しています。

bech32 と bech32m の違いは何ですか?

Bech32m(BIP-350)は、末尾の文字が p のときの bech32 の弱点を修正するため、チェックサム定数を 1 から 0x2bc830a3 に変更しています。SegWit バージョン 0(bc1q)は bech32 のまま、バージョン 1 の Taproot 以降(bc1p)は bech32m を使います。デコーダーは両方を試します。

データがバイト単位に変換できないのはなぜですか?

Bech32 は 5 ビットグループを運びます。SegWit アドレスは 1 グループの witness バージョンの後にプログラムが続くため、生データはバイト境界に揃いません。ツールはバージョンとプログラムを分けて表示します。LNURL や npub などの他の用途では、パディング付きでバイト全体をエンコードします。

LNURL や Nostr の鍵をデコードできますか?

はい。lnurl1… は URL テキストに、npub1… と nsec1… は 32 バイトの鍵にデコードされます。nsec やあらゆる秘密鍵は、ここを含めどこにも絶対に貼り付けないでください。

bech32 文字列の最大長はいくつですか?

BIP-173 は 4 文字の誤り検出保証が成り立つよう、アドレスを 90 文字に制限しています。Lightning インボイスと LNURL ははるかに多くのデータを運ぶため意図的にこの制限を無視しています。チェックサムは機能しますが、非常に長い文字列では保証が弱まります。

公開鍵から SegWit アドレスを作るには?

圧縮公開鍵を SHA-256 の後に RIPEMD-160 でハッシュして 20 バイトのプログラムを得て、witness バージョン 0、hrp bc を選びます。Taproot の場合は 32 バイトの x-only 出力鍵をバージョン 1 で使います。このページはエンコードの工程を担当し、鍵のハッシュ計算は対象外です。