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
フィールドで返すようになりました。 また、次のブロックのheight
、nBits
、difficulty
、target
を指定するnext
オブジェクトも返します。(#31583) -
getblock
とgetblockheader
は、target
フィールドで現在のターゲットを返すようになりました。(#31583) -
getblockchaininfo
とgetchainstates
は、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>.json
とGET /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に移行されました:
- 必要なCMakeの最小バージョンは3.22です。
- インソース・ビルドは許可されていません。 ルートソースツリー内のサブディレクトリをビルドディレクトリとして使用する場合、その名前に「build」という部分文字列を含めることが推奨されます。
- CMake変数を使ってビルドシステムの設定が可能です。いくつかのデフォルト設定は変更されています。
たとえば、zmqでビルドする場合は
-DWITH_ZMQ=ON
を、bitcoin-qt
をビルドする場合は-DBUILD_GUI=ON
を追加する必要があります。 詳細は、Autotools to CMake Options Mappingをご覧ください。 - 単一構成のジェネレーターの場合、デフォルトのビルド構成は(
CMAKE_BUILD_TYPE
)は、「RelWithDebInfo」です。 ただし、「Release」構成の場合、CMakeはデフォルトでコンパイラ最適化フラグ-O3
を使用しますが、これは、Bitcoin Coreでは十分にテストされていません。 そのため、ビルドシステムはこれを-O2
に置き換えます。 - デフォルトでは、ビルドされた実行ファイルとライブラリは、ビルドディレクトリ内の
bin/
およびlib/
サブディレクトリに配置されます。 - ビルドシステムは、コンポーネントベースのインストールをサポートしています。インストール可能なコンポーネントの名前は、ビルドターゲットと一致しています。例:
cmake -B build cmake --build build --target bitcoind cmake --install build --component bitcoind
- Autotoolsベースのビルドプロセスで、
CPPFLAGS
、CFLAGS
、CXXFLAGS
またはLDFLAGS
環境変数のいずれかを使用していた場合は、 代わりに対応するCMake変数(APPEND_CPPFLAGS
、APPEND_CFLAGS
、APPEND_CXXFLAGS
およびAPPEND_LDFLAGS
)を使用する必要があります。 また専用のCMAKE_<...>_FLAGS
変数を使用する場合は、コンパイラやリンカーの呼び出しが期待どおりになることを確認する必要があります。
CMakeの設定と使用に関する詳細なガイダンスについては、公式のCMakeドキュメントおよびCMakeのユーザーインタラクションガイドをご覧ください。
さらに、オペレーティングシステム毎の手順については、プラットフォーム固有のdoc/build-*.md
ビルドガイドをご覧ください。
低レベルの変更
ツールとユーティリティ
- 新しいツール
utxo_to_sqlite.py
は、コンパクトにシリアライズしたUTXOスナップショット(dumptxoutset
RPCで作成)をSQLite3データベースに変換します。詳細は、スクリプトの--help
の出力をご覧ください。(#27432)
テスト
- (testnet4用に設計された)BIP94タイムワープ攻撃の緩和策は、regtestネットワークでは有効ではなくなりました。(#31156)
依存関係
クレジット
このリリースに直接貢献されたみなさん、ありがとうございます:
- 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での翻訳を手伝ってくださったみなさんもありがとうございます。