BIP
Payjoinは、送金トランザクションのインプットに送信者のインプットに加えて受信者のインプットを加えることで、トランザクションのインプットはすべて同一ユーザーが所有しているという「common input ownership」と呼ばれる分析のヒューリスティックを破壊…
Bitcoinに長年存在している複数の脆弱性および弱点に対処するために長年議論されていたコンセンサスクリーンアップの提案が最近BIP-54として最近マージされた↓ https://github.com/bitcoin/bips/blob/master/bip-0054.md コンセンサスクリーンアップ コンセ…
Bitcoinで支払先の情報を記述するURIスキームとしては、古くからBIP-21が使用されてきた↓ techmedia-think.hatenablog.com ただ、BIP-21はアドレス仕様として正式にサポートしているのがBase58checkエンコーディング(P2PKH、P2SH)のみであったり*1、新しい…
先日マージされたBIP-374↓は、楕円曲線のベースポイントGともう1つの点Bを基に、それぞれに同じスカラー値aを乗算した点A = aGと点C = aBが同じ、同じスカラー値(離散対数)aによって導出された点であることをaの値を明かすことなく証明する=離散対数の等…
先日OP_CHECKSIGFROMSTACK opcodeの導入を提案するBIP-348がBIPとして登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0348.md OP_CHECKSIGFROMSTACK OP_CHECKSIGFROMSTACK(OP_CSFS)自体は、昔からElementsに導入されているopcodeで、スタッ…
先日、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にはタイプミスなどのアドレスの間違いが検出できるチェックサムが含まれて…