Bitcoin Core 28.0

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

28.0 リリースノート

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

https://bitcoincore.org/bin/bitcoin-core-28.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の旧ウォレットバージョンが一般的にサポートされます。

macOSでBitcoin Coreのバイナリを実行するには、自己署名が必要です。

cd /path/to/bitcoin-28.0/bin
xattr -d com.apple.quarantine bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin
codesign -s - bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin

互換性

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

注目すべき変更

Testnet4/BIP94をサポート

BIP94で定義されている Testnet4のサポートが追加されました。ネットワークは、-testnet4オプションで選択でき、 セクションヘッダーの名称も[testnet4]になります。

今後のバージョンでは、Testnet3のサポートを段階的に廃止する予定ですが、 このリリースでは、既知のオプションで引き続きサポートされます。(#29775)

Windowsのデータディレクトリ

WindowsのデフォルトデータディレクトリがC:\Users\Username\AppData\Roaming\Bitcoinから C:\Users\Username\AppData\Local\Bitcoinに移動されました。 Bitcoin Coreはまず古いディレクトリの存在を確認し、 存在する場合は下位互換性のためにそのディレクトリを引き続き使用します。(#27064)

JSON-RPC 2.0をサポート

JSON-RPCサーバーは、JSON-RPC 2.0リクエストを認識し、 仕様に厳密に従って応答するようになりました。 詳細については、JSON-RPC-interface.mdをご覧ください。(#27101)

JSON-RPCクライアントは、JSON-RPCサーバーとの互換性を保つために更新する必要がある場合があります。 互換性の問題が見つかった場合は、GitHubで問題を報告してください。

libbitcoinconsensusの削除

27.0で非推奨となったlibbitcoin-consensusライブラリは、完全に削除されました。(#29648)

P2Pとネットワークの変更

  • これまでは、Bitcoin Coreがデフォルト設定またはbind=addr:portを介してP2P接続を待ち受けていた場合、 Tor接続を待ち受けるために常に127.0.0.1:8334にもバインドされていました。 ノードがTorを使用していない場合でも、これをオフにすることはできませんでした。 これが変更され、bind=addr:portaddr:portのみにバインドされるようになりました。 0.0.0.0:8333および127.0.0.1:8334へのバインドのデフォルト動作は変更されていません。

    bind=...設定をbind=...=onionなしで使用し、 以前の暗黙の動作に依存して127.0.0.1:8334での着信Tor接続を受け入れる場合、 bind=... bind=127.0.0.1:8334=onionの設定を使用して、これを明示的に指定する必要があります。(#22729)

  • これまではすべてのP2Pバインドが失敗した場合にのみ、Bitcoin Coreは起動を中止していましたが、 今後はいずれかのP2Pバインドが失敗すると、Bitcoin Coreは起動に失敗するようになります。(#22729)

  • UNIXドメインソケットがプロキシ接続に使用できるようになりました。 -onionまたは-proxyを、unix:プレフィックスを付けて ローカルソケットパスを設定します(例:-onion=unix:/home/me/torsocket)(#27375)

  • UNIXソケットパスが、-zmqpubrawblockおよび-zmqpubrawtx-zmqpubrawtx=unix:/path/to/fileの形式で受け入れられるようになりました。(#27679)

  • -whitelistに「in」および「out」フラグが追加され、 権限が着信接続と(もしくは)手動接続のどちらかに適用されるかを制御できます(デフォルト:着信のみ)。(#27114)

  • 手数料率が低すぎるトランザクションは、子トランザクションと適宜ペアになり、パッケージとして送信され、 ノードは既存のトランザクションリレープロトコルを使用して、1つの親と1つの子のパッケージをダウンロードできるようになります。 他のmempoolポリシーと組み合わせることで、この変更により、親トランザクションがmempoolの最小手数料率を下回る場合に、 制限付きの「パッケージリレー」が可能になります。さらに、TRUC(Topologically Restricted Until Confirmation)の親は、 最小リレー手数料率を下回ることが許可されます(つまり、手数料が0)。 submitpackage RPCを使用してパッケージをノードに直接送信します。警告: このP2P機能は限定されており(submitpackageインターフェースとは異なり、複数の未承認の親を持つ子はサポートされていません)、 敵対的な状況ではまだ信頼性がありません。(#28970)

mempoolポリシーの変更

  • バージョン番号が3に設定されたトランザクションは、BIP 431で定義されているように、 オプトインのTRUC(Topologically Restricted Until Confirmation)トランザクションポリシーの対象となり、 すべてのネットワークで標準として扱われるようになりました(#29496)。 このポリシーには、未承認アウトプットの使用に対する制限(#28948)、 よりインセンティブに適合したものが送信された場合の以前の子孫の削除(#29306)、 10,000vBの最大トランザクションサイズ(#29873)の制限が含まれます。これらの制限により、 TRUCトランザクションの受け入れまたは置き換えのインセンティブ適合性の評価が簡素化され、 置換がノードにとってより収益性が高くなり、手数料の引き上げの信頼性が向上します。

  • Pay To Anchor (P2A)は、支払いに関する新しい標準のwitnessアウトプットタイプであり、 新しく認識されたアウトプットテンプレートです。これは、支払いトランザクションのtxidの安定性に加えて、 同等のsh(OP_TRUE)アウトプットのように、さらなる効率化のためのコンパクトな使用条件を持つキーレス・アンカーアウトプットを可能にします。 注意:ネットワーク上の十分な数のノードがこのアップグレードを採用するまで、 ネットワーク上でのこのアウトプットを使用するトランザクションの伝播は制限されます。(#30352)

  • 制限付きのパッケージRBFが有効になりました。競合パッケージの提案により、 mempool内に(クラスターと呼ばれる)サイズ2の接続コンポーネントが生成されます。 競合するすべてのクラスターのサイズは2以下である必要があります。(#28984)

  • -mempoolfullrbf設定オプションのデフォルト値が0から1に変更されました。 つまりmempoolfullrbf=1。(#30493)

RPCの更新

  • dumptxoutset RPCは、UTXOセットのダンプを新しい改良された形式で返すようになりました。 それに応じて、loadtxoutset RPCは、ロードしようとするダンプにこの新しい形式を期待するようになりました。 古い形式のダンプはサポートされなくなり、使用可能にするには、新しい形式で再作成する必要があります。(#29612)

  • 高さ840,000のassumeUTXOのmainnetのパラメーターが追加されました。 つまり、loadtxoutset RPCは、その高さに一致するUTXOセットを使用してmainnetで使用できるようになりました。(#28553)

  • getblockchaininfogetmininginfogetnetworkinfowarningsフィードは、 単一の警告ではなく、すべてのアクティブノードの警告を文字列の配列で返すようになりました。 現在の動作は、-deprecatedrpc=warnings設定オプションを指定してBitcoin Coreを実行することで、 一時的に戻すことができます。(#29845)

  • これまでは、sendrawtransaction RPC使用時に、既にUTXOセット内にあるアウトプットを指定すると、 応答としてRPCエラーコード-27と「Transaction already in block chain」というメッセージが返されていました。 このエラーメッセージが「Transaction outputs already in utxo set」に変更され、 問題の原因をより正確に説明できるようになりました。(#30212)

  • estimatesmartfee RPCのデフォルトモードがconservativeからeconomicalに更新されました。 これにより、特にReplace-by-Feeがオプションである場合に、多くのユーザーにとって過大な見積もりが軽減されると期待されます。 過大な見積もりになる可能性はありますが、手数料見積もりに対する高い信頼性を必要とするユーザーは、 conservativeを引き続き使用できます。(#30275)

  • scantxoutset RPCは、JSONの「unspents」配列に2つの新しいフィールドblockhashconfirmationsを返すようになりました。 詳細については、scantxoutsetのヘルプをご覧ください。(#30515)

  • submitpackage RPCは、2つの新しい引数maxfeeratemaxburnamountを渡せるようになりました。 詳細については、subtmitpackageのヘルプをご覧ください。(#28950)

ウォレット関連のRPCの変更は、以下のウォレットセクションにあります。

REST APIの更新

  • /rest/getutxosのパラメーター検証が改善され、切り取られたtxidや大きすぎるtxid、 不正な形式のOutPointのインデックスがHTTP_BAD_REQUEST「Parse error」によって拒否されるようになりました。 そのようなリクエストは、これまでは密かに処理されていました。(#30482, #30444)

ビルドシステム

  • Bitcoin Coreをコンパイルするのに、GCC 11.1以降、またはClang 16.0以降が必要になりました。(#29091, #30263)

  • Bitcoin Coreを実行するのに必要な最小のglibcが2.31になりました。 つまり、RHEL 8とUbuntu 18.04 (Bionic)はサポートされなくなりました。(#29987)

  • --enable-lcov-branch-coverageは、lcovのバージョン1と2の間に互換性がないため削除されました。 代わりに、LCOV_OPTSを使用してオプションを設定する必要があります。(#30192)

設定の更新

  • -alertnotifyを指定して実行すると、アラートを1回だけでなく複数回発生できるようになりました。 これまでは、未知の新しいコンセンサスルールが有効になった場合にのみ発生していました。 その範囲が、すべてのカーネル警告が含まれるよう拡大されました。具体的には、 多くの作業を伴う無効チェーンが検出された場合にも、アラートが発生するようになりました。 将来的に警告は追加される可能性があります。(#30058)

GUIやウォレット関連の設定は、以下のGUIセクションやウォレットセクションにあります。

ウォレット

  • ウォレットのトランザクションがmempoolと競合した場合に、ウォレットが検出するようになりました。 mempoolと競合しているトランザクションは、gettransaction"mempoolconflicts"フィールドで確認できます。 mempoolと競合しているトランザクションのインプットは、親トランザクションがmempoolから削除された際に、 手動で破棄することなく再使用できるようになりました。これにより、ウォレットの残高が高く見えることがあります。(#27307)

  • fundrawtransactionwalletcreatefundedpsbtsend RPCに、新しいmax_tx_weightオプションが追加されました。 これはトランザクション最大weightを指定するオプションです。ファンディング中に制限を超えると、 トランザクションは構築されません。デフォルトは、4,000,000 WUです。(#29523)

  • 新しいcreatewalletdescriptor RPCを使用すると、ユーザーは新しい自動生成されたディスクリプターをウォレットに追加できます。 これは、Taprootなどの新しい標準ディスクリプターの導入前に作成されたウォレットをアップグレードするのに使用できます。(#29130)

  • 新しいgethdkeys RPCは、ウォレット内のすべてのディスクリプターで使用されているBIP32 HD鍵をリストアップします。 これらの鍵は、ウォレットが既に認識している特定の鍵の単一の鍵のディスクリプターを作成してウォレットに追加するのに、 createwalletdescriptorと組み合わせて使用できます。(#29130)

  • sendall RPCは、未承認のお釣りを使用できるようになり、結果として生成されるトランザクションに必要な追加の手数料を含め、 未承認のトランザクションの手数料率を指定された手数料率に引き上げます。(#28979)

  • bumpfee RPCで、fee_rateが指定された場合、手数料率はウォレットの増分手数料率5 sat/vbに従うことに制限されなくなりました。 手数料率は、元の手数料とmempoolの増分手数料率の合計以上である必要があります。(#27969)

GUIの変更

  • 「Migrate Wallet」メニューを使用すると、ユーザーはロードされているウォレットに関係なく、 ウォレットディレクトリ内の任意のレガシーウォレットを移行できます。(gui#824)

  • 「Information」ウィンドウにmempoolの使用状況とともに最大mempoolサイズが表示されるようになりました。(gui#825)

低レベルの変更

テスト

  • BIP94 タイムワープ攻撃の緩和策がregtestネットワークでアクティブになりました。(#30681)

  • 単体テストのディレクトリの場所を指定できるようにtest_bitcoinに新しい-testdatadirオプションが追加されました。(#26564)

ブロックストレージ

  • ブロックファイルは、blocksdirに保存されている鍵を使用してデフォルトでXORされるようになりました。 以前のBitcoin Coreのリリース、または外部ソフトウェアでは、非ゼロのXOR鍵を使用してblocksdirを読み取ることができなくなりました。 詳細については、-blocksxorのヘルプをご覧ください。(#28052)

Chainstate

  • ブロックがプルーニングされる際に発生するchainstateデータベースのフラッシュによって データベースキャッシュが空になることがなくなりました。キャッシュにデータが長く保持され、 初期ブロックダウンロードが完了するまでの時間が大幅に短縮されます。(#28280)

依存関係

  • Boost.Processへの依存関係は、ソースに含まれるcpp-subprocessに置き換えられました。 ビルダーは、外部署名者のサポートでビルドするのに、Boost.Processを必要としなくなりました。(#28981)

クレジット

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

  • 0xb10c
  • Alfonso Roman Zubeldia
  • Andrew Toth
  • AngusP
  • Anthony Towns
  • Antoine Poinsot
  • Anton A
  • Ava Chow
  • Ayush Singh
  • Ben Westgate
  • Brandon Odiwuor
  • brunoerg
  • bstin
  • Charlie
  • Christopher Bergqvist
  • Cory Fields
  • crazeteam
  • Daniela Brozzoni
  • David Gumberg
  • dergoegge
  • Edil Medeiros
  • Epic Curious
  • Fabian Jahr
  • fanquake
  • furszy
  • glozow
  • Greg Sanders
  • hanmz
  • Hennadii Stepanov
  • Hernan Marino
  • Hodlinator
  • ishaanam
  • ismaelsadeeq
  • Jadi
  • Jon Atack
  • josibake
  • jrakibi
  • kevkevin
  • kevkevinpal
  • Konstantin Akimov
  • laanwj
  • Larry Ruane
  • Lőrinc
  • Luis Schwab
  • Luke Dashjr
  • MarcoFalke
  • marcofleon
  • Marnix
  • Martin Saposnic
  • Martin Zumsande
  • Matt Corallo
  • Matthew Zipkin
  • Matt Whitlock
  • Max Edwards
  • Michael Dietz
  • Murch
  • nanlour
  • pablomartin4btc
  • Peter Todd
  • Pieter Wuille
  • @RandyMcMillan
  • RoboSchmied
  • Roman Zeyde
  • Ryan Ofsky
  • Sebastian Falbesoner
  • Sergi Delgado Segura
  • Sjors Provoost
  • spicyzboss
  • StevenMia
  • stickies-v
  • stratospher
  • Suhas Daftuar
  • sunerok
  • tdb3
  • TheCharlatan
  • umiumi
  • Vasil Dimov
  • virtu
  • willcl-ark

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