mcpField
B
btc-terminology

btc-terminology

github.com/hiromaily開発12843 回インストール27 週間前に更新
リポジトリ

btc-terminology について

btc-terminologyは、設定、Goコード、Bitcoin Core RPCで使うBitcoinアドレス用語を整理する開発スキルです。TaprootのアドレスタイプとBech32mのエンコード形式の混同を防ぎます。

主な機能

  1. 01TaprootとBech32mの区別
  2. 02設定とRPCでの用語整理
  3. 03Goの型変換の記載
  4. 04確認チェックリスト

活用シーン

  1. 01Taprootアドレス設定の編集
  2. 02Bitcoin Core RPC呼び出しの記述
  3. 03アドレス関連Goコードのレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hiromaily/go-crypto-wallet --skill btc-terminology

インストール後、Claude Code で/btc-terminologyを入力して読み込まれたか確認します。

詳細

BTC 用語ルール

🚨 重要:Bech32m と Taproot

これはよくあるバグの原因です。 これらの用語を混同しないでください。

用語意味使用箇所
bech32mエンコード形式(アドレスのシリアライズ方法)Bitcoin Core RPC、シェルスクリプト
taprootアドレスの種類(アドレスが表すもの)設定ファイル、ドメインモデル

重要なルール: bech32m ≠ taproot — 関連はありますが、互換性のある用語ではありません。

クイックリファレンス表

コンテキスト正しい用語例
設定 YAML/TOML ファイルtaprootaddress_type: "taproot"
環境変数taprootWALLET_ADDRESS_TYPE="taproot"
Bitcoin Core CLI/RPCbech32mbitcoin-cli getnewaddress "" bech32m
シェルスクリプト(受信アドレス)bech32mgetnewaddress "" bech32m
Go ドメインコード(internal/domain/address/)taprootAddrTypeTaproot
Go Bitcoin Core インターフェース(internal/domain/bitcoin/)bech32mAddressTypeTaproot = "bech32m"

よくある間違い

❌ 誤り
# Config file - DON'T use bech32m
address_type: "bech32m" # WRONG!
# Shell script - DON'T use taproot for Bitcoin Core RPC
bitcoin-cli getnewaddress "" taproot  # WRONG!
✅ 正しい例
# Config file - Use taproot
address_type: "taproot" # CORRECT!
# Shell script - Use bech32m for Bitcoin Core RPC
bitcoin-cli getnewaddress "" bech32m  # CORRECT!

技術的背景

なぜ異なる用語が2つあるのか?
  1. Taproot(BIP341)= SegWit バージョン1のアドレスの種類(P2TR - Pay-to-Taproot)
  2. Bech32m(BIP350)= 元の Bech32 のチェックサムの問題を修正するエンコード形式

すべての Taproot アドレスは bech32m を使ってエンコードされますが、次のように使い分けます。

  • ユーザー向けの設定では「taproot」を使用します(指定するアドレスの種類)
  • Bitcoin Core RPC では「bech32m」を使用します(エンコード方法)
アドレス形式の比較
エンコードSegWit バージョンアドレスの種類プレフィックス設定値
Base58N/AP2PKH1...legacy
Base58N/AP2SH3...p2sh-segwit
Bech32v0P2WPKHbc1q...bech32
Bech32mv1P2TRbc1p...taproot

コードベースの対応関係

このプロジェクトには、異なる型定義が2つあります。

// internal/domain/bitcoin/address_type.go
// For Bitcoin Core RPC communication
AddressTypeTaproot AddressType = "bech32m"  // Bitcoin Core uses "bech32m"

// internal/domain/address/types.go
// For user-facing configuration
AddrTypeTaproot AddrType = "taproot"  // User sees "taproot"

これらの変換は、マッパー関数で処理されます。

// internal/infrastructure/api/btc/btc/mapper.go
// FromAddressType: "bech32m" (Bitcoin Core) → "taproot" (user-facing)
// ToAddressType:   "taproot" (user-facing) → "bech32m" (Bitcoin Core)

検証チェックリスト

Taproot/Bech32m のコードを扱う際は、次の点を確認してください。

  • 設定ファイル(YAML/TOML)では address_type: "taproot" を使用する
  • 環境変数では WALLET_ADDRESS_TYPE="taproot" を使用する
  • シェルスクリプト内の Bitcoin Core RPC 呼び出しでは bech32m を使用する
  • 受信アドレスを生成するシェルスクリプトでは bech32m を使用する
  • Go コードでは、レイヤーに応じた正しい型を使用する:
    • ドメイン/設定レイヤー:AddrTypeTaproot(値:"taproot")
    • Bitcoin Core インターフェース:AddressTypeTaproot(値:"bech32m")

関連ファイル

ファイル用途
internal/domain/address/types.goユーザー向け AddrType の定義
internal/domain/bitcoin/address_type.goBitcoin Core の AddressType の定義
internal/infrastructure/api/btc/btc/mapper.go型変換関数
docs/chains/btc/taproot/user-guide.mdTaproot ユーザーガイド

Related Documentation

  • BIP350 - Bech32m specification
  • BIP341 - Taproot specification
  • BIP86 - Taproot key derivation (m/86'/...)

コメント