BIP
先日、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 3を置き換えるTestnet 4の仕様がBIP-94としてBIPにマージされた↓ https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki testnetのリセットは、 金銭的価値のないtestnetのコインが詐欺まがいのエアドロップや売買に使用されていた…
BIP-352はBitcoinの静的な支払いアドレスプロトコルを定義するBIP↓ https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki Bitcoinにおけるプライバシーに関する推奨事項として、アドレスの再利用をしないというのがよく挙げられる。複数のトラン…
先日マージされたBIP-328↓は、 https://github.com/bitcoin/bips/blob/master/bip-0328.mediawiki MuSig2の集約公開鍵をベースに新たな子鍵を導出するためのスキームを定義した仕様になる。 MuSig2は、n-of-nのマルチシグに参加する複数の参加者の鍵を1つの…
最近マージされたBIP-46は、Join Marketで既に展開されているFelidity bondのアドレス導出スキームをBIP化したもの↓ https://github.com/bitcoin/bips/blob/master/bip-0046.mediawiki Fidelity bondとは? 元々の意味は、身元保証で、ある人物の行為によっ…
Bitcoinで支払いをする場合、その支払先はアドレスという形で提供され、それをURI形式にしたのがBIP-21↓ techmedia-think.hatenablog.com BIP-21のURIは、bitcoin:の後にアドレスやその他の情報がエンコードされる。ただ、アドレスも人が読みやすい/覚えやす…
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が先日登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0331.mediawiki トランザクションリレーとmempool 現状のBitcoinのトランザクションリレー…
少し前に、BitcoinでVaultを実現するために2つのopcodeを導入するソフトフォークの提案がBIP-345として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0345.mediawiki Vaultとは? Vault(金庫)は、その名前から分かるようにビットコインを…
これまでBitcoinのP2Pレイヤーの通信は暗号化されておらず平文でメッセージがやりとりされている。基本的にBitcoinの場合、ブロックやトランザクションなどのデータは誰もが共有する台帳データで機密性のあるデータではないから。 ただ、リレーされるデータ…
最近追加されたBIP-389↓ https://github.com/bitcoin/bips/blob/master/bip-0389.mediawiki は、BIP-380に対する追加仕様。BIP-380は、ウォレットのバックアップにアウトプット・ディスクリプターを使用する際の仕様↓ techmedia-think.hatenablog.com この内…
MuSigは、Schnorr署名でn-of-nのマルチシグを実現するにあたって、Rogue-Key攻撃に対する堅牢性を備えた署名プロトコル。MuSigは 署名に使用するPublic nonceのコミットメントの交換 Public nonceの交換 部分署名の作成、交換 という3ラウンドの通信を必要と…
Bitcoinの主要ウォレットはBIP-32 HDウォレットをサポートしており、単一のマスターシードから、支払いや受け取りに使用するすべての鍵を導出するようになっている。オンチェーンの資金は、基本的にこのマスターシードだけ保持していれば、そこからリカバリ…
先日、Bitcoinのウォレットからラベルをエクスポートしたりインポートするためのフォーマットを定義したBIP-329が公開されたので見ておく↓ https://github.com/bitcoin/bips/blob/master/bip-0329.mediawiki BIP-32のHDウォレットやBIP-39のようなニーモニッ…
Bitcoinで新しいトランザクションリレープロトコルの提案Erlayをサポートするために必要な、新しいP2Pメッセージを定義したBIP-330が公開されてたので見てみる↓ https://github.com/bitcoin/bips/blob/master/bip-0330.mediawiki BIP-330では、以下の5つの新…
Bitcoinのウォレットなどが、単一のマスターシードから多数の鍵ペアを決定論的に導出する仕様を定義したのがBIP-32↓ techmedia-think.hatenablog.com これは、Bitcoinが採用している楕円曲線secp256k1とECDSAを前提に作られた仕様になる。 これに対して、EdD…
最近オフチェーンプロトコルのプライバシーを向上させるために、オンチェーンウォレットで実装が推奨されるポリシーが、BIP-326として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0326.mediawiki Informational BIPなのでコンセンサスに影…
Output Script Descriptorは、Bitcoin Core v0.17からサポートされ始めた言語で、ウォレットやその他のプログラムが、自身が所有(関連)するUTXOを追跡するのに必要な情報を含むデータを定義する。 Bitcoinのウォレットの多くはHDウォレットをサポートして…
Taprootのアクティベートに向けて、単一の鍵でPay to Taproot(P2TR)にコインをロックする際の、鍵の導出仕様がBIP-86として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki 単一の鍵なので、対象はTaprootのKey-Path使うケー…
Bitcoinの秘密鍵やアドレスは決定性ウォレットによって導出されるのが主流だが、シードからどんなアドレスを導出するか(どんなBIP32導出パスを使うか)は、スクリプトタイプによっていくつかのBIPが定義されており、そのどれが使われているか、もしくは独自…
Bitcoinのウォレットの多くは、1つのマスターシードから各秘密鍵やアドレスの導出を行う階層的決定性ウォレットをサポートしている。この仕組みを使うことで、シードさえ覚えていれば、ウォレットを復元することができる。さらに、ウォレットが複数のアカウ…
先日、マルチシグを安全にセットアップするための提案Bitcoin Secure Multisig Setup (BSMS)が、新しくBIP-129として定義された、↓ https://github.com/bitcoin/bips/blob/master/bip-0129.mediawiki PSBTなどで、ウォレット間で協力してトランザクションを…
PSBTは、マルチパーティでBitcoinのトランザクションを構築したり、トランザクションの署名にハードウェアウォレットと連携したりする際に、共通のデータフォーマットを定義した仕様で、2017年に定義され、これまでいくつか修正が加えられてきた↓ techmedia-…
Bitcoin Coreはネットワークに接続すると8つアウトバウンドピアを選択するが、エクリプス攻撃などに対する堅牢性を高めるため、Bitcoin Core 0.19.0.1以降これにブロックリレーのみを行う2つのアウトバウンド接続(ブロックオンリーリレー)が追加されている…
Segwit導入にあたって新しいアドレス(bc1から始まるアドレス)のエンコーディング方式として導入されたのがBIP-173として定義されたBech32 techmedia-think.hatenablog.com Bech32にはタイプミスなどのアドレスの間違いが検出できるチェックサムが含まれて…
Bitcoinへのソフトフォークは紆余曲折あった2017年8月のSegwitの導入以降、3年経とうとしているが新たに行われていない。次のソフトフォーク候補として有力なのがSchnorr署名およびTaprootの導入だが、BIP化はされたもののまだBitcoin Coreに実装はマージさ…
Bitcoinでトランザクションをリレーする際は、接続中のピアに対してinvメッセージでトランザクションを通知し、相手のピアがそのトランザクションを持っていない場合、getdataメッセージでそのトランザクションデータを要求する。この際のトランザクションの…
Bitcoinの鍵を管理するウォレットでは、BIP-32のHDウォレットの仕様↓をサポートし、マスターシードから取引に使用する個別の鍵を導出するようになっているのがほとんど。 techmedia-think.hatenablog.com さらにBIP-39の仕様を利用してマスターシードを12個…
Bitcoin関連のテストを行うのに便利なtestnetだが、ブロックの生成間隔がまばら(30分くらい生成されなかったり、数秒で連続してブロックが生成されたり)だったり、巨大な再編成が起こったりとあまり安定していない。そのためテストになかなか使いづらくな…
ブラインドマージマーニング(BMM)の仕様がBIP-301として定義された↓ https://github.com/bitcoin/bips/blob/master/bip-0301.mediawiki マージマイニングの仕組みについては、以下の記事が分かりやすい。 btcnews.jp このBIPでは、サイドチェーンのマイナ…