Bitcoin Core 31.0

Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.

v31.0 リリースノート

Bitcoin Core バージョン 31.0 は以下から入手可能です:

https://bitcoincore.org/bin/bitcoin-core-31.0/

このリリースには、新しい機能やさまざまなバグ修正とパフォーマンスの改善および更新された翻訳が含まれています。

バグの報告にはGitHubのIssue Trackerを使用してください:

https://github.com/bitcoin/bitcoin/issues

セキュリティやアップデートの通知を受け取りたい場合は、以下に登録してください:

https://bitcoincore.org/en/list/announcements/join/

アップグレード方法

旧バージョンを起動している場合はシャットダウンしてください。 完全にシャットダウンするのを待ってから(数分かかる場合があります)、 Windowsの場合はインストーラーを実行、Macの場合は/Applications/Bitcoin-Qtを上書き、 Linuxの場合はbitcoind/bitcoin-qtを上書きしてください。

EOLに達したBitcoin Coreのバージョンから直接アップグレードすることは可能ですが、 データディレクトリを移行する必要がある場合は時間がかかる可能性があります。 Bitcoin Coreの旧ウォレットバージョンが一般的にサポートされます。

互換性

Bitcoin CoreはLinuxカーネル3.17以降やmacOS 14以降、Windows 10(バージョン 1903)以降を使用している オペレーティングシステムでサポートされ、広範囲にテストされています。 Bitcoin Coreは他のほとんどのUNIXライクなシステムでも動作するはずですが、 それらの環境では頻繁にテストされていません。 サポートされていないシステムでBitcoin Coreを使用するのはお勧めできません。

主な変更点

-dbcacheのデフォルト値が、4096 MiB以上のRAMを検出したシステムにおいて、 450 MiBから1024 MiBに引き上げられました。これによりパフォーマンスが向上しますが、メモリ使用量は増加します。 一部のシステム(たとえばコンテナ内で動作している場合)では、検出されるRAMが実際に利用可能なメモリを超えることがあり、 メモリ不足(OOM)を引き起こす可能性があります。従来の挙動を維持するには、 -dbcache=450を設定してください。低メモリシステム向けのガイドについては、 reduce-memory.md をご覧ください。(#34692)

Mempool

mempoolは新しい設計「クラスターmempool」で再実装されました。これにより、 ブロックテンプレートの構築、トランザクションの排除、トランザクションのリレーおよび、 置換トランザクション(RBF)の検証における意思決定が改善されます。 ほとんどの変更はユーザーから見て透過的ですが、以下のいくつかの挙動変更があります:

  • mempoolは、祖先(ancestor)や子孫(descendant)のサイズ/個数制限を強制しなくなりました。 代わりに、mempool内の連結コンポーネント、すなわちクラスターを対象とする2つの新しいデフォルトポリシー制限が導入されました。 クラスターは最大64個のトランザクション、かつ仮想サイズで最大101kBに制限されます。 mempool内で親子関係の任意の組み合わせによって相互に接続されているトランザクションは、 同一クラスターに属することになります。これらの制限はコマンドライン引数で上書き可能です。 詳細は、拡張ヘルプ(-help-debug)をご覧ください。

  • mempool内において、トランザクションはマイニングされると予想される手数料率に基づいて順序付けされます。 この時、一緒に含まれることになるトランザクションの集合全体、すなわち「チャンク」(例: 親とその子、またはより複雑なトランザクションの部分集合)が考慮されます。この順序は、 ブロックテンプレート構築のためのトランザクション選択、mempoolがいっぱいになった時の排除、 ピアへのトランザクションリレー通知を実装するアルゴリズムで利用されます。

  • RBF(Replace-By-Fee)の検証ロジックが更新され、置換後のmempoolの手数料率ダイアグラムが 置換前よりも厳密に改善される場合のみ、トランザクションの置換が受け入れられるようになりました。 これにより、従来のRBFルールでは起こり得たmempoolの状態を悪化させる置換の既知のケースがすべて排除されます。 単独トランザクション(それ自身のみがクラスターを構成するもの)の場合は、 置換トランザクションの手数料と手数料率が元のものより高ければ十分です。詳細は、 delvingbitcoin.orgの投稿 をご覧ください。

  • 2つの新しいRPCが追加されました: getmempoolclusterは指定したトランザクションと同じクラスターに属するトランザクション群を、 その順序およびチャンクへのグルーピングと一緒に返します。getmempoolfeeratediagramは、 mempool全体の手数料率ダイアグラムを返します。

  • getmempoolentryの出力に、チャンクサイズとチャンク手数料も含まれるようになりました。

  • mempoolのロジックから「CPFP Carveout」が削除されました。CPFP carveoutは、 既に子孫の制限に達しているパッケージに対して追加の子トランザクションを1つだけ許可するものでしたが、 その子が厳密に1つだけの祖先(パッケージのルート)を持ち、かつ小さい(10kvB以下)場合に限られていました。 今後はクラスターの個数制限を回避することは何も許されません。 同様の機能を必要とするスマートコントラクトのユースケースでは、 TRUCトランザクションおよび兄弟の排除を代わりに採用することが期待されます。

  • その他の検討事項はdoc/policy/mempool-terminology.md およびdoc/policy/mempool-replacements.mdで確認できます。

P2Pとネットワークの変更

  • 通常、ローカルトランザクションは、トランザクションのリレーを行う接続中のすべてのピアにブロードキャストされます。 今回、sendrawtransaction RPCについて、このブロードキャストをTorまたはI2Pネットワーク経由のみに限定するように 挙動を変更できるようになりました。この挙動を有効にするために、新しいブールオプション -privatebroadcastが追加されています。これにより、トランザクション発信者のプライバシーが 以下の2つの面で改善されます:
    1. 発信者のIPアドレス(つまり地理情報)が受信者に知られることがない
    2. 発信者が互いに関連しない2つのトランザクションを送信した場合、 それらをリンクできない。これは各トランザクションのブロードキャストに別の接続が使用されるためです。(#29415)
  • プライベートブロードキャストを参照・制御するための新しいRPCが追加されました: getprivatebroadcastinfoは、現在プライベートブロードキャスト中のトランザクションを報告し、 abortprivatebroadcastは、条件に一致するトランザクションをプライベートブロードキャストキューから取り除きます。(#34329)

  • 1P1C(one-parent-one-child)パッケージリレーに参加するトランザクションにおいて、 親トランザクションが-minrelaytxfee手数料率より低い手数料率(手数料ゼロでも可)であることが許容されるようになりました。 これは28.0での変更を非TRUCトランザクションのパッケージにも拡張するものです。 なお、一般的にパッケージの子トランザクションは別の未承認の親を持ち得ますが、 それらは新しいパッケージをリレーする時点で既にmempool内に存在していなければなりません。(#33892)

  • 本リリースで初めてasmapデータが埋め込まれ、外部からファイルを取得することなくasmap機能を使用できるようになりました。 埋め込まれたマップは2026-03-05に作成されたものです。データが利用可能になったものの、 このオプションはデフォルトで無効なままです。ピアのASN(ISP/ホスティング事業者の識別子)を netgroupのバケッティングに利用し、ピアセットの多様性を高めるためには、引き続きユーザーが明示的に -asmapまたは-asmap=1を設定する必要があります。

RPCの更新

  • gettxspendingprevoutに2つの新しいオプション引数mempool_onlyreturn_spending_txが追加されました。 mempool_onlyがtrueの場合、txospenderindexが利用可能であってもスキャンはmempoolに限定されます。 return_spending_txがtrueの場合、完全な支払いトランザクションが返されます。さらに、 txospenderindexが利用可能で、承認済みの支払いトランザクションが見つかった場合、 そのブロックハッシュが返されます。(#24539)

  • getpeerinfo RPCは、設定オプション-deprecatedrpc=startingheightを使用しない限り、 startingheightフィールドを返さなくなりました。 startingheightフィールドは次のメジャーリリースで完全に削除されます。(#34197)

  • getblock RPCは、冗長度レベル1, 2, 3においてcoinbase_txオブジェクトを返すようになりました。 これには、versionlocktimesequencecoinbasewitnessが含まれます。 これにより、冗長度2以上でトランザクションデータ全体を取得することなく、 コインベーストランザクションのプロパティを効率的にクエリできます。(#34512)

REST API

  • 新しいREST APIエンドポイント(/rest/blockpart/<BLOCK-HASH>.<bin|hex>?offset=<OFFSET>&size=<SIZE>)が導入され、 ブロック<BLOCK-HASH>から指定バイトの範囲を効率的に取得できるようになりました。(#33657)

ビルドシステム

  • サポート対象のClangコンパイラの最低バージョンが17.0に引き上げられました。(#33555)
  • サポート対象のGCCコンパイラの最低バージョンが12.1に引き上げられました。(#33842)

設定の更新

  • -paytxfee起動オプションおよびsettxfee RPCは、Bitcoin Core 30.0で非推奨とされた後、 本リリースで削除されました。これらはユーザーがウォレットトランザクションに対して 静的な手数料を設定できるようにするものでしたが、過払いや過小払いを引き起こす可能性がありました。 ユーザーは代わりに手数料推定に依存するか、fundrawtransactionsendtoaddresssendsendallsendmanyなどのRPCでfee_rate引数を使ってトランザクション毎に手数料率を指定してください。(#32138)

  • -asmapまたは-asmap=1を指定すると、外部ファイルではなく埋め込みのasmapデータがロードされるようになりました。 これまでのリリースでは、-asmapをファイル名無しで指定すると、ip_asn.mapデータファイルのロードが試行されていました。 今後外部のasmapファイルのロードには常に-asmap=ip_asn.mapのように明示的なファイル名の指定が必要です。

  • -maxorphantx起動オプションが削除されました。これは以前から非推奨で、 v30.0以降は効果のないものになっていました。(#33872)

  • ネットワーク指定としてtorが削除されました。これは、v0.17.0でのonionへの置換により非推奨とされていたものです。(#34031)

  • -logsourcelocationsが有効な場合、ログ出力には関数シグネチャ全体ではなく関数名のみが含まれるようになりました。(#34088)

  • 4096 MiB以上のRAMを検出したシステムにおいて、-dbcacheのデフォルト値が450 MiBから 1024 MiBに引き上げられました。これはパフォーマンスの向上となりますが、より多くのメモリを使用します。 従来の挙動を維持するには-dbcache=450を設定してください。(#34692)

  • sendrawtransactionでプライベートブロードキャストの挙動を有効にするための-privatebroadcastが追加されました。

新しい設定

  • -txospenderindexを有効にすると、トランザクションアウトプットの使用に関するインデックスが作成されます。 これが存在する場合、支払いトランザクションがmempool内に見つからなかったときに、 gettxspendingprevoutによってスキャンされます。(#24539)

GUIの変更

  • GUIがQt 6.8にアップデートされました。(#34650)

  • セキュリティとプライバシーの向上のため、createwalletcreatewalletdescriptormigratewalletコマンドがコンソール履歴からフィルタされるようになりました。(gui#901)

  • Restore Wallet(ウォレットの復元)ダイアログで、復元するウォレット名が空の場合にエラーメッセージを表示するようになりました。(gui#924)

手数料推定

Bitcoin Coreの手数料推定器の最小手数料率バケットが、1 sat/vBから0.1 sat/vBに更新されました。 これはノードのデフォルトのminrelaytxfeeと一致します。これにより、指定された承認目標に対して、 十分なデータを持つ、追跡対象の最小バケットが1 sat/vB未満であった場合、その平均値が手数料率の推定値として返されることになります。

この変更により、ノードを再起動すると、fee_estimates.datに以前保存されていた推定値は無効となり、 手数料推定器は統計の追跡を新たに開始します。

IPCインターフェース

  • IPCマイニングインターフェースは、マイニングクライアントが最新のmining.capnpスキーマを使用することを必須としました。 古いスキーマに対してビルドされたクライアントは、Init.makeMining呼び出し時に失敗し、 古いマイニングインターフェースはサポートされない旨のRPCエラーを受け取ります。 マイニングクライアントは動作を継続するために、最新スキーマへの更新とバインディングの再生成を行う必要があります。(#34568)
  • Mining.createNewBlockcooldownの挙動(デフォルトで有効)が追加されました。 これはIBDの完了および先端への追いつきを待機するものです。通常、これにより起動時のテンプレートの大量発生を防ぎますが、 保証はされません。(#34184)
  • Mining.interrupt()を使ってMining.waitTipChangedおよびMining.createNewBlockを中断できます。(#34184)
  • Mining.createNewBlockおよびMining.checkBlockは、contextパラメーターを必須とするようになりました。
  • Mining.waitTipChangedは、クライアントが省略した場合に、デフォルトのtimeout(実質的に無限、maxDouble)を持つようになりました。
  • BlockTemplate.getCoinbaseTx()は、素のbyteの代わりに構造化されたCoinbaseTxを返すようになりました。
  • BlockTemplate.getCoinbaseCommitment()および BlockTemplate.getWitnessCommitmentIndex()は削除されました。
  • マイニング関連のオプション構造体(例:BlockCreateOptionsBlockWaitOptionsBlockCheckOptions)について、Cap’n Protoのデフォルト値が対応するC++のデフォルト値と一致するよう更新されました。

クレジット

本リリースに直接貢献してくれた皆様に感謝します:

  • 0xb10c
  • Alexander Wiederin
  • Alfonso Roman Zubeldia
  • amisha
  • ANAVHEOBA
  • Andrew Toth
  • Anthony Towns
  • Antoine Poinsot
  • ANtutov
  • Anurag chavan
  • Ava Chow
  • bensig
  • Ben Westgate
  • billymcbip
  • b-l-u-e
  • Brandon Odiwuor
  • brunoerg
  • Bruno Garcia
  • Calin Culianu
  • Carl Dong
  • Chandra Pratap
  • Chris Stewart
  • Coder
  • Cory Fields
  • da1sychain
  • Daniela Brozzoni
  • Daniel Pfeifer
  • David Gumberg
  • dergoegge
  • Dmitry Goncharov
  • Enoch Azariah
  • Eugene Siegel
  • Fabian Jahr
  • fanquake
  • Fibonacci747
  • flack
  • frankomosh
  • furszy
  • glozow
  • Greg Sanders
  • Hao Xu
  • Hennadii Stepanov
  • Henry Romp
  • Hodlinator
  • ismaelsadeeq
  • janb84
  • jayvaliya
  • joaonevess
  • John Moffett
  • Josh Doman
  • kevkevinpal
  • l0rinc
  • Luke Dashjr
  • Mara van der Laan
  • MarcoFalke
  • marcofleon
  • Martin Zumsande
  • Matthew Zipkin
  • Max Edwards
  • Murch
  • Musa Haruna
  • naiyoma
  • nervana21
  • Novo
  • optout
  • pablomartin4btc
  • Padraic Slattery
  • Pieter Wuille
  • Pol Espinasa
  • pythcoiner
  • rkrux
  • Robin David
  • Roman Zeyde
  • rustaceanrob
  • Ryan Ofsky
  • SatsAndSports
  • scgbckbone
  • Sebastian Falbesoner
  • sedited
  • seduless
  • Sergi Delgado Segura
  • Sjors Provoost
  • SomberNight
  • sstone
  • stickies-v
  • stratospher
  • stringintech
  • Suhas Daftuar
  • tboy1337
  • TheCharlatan
  • Tim Ruffing
  • Vasil Dimov
  • w0xlt
  • WakeTrainDev
  • Weixie Cui
  • willcl-ark
  • Woolfgm
  • yancy
  • Yash Bhutwala
  • yuvicc
  • zaidmstrr

さらにTransifexで翻訳を手伝ってくださった皆様にも感謝します。