Bitcoin Core
先日リリースされたBitcoin Core v31.0では↓ https://bitcoincore.org/ja/releases/31.0/ クラスターmempoolの導入(mempool 内のトランザクションセットをクラスター単位で管理する設計への変更で、RBF の検証ロジックも刷新)や、プライベートブロードキャ…
Bitcoin Coreでは、現在mempoolの設計に大幅な見直しが入っている。 mempoolは、まだブロックに格納されていない未承認トランザクションを一時的に保持する仕組みで、mempool内のTxは親子関係からDAG(有向非巡回グラフ)を形成する。マイナーは基本的にこの…
2023年12月にブロック高821,628時点のUTXOセットの内訳について以前調べてみたけど↓ techmedia-think.hatenablog.com これが現状どう変化したかブロック高910,000時点(2025年8月14日あたり)のUTXOセットで確認してみた。 UTXOセットの入手 先日Bitcoin Cor…
先日リリースされたBitcoin Core v29.0でビルドシステムが刷新された↓ https://bitcoincore.org/ja/releases/29.0/ これまで長らくAutotoolsを使ってビルドしていたけど↓ techmedia-think.hatenablog.com ビルドシステムがCMakeに移行された。 CMakeを使った…
Bitcoin Core v28.0以降からサポートされたAssumeUTXOを用いた新たな同期モードを試してみた。 ブロックチェーンの同期 ブロックチェーンの同期とは、チェーンの状態の同期を意味する。Bitcoinの場合、状態とはUTXOセットの状態を指す。ノードを初めて起動す…
ウィルス対策ソフトウェアの誤検知により、BitcoinのブロックやUTXOセットのデータが自動的に隔離/削除され、bitcoindがクラッシュしデータの破損につながる事例がいくつか報告された結果、DBのデータを難読化する機能が搭載された。 UTXOセットのデータ(ch…
先日リリースされたBitcoin Core v28.0が、Pay to Anchorアウトプットを使用するトランザクションのリレーをサポートした。Pay to Anchorというのはエフェメラルアンカーという提案の一部。 エフェメラルアンカー エフェメラルアンカーは、ライトニングネッ…
Bitcoin Coreはv0.20.0からASMapを利用したアウトバウンドピアの選択をサポートしている↓ Bitcoin Core 0.20.0でASマップを使ったピア選択を有効にする - Develop with pleasure! このASMapを作成して配布するプロセスについて最近投稿されていたので↓ delvi…
最近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 脆…
現状のBitcoinのUTXOセットについて、その内訳を調べてみた。 UTXOセットのダンプ Bitcoin Coreを実行すると、chainstateディレクトリ以下のLevelDBのファイルにUTXOセットのデータが格納される。LevelDBは基本的に1つのプロセスしかDBファイルを開けないの…
Bitcoin Coreでは、User-space Statically Defined Tracing(USDT、※Tetherではない)ベースのトレースポイントが提供されており、Linux環境で動作するBitcoin Coreでは、このトレースポイントを使って、内部のデータにアクセスできるようになっている。 Bit…
先日、Bitcoin CoreをGitian Buildを使ってビルドする記事を書いた↓ techmedia-think.hatenablog.com けど、最近以下のPRがBitcoin Coreにマージされた結果、Linux / Windows / macOSのバイナリのビルドがGNU Guixでできるようになった。 github.com Gitian…
少し前にBitcoin Core v0.21.0がリリースされたけど、このBitcoin CoreのリリースにはGitian Buildという決定性ビルドプロセスが使われている。 https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md Gitian Buildとは? 公式サイトによ…
先日リリースされたBitcoin Core 0.21.0で軽量クライアント向けて新しいフィルターの提供がサポートされるようになった。有効になったBIP-157の仕様については↓ techmedia-think.hatenablog.com BIP-157のサポートはBitcoin Core起動時に-blockfilterindex=1…
最近公開された、2018年のBitcoin Coreに存在していた脆弱性に関するペーパー↓ https://invdos.net/paper/CVE-2018-17145.pdf この脆弱性はもともとJavaScriptで実装されたBitcoinのノード実装の1つであるBcoinで発見されたもので、攻撃方法は同じでも、Bco…
BitcoinのP2Pネットワークに参加するノードは、起動時に他のピアを探し接続することでネットワークに参加する。現在Bitcoin Coreでは8つのアウトバウンドピア(ブロックリレー専用のものがさらに2つある)に接続するようになっているが、ピアを選択する際に…
Bitcoinでは、送金時にトランザクションにセットする署名に、現在ECDSA署名を採用している。 秘密鍵をx、対応する公開鍵をP = xGとした場合、メッセージにmに対するECDSA署名は以下のように作成する。 署名の作成 ランダムな値kを選択する。 点R = kGを計算…
既存のコードの追加・改修の際に、動作を保証するテストコードがあり、自動テストできる環境があるのは重要で、Bitcoin Coreにももちろんテストコードと自動テストの仕組みがある。 Bitcoin Coreには単体テストと、リグレッション及びインテグレーションテス…
2014年4月にリリースされたBitcoin Core 0.9.0、ネットワークのプロトコルバージョン70002でサポートされたrejectメッセージのBIP↓ bips/bip-0061.mediawiki at master · bitcoin/bips · GitHub リモートピアとメッセージを交換する際、意図する動作になら…
2012年5月にリリースされたBitcoin Core 0.6.1から導入されたPeer Serviceレイヤーの拡張で、リモートピアの生存確認と、レイテンシーの測定を可能にするBIP-031↓ bips/bip-0031.mediawiki at master · bitcoin/bips · GitHub 簡単に言うとよくあるping送っ…
Bitcoin Core 0.14.1のマイナーアップデートがリリースされてたので主な変更内容を見ておく。 bitcoin/release-notes-0.14.1.md at master · bitcoin/bitcoin · GitHub RPCの変更 createrawtransactionの最初の引数がtransactionsからinputsにリネームされた…
Bitcoin Core 0.14.0がリリースされたのでどんな変更があったのか見ておく↓ Bitcoin Core :: Bitcoin Core 0.14.0 Released with Performance Improvements 主な新機能は↓ IBDのパフォーマンス改善 ブロックチェーンのデータサイズは絶えず増加していて、現…
先日Bitcoin Core 0.13.2がリリースされた↓ bitcoincore.org リリースノートは↓ bitcoincore.org 主な変更点 0.13系のマイナーアップデートなので、基本的にはBugfixとパフォーマンス改善のリリースになるので、新機能のリリースは無い。 古いOSをサポート対…
techmedia-think.hatenablog.com 先月リリースされたBitcoin Core 0.13.0にSegwitのコードがマージされtestnetで利用可能になったので、関連するRPCの変更点を見てみる。 RPCの変更点 getblock と getblockheader の変更点 出力内容に新しく以下の項目が追加…
Bitcoin Core 0.13.0がリリースされた。 Bitcoin Core :: Bitcoin Core 0.13.0 Released! Bitcoin Coreのブログより、主な新機能は↓ segregated witnessの準備 0.13.0で一番重要なコードの変更で、今後のソフトフォームに向けてsegwitのコードが含まれている…
先月Bitcoin Coreの0.12.0がリリースされてる。 Bitcoin Core :: Bitcoin Core 0.12.0 Released! 追加機能 署名の検証が7倍高速に Bitcion CoreではOpenSSLを使って楕円曲線暗号の署名の検証をしていたけどこの部分を3年前から作り始めたlibsecp256k1に置き…
Bitcoinの公式実装であるBitcoin Core。他のブロックチェーンの実装でもBitcoin Coreをフォークした実装が多く、手軽にオレオレ ブロックチェーンを作るのであればBitcoin Coreをフォークするのがお手軽。ということでBitcoin Coreをソースからビルドしてみ…
Bitcoin CoreのAPIを使わずに直接データを参照できないかなーとデータディレクトリの構造を調べてみた。bitcoindを起動するとホームディレクトリ直下に.bitcoinディレクトリが生成される。Bitcoinの設定やデータはこのディレクトリ内に格納される。 ディレク…