Bitcoin
少し前に、BitcoinでVaultを実現するために2つのopcodeを導入するソフトフォークの提案がBIP-345として登録された↓ https://github.com/bitcoin/bips/blob/master/bip-0345.mediawiki Vaultとは? Vault(金庫)は、その名前から分かるようにビットコインを…
最近Bitcoin Coreにマージされた変異ブロックに対する早期検証ロジック↓ github.com 変異ブロックとは? 変異ブロック(Muted Block)とは、新しく生成された有効なブロックの一部を変更した無効なブロックではあるけど、ハッシュ値が元のブロックと同じブロ…
最近Bitcoin Coreにv3トランザクションリレーポリシーのPRがマージされたので↓ github.com v3トランザクションリレーについてまとめてみた。 トランザクションの手数料引き上げ方法と課題 Bitcoinでブロードキャスト済みのトランザクションの手数料を引き上…
Optechのニュースレターに掲載されていた、Delving Bitcoinフォーラムで開示されたBitcoin Core v22.0より前のバージョンに存在したブロック遅延攻撃を可能にする脆弱性↓ https://delvingbitcoin.org/t/block-stalling-issue-in-core-prior-to-v22-0/499 脆…
先日、Delving Bitcoinで開示された、btcdで発見された相対的タイムロックのコンセンサスバグについて↓ https://delvingbitcoin.org/t/disclosure-btcd-consensus-bugs-due-to-usage-of-signed-transaction-version/455 相対的タイムロック トランザクション…
Core Lightnig v23.02〜v23.05.2に影響した脆弱性について、最近内容が開示された↓ DoS disclosure: Channel open race in CLN - Implementation - Delving Bitcoin ので、内容を確認してみる。詳細は報告者のブログ記事で説明されている↓ morehouse.github.…
これまでBitcoinのP2Pレイヤーの通信は暗号化されておらず平文でメッセージがやりとりされている。基本的にBitcoinの場合、ブロックやトランザクションなどのデータは誰もが共有する台帳データで機密性のあるデータではないから。 ただ、リレーされるデータ…
最近、過去(2021年)のLND実装のサービス拒否の脆弱性が公開されてたので見てみる↓ Denial-of-service bugs in LND's channel update gossip handling - Implementation - Delving Bitcoin (最近は、Delving Bitcoinフォーラムでの議論も増えてるっぽい。…
現状のBitcoinのUTXOセットについて、その内訳を調べてみた。 UTXOセットのダンプ Bitcoin Coreを実行すると、chainstateディレクトリ以下のLevelDBのファイルにUTXOセットのデータが格納される。LevelDBは基本的に1つのプロセスしかDBファイルを開けないの…
BitVMやZeroSyncの開発者であるRobin Linusが先日公開したBitStreamのペーパー↓ https://robinlinus.com/bitstream.pdf 分散型のコンテンツホスティングネットワークに対して(最近ユーザーが増えてるNostrとか)、持続可能なインセンティブを持たせるため、…
ZeroSyncのRobin Linusが、先日、Bitcoinで(現状opcodeとして存在しないような計算を含む)任意のロジックのコントラクトを表現できるようにする提案BitVMを発表した↓ https://bitvm.org/bitvm.pdf BitVMの仕組み 世の中にはたくさんのプログラムが存在する…
Simple Taproot Channelの提案について、これまで チャネルの開設フロー↓ techmedia-think.hatenablog.com 支払いの転送フロー↓ techmedia-think.hatenablog.com とみてきたので、最後はチャネルの閉鎖フローの変更点について↓ https://github.com/lightning…
前回の記事では、Simple Taproot Channelの開設ステップを見てきたので↓ techmedia-think.hatenablog.com 今回は、支払い(HTLC)の転送の変更点についてみていく。 https://github.com/lightning/bolts/blob/e25132d8de0164224578964fcd3f7328ddfc3281/bolt…
lnd v0.17.0のリリースで、実験的にTaproot Channelのサポートが追加される↓ https://github.com/lightningnetwork/lnd/blob/master/docs/release-notes/release-notes-0.17.0.md#protocol-features 従来のLNでは、チャネルを開く際、チャネル参加者の両名が…
Rusty RussellのBitcoinにおけるCovenantsの記事を見てて、Covenants via Signaturesという手法について言及されてたので、このCovenants手法を調べてみた。APOを使ってCTV Covenantsをエミュレートするというアプローチ。 SIGHASH_ANYPREVOUT BIP-118として…
最近追加されたBIP-389↓ https://github.com/bitcoin/bips/blob/master/bip-0389.mediawiki は、BIP-380に対する追加仕様。BIP-380は、ウォレットのバックアップにアウトプット・ディスクリプターを使用する際の仕様↓ techmedia-think.hatenablog.com この内…
MATT(Merkleize All The Things!)は、BitcoinのようなUTXOモデルで汎用的なスマートコントラクトを構築しようという提案の1つ↓ https://merkle.fun/ Taprootを利用したステートへのコミット EVMのようなステートツリーを持たないBitcoinで唯一管理されるス…
Bitcoinのmempoolについて、既存の課題とそれを改善する新しい設計案が提案されている↓(最近Optechで始まった限定シリーズも、この辺りの話があるから?) github.com 現在のmempoolの課題 mempoolには、Bitcoinネットワークでブロードキャストされた、まだ…
MuSigは、Schnorr署名でn-of-nのマルチシグを実現するにあたって、Rogue-Key攻撃に対する堅牢性を備えた署名プロトコル。MuSigは 署名に使用するPublic nonceのコミットメントの交換 Public nonceの交換 部分署名の作成、交換 という3ラウンドの通信を必要と…
Bitcoin上でNFTを取引可能にするOrdinalのDEX「OpenOrdex」がリリースされてたのでみてみる↓ github.com Dockerfileが提供されてるので、ビルドして実行するとローカル環境にOrdinalのDEXが起動する↓ Inscriptionの取得 Inscriptionは、Inscription numberを…
先日書いたCodex32について↓ techmedia-think.hatenablog.com 手計算可能と書いたけど、チェックサムの生成や、シェアの正しさの検証、追加シェアの導出やシェアを使ったリカバリーが本当に手計算可能なのか?実際にやってみる。やり方は、この冊子にまとめ…
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つの新…
少し間が空いたけど、 techmedia-think.hatenablog.com の障害からそんなに間を開けずに、再度LNDでチェーン同期ができなくなる障害が発生したので、その内容をまとめておく。 障害の原因 障害のトリガーとなったは、500,142 byte(125,109 vbyte)のこのト…
Bitcoinの新しいトランザクションリレープロトコルの提案Erlay↓ techmedia-think.hatenablog.com のコアとなる実装の1つがMinisketch。 Minisketchは、2つの集合の対称差を求めるアルゴリズムPinsketchを実装したライブラリ。つまりAとBという2つの集合があ…
techmedia-think.hatenablog.com ↑のアセットの新規発行に続いて、アセットを送付しようと思ったけど、その前にアセットを受け取る際に必要になるTaroのオンチェーンアドレス仕様について見ておく。 Taroアドレス Taroのアセットを受け取る際のアドレスは既…
前回の記事でTaroのアセットツリーの構造を確認したので↓ techmedia-think.hatenablog.com 今回は、Taroでのアセット発行の仕組みをRubyで実装しながらみていく。 tarocliを使ったアセットの発行 tarocliのassets mintコマンドを利用するとアセットを新規発…
lnd v0.15.1-beta以下で発生したlndでチェーンの同期ができなくなる不具合↓についてまとめておく。 github.com 正確には、btcdの不具合↓ github.com 障害の内容 今回発生した障害は、lndでブロックチェーンの同期ができなくなるというもの。そのため、その間…
ちょっと前のBitcoin Optechのニュースレターでx-only public keyの課題とその回避策について取り上げられていたので、詳しく調べてみた。 x-only public keyとは? Bitcoinに導入されたTaprootでは、署名検証に使用する公開鍵に32バイトのx-only public key…