Bitcoin Core 29.0

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

29.0 リリースノート

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

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

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

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

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

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

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

アップグレード方法

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

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

互換性

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

注目すべき変更

P2Pとネットワークの変更

  • UPnPのサポートが廃止されました。自動的にポートを開きたい場合は、代わりに-natpmpオプションの使用を検討してください。 このオプションは、ルーターのサポート状況に応じてPCPまたはNAT-PMPを使用します。(#31130)

  • libnatpmpは、PCPとNAT-PMPの組み込み実装に置き換えられました(-natpmpオプションを使用すれば引き続き有効になります)。 これは、IPv4ポートフォワードとIPv6ピンホールを自動サポートします。(#30043)

  • -port設定オプションを使用する場合、デフォルトのOnion待受ポートは、固定値(mainnetでは8334)ではなく、 そのポートに1を加算した値が設定されるようになりました。これにより、v28.0ではポートの衝突により起動が失敗する原因となっていた、 異なる-portを使用し、-bindを使用しない複数のローカルノードの構成が再び可能になります。 torrcで手動で設定したHiddenServicePort-portと組み合わせて使用する場合、 調整が必要になる場合があるので注意してください。たとえば、非標準の値で-port=5555を使用し、 -bind=...=onionを使用していない場合、これまではBitcoin CoreはTor接続の受信を127.0.0.1:8334で待ち受けていました。 現在は、127.0.0.1:5556-portに1を加えた値)で待ち受けます。torrcでHidden Serviceを手動で設定している場合、 以前の動作に戻すには、HiddenServicePort 8333 127.0.0.1:8334からHiddenServicePort 8333 127.0.0.1:5556に変更するか、bitcoindを-bind=127.0.0.1:8334=onionで設定する必要があります。(#31223)

  • オーファントランザクション(確認されていないインプットを使用する未承認トランザクション)を受信すると、 ノードはオーファントランザクションを通知したすべてのピアから、不足している親トランザクションをダウンロードしようとします。 この変更により帯域幅が増える可能性がありますが、オーファン処理の信頼性がより高くなるでしょう。(#31397)

mempoolポリシーとマイニングの変更

  • エフェメラルダストは、手数料がゼロのトランザクションにおいて、1つのダストアウトプットを許可する新しい概念です。 このトランザクションの未承認アウトプットを使用する場合、使用者は他の必要なアウトプットに加えて、 このダストも使用する必要があります。言い換えると、このタイプのトランザクションは、 ダストの生成と使用が同時に行われるトランザクションパッケージとして作成する必要があります。(#30239)

  • バグにより、固定サイズのブロックヘッダー、トランザクション数およびコインベーストランザクションの デフォルトのブロック予約ウェイト(4,000 WU)が2回確保され、下げることができませんでした。 その結果、予約ウェイトの合計は常に8,000 WUとなり、 -blockmaxweightをデフォルトよりも高い値(最大値の4,000,000 WU)に指定した場合でも、 実際のブロックサイズが3,992,000 WUを超えることはありませんでした。今回の修正により、 確保が1箇所に統合され、予約ウェイトを直接指定する新しい起動オプション-blockreservedweightが導入されました。 -blockreservedweightのデフォルト値は、これまでの-blockmaxweightの動作に依存していたユーザーとの後方互換性を確保するため、 8,000 WUに設定されています。-blockreservedweightの最小値は、2,000 WUです。 -blockreservedweightをデフォルト値より低く設定するユーザーは、 ブロックヘッダー、トランザクション数、コインベーストランザクションの合計ウェイトが、 設定した値を超えないようにする必要があります。そうでない場合、無効なブロックがマイニングされるリスクがあります。(#31384)

RPCの更新

  • testmempoolaccept RPCの応答に、sendrawtransactionによって返される完全なエラーメッセージと同様に、 場合によってはreject-detailsフィールドが含まれるようになりました。(#28121)

  • submitblockで送信された重複ブロックは、以前プルーニングされた場合でも、 ブロックデータが保持されるようになりました。プルーニングが有効な場合、 永続化されているブロックファイルがプルーニング対象として選択された時点で、 データは最終的に再びプルーニングされます。これは、プルーニング中でもブロックが保持される getblockfrompeerの挙動と一致しています。(#31175)

  • getmininginfoは、nBitsと現在のターゲットをtargetフィールドで返すようになりました。 また、次のブロックのheightnBitsdifficultytargetを指定するnextオブジェクトも返します。(#31583)

  • getblockgetblockheaderは、targetフィールドで現在のターゲットを返すようになりました。(#31583)

  • getblockchaininfogetchainstatesは、nBitsと現在のターゲットをtargetフィールドで返すようになりました。(#31583)

  • getblocktemplate RPCのcurtime(BIP22) とmintime(BIP23)フィールドは、 すべてのネットワークにおいてBIP94で提案されたタイムワープの修正を考慮するようになりました。 これにより、mainnetでタイムワープを修正するソフトフォークが有効化された場合、 アップグレードしていないマイナーが誤ってタイムワープのルールに違反することがなくなります。(#31376, #31600) 念の為、getblocktemplate RPCを使用するソフトウェアは、これらの値を考慮することが重要です( curtimeでもmintimeでも構いません)。時計のみに依存すると、タイムワープの修正が導入されると、 状況によっては無効なブロックが生成される可能性があります。(#31600)

新しいRPC

  • getdescriptoractivityを使用すると、指定されたブロックのセット内の特定のディスクリプターのセットに関連するすべての 送信/受信のアクティビティを見つけることができます。この呼び出しをscanblocksと一緒に使用すると、 追加のインデックス作成プログラムの必要性が軽減されます。(#30708)

REST APIの更新

  • GET /rest/block/<BLOCK-HASH>.jsonGET /rest/headers/<BLOCK-HASH>.jsonは、 targetフィールドで現在のターゲットを返すようになりました。

設定の更新

  • 最近のUTXOセットの増大に伴い、-dbcache設定オプションの許容最大値が削除されました。 この変更前は、-dbcacheの値が大きい場合、自動的に16 GiB(32bitシステムでは1 GiB)に抑えられていたことに注意してください。(#28358)

  • -noseednode-nobind-nowhitebind-norpcbind-norpcallowip-norpcwhitelist-notest-noasmap-norpcwallet-noonlynet-noexternalipなどの否定オプションの処理が変更されました。 これまでは、これらのオプションを否定すると、混乱を招き、文書化されていない副作用が発生していました。 現在は、これらのオプションを否定すると、指定された設定がリセットされ、オプションが指定されなかった場合と同様のデフォルトの動作に戻ります。

  • v28.0以降、-mempoolfullrbf起動オプションのデフォルト値は1に設定されるようになりました。 このポリシーが広く採用され、無効化によるメリットがなくなったため、このオプションは削除され、 フルRBF(replace-by-fee)が標準の動作になりました。(#30592)

  • -upnpを設定すると、警告がログに出力され、-natpmpとして解釈されるようになりました。 代わりに-natpmpを直接使用するようにしてください。(#31130, #31916)

  • 安全チェックとして、-blockreservedweight初期パラメーターの値が2000ウェイトユニット未満の場合、 Bitcoin Coreは起動に失敗します-blockmaxweight-blockreservedweight初期パラメーターが コンセンサス制限の4,000,000 WUを超える場合も、Bitcoin Coreは起動に失敗します

  • -debug=0または-debug=noneを渡すと、-nodebugと同様に動作するようになりました。 以前設定されたdebugカテゴリはクリアされますが、後続の-debugオプションは引き続き適用されます。

  • -rpcthreadsのデフォルトが4から16に変更され、-rpcworkqueueのデフォルトが16から64に変更されました。(#31215)

ビルドシステム

ビルドシステムがAutotoolsからCMakeに移行されました:

  1. 必要なCMakeの最小バージョンは3.22です。
  2. インソース・ビルドは許可されていません。 ルートソースツリー内のサブディレクトリをビルドディレクトリとして使用する場合、その名前に「build」という部分文字列を含めることが推奨されます。
  3. CMake変数を使ってビルドシステムの設定が可能です。いくつかのデフォルト設定は変更されています。 たとえば、zmqでビルドする場合は-DWITH_ZMQ=ONを、bitcoin-qtをビルドする場合は-DBUILD_GUI=ONを追加する必要があります。 詳細は、Autotools to CMake Options Mappingをご覧ください。
  4. 単一構成のジェネレーターの場合、デフォルトのビルド構成は(CMAKE_BUILD_TYPE)は、「RelWithDebInfo」です。 ただし、「Release」構成の場合、CMakeはデフォルトでコンパイラ最適化フラグ-O3を使用しますが、これは、Bitcoin Coreでは十分にテストされていません。 そのため、ビルドシステムはこれを-O2に置き換えます。
  5. デフォルトでは、ビルドされた実行ファイルとライブラリは、ビルドディレクトリ内のbin/およびlib/サブディレクトリに配置されます。
  6. ビルドシステムは、コンポーネントベースのインストールをサポートしています。インストール可能なコンポーネントの名前は、ビルドターゲットと一致しています。例:
     cmake -B build
     cmake --build build --target bitcoind
     cmake --install build --component bitcoind
    
  7. Autotoolsベースのビルドプロセスで、CPPFLAGSCFLAGSCXXFLAGSまたはLDFLAGS環境変数のいずれかを使用していた場合は、 代わりに対応するCMake変数(APPEND_CPPFLAGSAPPEND_CFLAGSAPPEND_CXXFLAGSおよびAPPEND_LDFLAGS)を使用する必要があります。 また専用のCMAKE_<...>_FLAGS変数を使用する場合は、コンパイラやリンカーの呼び出しが期待どおりになることを確認する必要があります。

CMakeの設定と使用に関する詳細なガイダンスについては、公式のCMakeドキュメントおよびCMakeのユーザーインタラクションガイドをご覧ください。 さらに、オペレーティングシステム毎の手順については、プラットフォーム固有のdoc/build-*.mdビルドガイドをご覧ください。

低レベルの変更

ツールとユーティリティ

  • 新しいツールutxo_to_sqlite.pyは、コンパクトにシリアライズしたUTXOスナップショット( dumptxoutsetRPCで作成)をSQLite3データベースに変換します。詳細は、スクリプトの --helpの出力をご覧ください。(#27432)

テスト

  • (testnet4用に設計された)BIP94タイムワープ攻撃の緩和策は、regtestネットワークでは有効ではなくなりました。(#31156)

依存関係

  • MiniUPnPcおよびlibnatpmpの依存関係は削除されました。(#31130, #30043)

クレジット

このリリースに直接貢献されたみなさん、ありがとうございます:

  • 0xb10c
  • Adlai Chandrasekhar
  • Afanti
  • Alfonso Roman Zubeldia
  • am-sq
  • Andre
  • Andre Alves
  • Anthony Towns
  • Antoine Poinsot
  • Ash Manning
  • Ava Chow
  • Boris Nagaev
  • Brandon Odiwuor
  • brunoerg
  • Chris Stewart
  • Cory Fields
  • costcould
  • Daniel Pfeifer
  • Daniela Brozzoni
  • David Gumberg
  • dergoegge
  • epysqyli
  • espi3
  • Eval EXEC
  • Fabian Jahr
  • fanquake
  • furszy
  • Gabriele Bocchi
  • glozow
  • Greg Sanders
  • Gutflo
  • Hennadii Stepanov
  • Hodlinator
  • i-am-yuvi
  • ion-
  • ismaelsadeeq
  • Jadi
  • James O’Beirne
  • Jeremy Rand
  • Jon Atack
  • jurraca
  • Kay
  • kevkevinpal
  • l0rinc
  • laanwj
  • Larry Ruane
  • Lőrinc
  • Maciej S. Szmigiero
  • Mackain
  • MarcoFalke
  • marcofleon
  • Marnix
  • Martin Leitner-Ankerl
  • Martin Saposnic
  • Martin Zumsande
  • Matthew Zipkin
  • Max Edwards
  • Michael Dietz
  • naiyoma
  • Nicola Leonardo Susca
  • omahs
  • pablomartin4btc
  • Pieter Wuille
  • Randall Naar
  • RiceChuan
  • rkrux
  • Roman Zeyde
  • Ryan Ofsky
  • Sebastian Falbesoner
  • secp512k2
  • Sergi Delgado Segura
  • Simon
  • Sjors Provoost
  • stickies-v
  • Suhas Daftuar
  • tdb3
  • TheCharlatan
  • tianzedavid
  • Torkel Rogstad
  • Vasil Dimov
  • wgyt
  • willcl-ark
  • yancy

Transifexでの翻訳を手伝ってくださったみなさんもありがとうございます。