Develop with pleasure!

福岡でCloudとかBlockchainとか。

BIP

Tapscript用の新しいopcode OP_INTERNALKEYを提案するBIP-349

先日、TapscriptにOP_INTERNALKEYという新しいopcodeの導入を提案するBIP-349がBIPとして登録された↑ https://github.com/bitcoin/bips/blob/master/bip-0349.md OP_INTERNALKEY OP_INTERNALKEY opcodeは、スタックにTaprootの内部鍵をプッシュするopcode。T…

Testnet 4の仕様を定義したBIP-94

現在のTestnet 3を置き換えるTestnet 4の仕様がBIP-94としてBIPにマージされた↓ https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki testnetのリセットは、 金銭的価値のないtestnetのコインが詐欺まがいのエアドロップや売買に使用されていた…

サイレントペイメントの仕様を定義したBIP-352

BIP-352はBitcoinの静的な支払いアドレスプロトコルを定義するBIP↓ https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki Bitcoinにおけるプライバシーに関する推奨事項として、アドレスの再利用をしないというのがよく挙げられる。複数のトラン…

MuSig2の集約公開鍵からの鍵導出スキームを定義するBIP-328

先日マージされたBIP-328↓は、 https://github.com/bitcoin/bips/blob/master/bip-0328.mediawiki MuSig2の集約公開鍵をベースに新たな子鍵を導出するためのスキームを定義した仕様になる。 MuSig2は、n-of-nのマルチシグに参加する複数の参加者の鍵を1つの…

タイムロック付きのFelidity bondのアドレス導出スキームを定義するBIP-46

最近マージされたBIP-46は、Join Marketで既に展開されているFelidity bondのアドレス導出スキームをBIP化したもの↓ https://github.com/bitcoin/bips/blob/master/bip-0046.mediawiki Fidelity bondとは? 元々の意味は、身元保証で、ある人物の行為によっ…

BIP-21 URIをDNSで解決する仕様の提案BIP-353

Bitcoinで支払いをする場合、その支払先はアドレスという形で提供され、それをURI形式にしたのがBIP-21↓ techmedia-think.hatenablog.com BIP-21のURIは、bitcoin:の後にアドレスやその他の情報がエンコードされる。ただ、アドレスも人が読みやすい/覚えやす…

OP_CATの再導入の提案BIP-347

TapscriptでOP_CAT opcodeを利用可能にしようという提案のBIPがBIP-347として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0347.mediawiki OP_CATとは OP_CAT opcodeは、スタックから上位2つの要素をポップし、それらを連結した値をスタッ…

BitcoinのP2Pネットワークにおけるトランザクションパッケージのリレー(BIP-331)

BitcoinのP2Pネットワークにおいて、トランザクションパッケージのリレーをサポートするBIP-331が先日登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0331.mediawiki トランザクションリレーとmempool 現状のBitcoinのトランザクションリレー…

Vault用のopcodeの導入を提案するBIP-345

少し前に、BitcoinでVaultを実現するために2つのopcodeを導入するソフトフォークの提案がBIP-345として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0345.mediawiki Vaultとは? Vault(金庫)は、その名前から分かるようにビットコインを…

BitcoinのP2P層の通信を暗号化するBIP-324

これまでBitcoinのP2Pレイヤーの通信は暗号化されておらず平文でメッセージがやりとりされている。基本的にBitcoinの場合、ブロックやトランザクションなどのデータは誰もが共有する台帳データで機密性のあるデータではないから。 ただ、リレーされるデータ…

BIP-380のKey Expressionで複数のディスクリプターを表現できるようにする追加仕様の提案(BIP-389)

最近追加されたBIP-389↓ https://github.com/bitcoin/bips/blob/master/bip-0389.mediawiki は、BIP-380に対する追加仕様。BIP-380は、ウォレットのバックアップにアウトプット・ディスクリプターを使用する際の仕様↓ techmedia-think.hatenablog.com この内…

BitcoinでMuSig2*をサポートするためのBIP-327

MuSigは、Schnorr署名でn-of-nのマルチシグを実現するにあたって、Rogue-Key攻撃に対する堅牢性を備えた署名プロトコル。MuSigは 署名に使用するPublic nonceのコミットメントの交換 Public nonceの交換 部分署名の作成、交換 という3ラウンドの通信を必要と…

手計算でBIP-32シードを生成/検証可能な新しいシードエンコード方式Codex32

Bitcoinの主要ウォレットはBIP-32 HDウォレットをサポートしており、単一のマスターシードから、支払いや受け取りに使用するすべての鍵を導出するようになっている。オンチェーンの資金は、基本的にこのマスターシードだけ保持していれば、そこからリカバリ…

ウォレットからラベルをエクスポート/インポートするフォーマットを定義したBIP-329

先日、Bitcoinのウォレットからラベルをエクスポートしたりインポートするためのフォーマットを定義したBIP-329が公開されたので見ておく↓ https://github.com/bitcoin/bips/blob/master/bip-0329.mediawiki BIP-32のHDウォレットやBIP-39のようなニーモニッ…

Erlayをサポートするために必要なP2Pプロトコルを定義したBIP-330

Bitcoinで新しいトランザクションリレープロトコルの提案Erlayをサポートするために必要な、新しいP2Pメッセージを定義したBIP-330が公開されてたので見てみる↓ https://github.com/bitcoin/bips/blob/master/bip-0330.mediawiki BIP-330では、以下の5つの新…

Ed25519で決定論的な鍵導出をサポートするBIP32-Ed25519

Bitcoinのウォレットなどが、単一のマスターシードから多数の鍵ペアを決定論的に導出する仕様を定義したのがBIP-32↓ techmedia-think.hatenablog.com これは、Bitcoinが採用している楕円曲線secp256k1とECDSAを前提に作られた仕様になる。 これに対して、EdD…

オフチェーンプロトコルのプライバシーを向上させるオンチェーンウォレットのポリシーを定義したBIP-326

最近オフチェーンプロトコルのプライバシーを向上させるために、オンチェーンウォレットで実装が推奨されるポリシーが、BIP-326として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0326.mediawiki Informational BIPなのでコンセンサスに影…

Output Script Descriptorの基本仕様を定義したBIP-380

Output Script Descriptorは、Bitcoin Core v0.17からサポートされ始めた言語で、ウォレットやその他のプログラムが、自身が所有(関連)するUTXOを追跡するのに必要な情報を含むデータを定義する。 Bitcoinのウォレットの多くはHDウォレットをサポートして…

P2TRの鍵導出仕様を定義したBIP-86

Taprootのアクティベートに向けて、単一の鍵でPay to Taproot(P2TR)にコインをロックする際の、鍵の導出仕様がBIP-86として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki 単一の鍵なので、対象はTaprootのKey-Path使うケー…

BIP32鍵導出パスのパステンプレートを定義したBIP-88

Bitcoinの秘密鍵やアドレスは決定性ウォレットによって導出されるのが主流だが、シードからどんなアドレスを導出するか(どんなBIP32導出パスを使うか)は、スクリプトタイプによっていくつかのBIPが定義されており、そのどれが使われているか、もしくは独自…

マルチシグウォレット用の新しいBIP-32階層仕様を提案するBIP-87

Bitcoinのウォレットの多くは、1つのマスターシードから各秘密鍵やアドレスの導出を行う階層的決定性ウォレットをサポートしている。この仕組みを使うことで、シードさえ覚えていれば、ウォレットを復元することができる。さらに、ウォレットが複数のアカウ…

Bitcoin Secure Multisig Setup (BSMS)

先日、マルチシグを安全にセットアップするための提案Bitcoin Secure Multisig Setup (BSMS)が、新しくBIP-129として定義された、↓ https://github.com/bitcoin/bips/blob/master/bip-0129.mediawiki PSBTなどで、ウォレット間で協力してトランザクションを…

PSBT Version 2を定義したBIP-370

PSBTは、マルチパーティでBitcoinのトランザクションを構築したり、トランザクションの署名にハードウェアウォレットと連携したりする際に、共通のデータフォーマットを定義した仕様で、2017年に定義され、これまでいくつか修正が加えられてきた↓ techmedia-…

ピアにトランザクションをリレーしないことを通知するdisabletxメッセージを定義したBIP-338

Bitcoin Coreはネットワークに接続すると8つアウトバウンドピアを選択するが、エクリプス攻撃などに対する堅牢性を高めるため、Bitcoin Core 0.19.0.1以降これにブロックリレーのみを行う2つのアウトバウンド接続(ブロックオンリーリレー)が追加されている…

Bech32の問題を修正した改良版Bech32m(BIP-350)

Segwit導入にあたって新しいアドレス(bc1から始まるアドレス)のエンコーディング方式として導入されたのがBIP-173として定義されたBech32 techmedia-think.hatenablog.com Bech32にはタイプミスなどのアドレスの間違いが検出できるチェックサムが含まれて…

Bitcoinの次のソフトフォークのデプロイ方法は?

Bitcoinへのソフトフォークは紆余曲折あった2017年8月のSegwitの導入以降、3年経とうとしているが新たに行われていない。次のソフトフォーク候補として有力なのがSchnorr署名およびTaprootの導入だが、BIP化はされたもののまだBitcoin Coreに実装はマージさ…

WTXIDを使ったP2Pリレーの仕様を定義したBIP-339

Bitcoinでトランザクションをリレーする際は、接続中のピアに対してinvメッセージでトランザクションを通知し、相手のピアがそのトランザクションを持っていない場合、getdataメッセージでそのトランザクションデータを要求する。この際のトランザクションの…

BIP-32のキーチェーンから決定論的にエントロピーを導出する仕様BIP-85

Bitcoinの鍵を管理するウォレットでは、BIP-32のHDウォレットの仕様↓をサポートし、マスターシードから取引に使用する個別の鍵を導出するようになっているのがほとんど。 techmedia-think.hatenablog.com さらにBIP-39の仕様を利用してマスターシードを12個…

Bitcoinの新しいテストネットワーク「Signet」の仕様を定義したBIP-325

Bitcoin関連のテストを行うのに便利なtestnetだが、ブロックの生成間隔がまばら(30分くらい生成されなかったり、数秒で連続してブロックが生成されたり)だったり、巨大な再編成が起こったりとあまり安定していない。そのためテストになかなか使いづらくな…

ブラインドマージマーニング(BMM)の仕様を定義したBIP-301

ブラインドマージマーニング(BMM)の仕様がBIP-301として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0301.mediawiki マージマイニングの仕組みについては、以下の記事が分かりやすい。 btcnews.jp このBIPでは、サイドチェーンのマイナ…