Bitcoin Core 24.0.1

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

24.0.1 リリースノート

直前に発見された問題(#26616)により、24.0はタグ付けされていましたが、 完全な発表やリリースはまだされていませんでした。

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

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

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

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

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

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

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

アップブレード方法

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

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

互換性

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

トランザクション置換ポリシーの新しいオプションのお知らせ

Bitcoin Coreのこのバージョンでは、新しいmempoolfullrbf設定オプションを追加し、 個々のノードが未承認トランザクションのリレーやマイニングに使用するポリシーをユーザーが変更できるようになりました。 このオプションのデフォルトは、これまでのリリースで使用されていたものと同じポリシーで、 全員がデフォルトを使用する場合、ノードのポリシーに変更は発生しません。

現在、いくつかのBitcoinサービスでは、”first-seen”と呼ばれるトランザクションの受け入れポリシーである、 最初に受け取った未承認トランザクションが最終的に承認されるトランザクションとなることを期待しています。

Bitcoinプロトコルは、特定のノードが最初に確認した未承認トランザクションが、 そのまま承認されるトランザクションであるという保証を提供することはなく、また提供できません。 同じ未承認トランザクションの複数のバージョンが存在する場合、 どのバージョンのトランザクションが承認されるかは、 それらの内1つをブロックに含めるマイナーだけが決定できます。

このような保証がないにも関わらず、現在でも複数のマーチャントやサービスがこの仮定を採用しています。

このfirst-seenの簡略化を取り除くことで、ユーザーにはいくつかの利点があります。 重要な利点の1つである、トランザクションの送信者がより高い手数料を支払う代替バージョンと置き換える機能は、 BIP125のオプトインRBF(Replace By Fee)の導入によりBitcoin Core 0.12.0 (2016年2月)で実現されました。

それ以来、first-seenの簡略化を完全に取り除き、ユーザーが古い未承認トランザクションのいずれかを 新しいトランザクションに置き換えることを可能にするフルRBFと呼ばれる機能が議論されてきました。 このリリースには、mempoolfullrbf設定オプションが含まれており、フルRBFを有効にすることができますが、 デフォルトはオフ(オプトインRBFのみ可能)です。

いくつかの代替ノード実装は、既に何年も前からデフォルトでフルRBFを有効にしており、 Bitcoin Coreの複数のコントリビューターは、Bitcoin Coreの将来のバージョンで デフォルトでフルRBFを有効にすることを提唱しています。

リレーやマイニングに参加する多くのノードがフルRBFを有効にすると、 より高い手数料を提供する未承認トランザクションへの置換が急速に信頼できるものになる可能性があります。

このプロジェクトのコントリビューターは、マーチャントやサービスが未承認トランザクションを最終的なものとして受け入れないこと、 もしそれにこだわるのであれば、その前提が成り立たないときのために何らかの手段や計画を確保するよう強く推奨しています。

注目すべき変更

P2Pとネットワークの変更

  • 潜在的なサービス拒否攻撃に対処するため、ピアからヘッダーをダウンロードするロジックが作り直されました。 これは、特に初めて起動するノード(もしくは、長い間オフラインだったノードが起動する場合)に関係があります。

    ノードの-minimumchainworkの値よりも小さい、またはノードの先端の作業量よりも十分に低い chainworkの合計を持つピアからヘッダーを受信すると、「presync」フェーズが始まります。 ノードはそのヘッダーをダウンロードして、ヘッダーを永久に保存する前に、ピアのチェーン上の累積作業を検証します。 その累積作業が十分に高いことが確認されると、ヘッダーがそのピアから再ダウンロードされ、完全に検証されて保存されます。

    これは、ヘッダーが2回ダウンロードされることと、 presyncフェーズ中(またはノードのベストヘッダーチェーンが-minimumchainworkより小さい間)にピアが切断された場合の影響( ノードは次のピアとまた同じようにpresyncの仕組みを使用する必要があります)から、 新しいノードの初回起動時に初期のヘッダーの同期により時間がかかる場合があります。(#25717)

  • I2P接続で、-i2pacceptincoming=0の場合、アウトバウンド接続毎に新しい一時的なアドレスが使用されます。(#25355)

更新されたRPC

  • -deprecatedrpc=softforks設定オプションが削除されました。 getblockchaininfo RPCは、23.0で非推奨になったsoftforksフィールドを返さなくなりました。(#23508) ソフトフォークの状態に関する情報は、getdeploymentinfo RPCを介してのみ利用可能です。

  • deprecatedrpc=exclude_coinbase設定オプションが削除されました。 receivedby系のPRC(listreceivedbyaddresslistreceivedbylabelgetreceivedbyaddressgetreceivedbylabel)は、動作変更のオプションなしで、 コインベースアウトプットから受け取ったコインを考慮した結果を常に返すようになりました。 コインベースの除外は、23.0で非推奨になりました。(#25171)

  • deprecatedrpc=fees設定オプションが削除されました。 トップレベルの手数料フィールドfeemodifiedfeeancestorfeesdescendantfeesは、 getmempoolentryRPC、getrawmempool(verbose=true)RPC、getmempoolancestors(verbose=true)RPC, getmempooldescendants(verbose=true)RPCでは返されなくなりました。 結果のfeesオブジェクトを介して、同じ手数料フィールドにアクセスすることができます。 トップレベルのfeeフィールドは23.0で非推奨となりました。(#25204)

  • getpeerinfoRPCが更新され、「P2Pとネットワークの変更」セクションで言及した presyncフェーズの進行状況を示すpresynced_headersが追加されました。

ウォレット関連のRPCは、以下の「ウォレット」セクションに掲載しています。

新しいRPC

  • sendallRPCは、特定のUTXOを1人または複数の受取人にお釣りを作成することなく送信します。 デフォルトでは、sendallRPCは、ウォレット内のすべてのUTXOを使用します。 sendallは、ウォレットを空にしたり、選択したUTXOからお釣りのない支払いを作成するのに便利です。 受取人がトランザクション手数料を負担する特定の金額からの支払いを作成する場合、 引き続きsendRPC、sendtoaddressRPC、sendmanyRPCでsubtractfeefromamountオプションを使用してください。(#24118)

  • 新しいgettxspendingprevoutRPCが追加されました。このRPCは、 mempoolから指定されたOutPointを使用するトランザクションを探します。(#24408)

  • simulaterawtransactionRPCは、指定されたトランザクションのインプットとアウトプットを繰り返し処理し、 指定されたウォレットの残高の変化を集計します。これは例えば、 CoinJoinのようなトランザクションに、ウォレットが意図せずに署名してしまうような予期しないインプットが含まれていないことを確認するのに便利です。 (#22751)

更新されたREST API

  • /headers/エンドポイントと/blockfilterheaders/エンドポイントは、 結果のカウントの指定にパスパラメーターの代わりにクエリパラメーターを使用するよう更新されました。 カウントパラメーターはオプションになり、両エンドポイントともデフォルトは5になっています。 古いエンドポイントもまだ機能しており、ドキュメントに記載されている動作の変更はありません。

    /headersについては、 GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json> (非推奨) の代わりに GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5> を使用してください。

    /blockfilterheaders/については、 GET /rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json> (非推奨) の代わりに GET /rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5> を使用してください。(#24098)

ビルドシステム

  • Guixビルドがアーキテクチャ間(x86_64とaarch64)で再現可能になりました。(#21194)

新しい設定

  • 新しいmempoolfullrbfオプションが追加され、 BIP125の置換シグナルを強制することなく、mempoolがトランザクションの置換を受け入れることができるようになりました。(#25353)

ウォレット

  • -walletrbf起動オプションがデフォルトでtrueになりました。 ウォレットが作成するトランザクションについて、オプトインRBFがデフォルトになります。(#25610)

  • createrawtransactionRPCおよびcreatepsbtRPCのreplaceableオプションが、 デフォルトでtrueになりました。これらのRPCで作成されたトランザクションは、 デフォルトでオプトインRBFが有効になります。(#25610)

  • wsh()アウトプット・ディスクリプターがMiniscriptのサポートで拡張されました。 コインを追跡するために監視専用のウォレットでP2WSH用のMiniscriptディスクリプターをインポートすることができます。 ただし、Bitcoin Coreのウォレットを使ってそれらを送信することはまだできません。 Miniscriptについては、参照サイトで詳しく紹介されています。(#24148)

  • tr()アウトプット・ディスクプターは、multi_a()関数とsortedmulti_a()関数を介して、 マルチシグスクリプトをサポートするようになりました。(#24043)

  • Bitcoin Coreのウォレットで作成されたトランザクションのフィンガープリントを防止するため、 お釣り用のアウトプットの量がランダム化されるようになりました。(#24494)

  • listtransactionsRPCとgettransactionRPC、listsinceblockRPCは、 各トランザクションのwtxidフィールド(witnessデータを含めてシリアライズしたトランザクションのハッシュ)を含めるようになりました。(#24198)

  • listsinceblocklisttransactionsgettransactionの出力で、 すべての”receive”エントリーに対して新しいparent_descsフィールドが含まれるようになりました。(#25504)

  • 新しいオプションのinclude_changeパラメーターがlistsinceblockコマンドに追加されました。

  • getreceivedbylabelRPCは、ラベルがアドレス帳にない場合、 “Label not found in wallet” (-4)エラーを返すようになりました。(#25122)

レガシーウォレットからディスクプターウォレットへの移行

レガシー(非ディスクプター)ウォレットからディスクプターウォレットに移行するために、 実験的なmigratewalletRPCが追加されました。 移行プロセスに関する詳細は ドキュメントを参照ください。

GUIの変更

  • バックアップファイルからウォレットを復元するための新しいメニュー項目が追加されました。(gui#471).

  • bitcoin GUIで行われた設定変更(プルーニングの設定や、プロキシーの設定、UPNPの設定など)は、 Qtの設定バックエンド(windowsのレジストリーやunixのデスクトップ設定ファイル)ではなく、 <datadir>/settings.jsonファイルに保存されるようになりました。 これらの設定は、これまでは無視されていましたが、今後はbitcoindに適用されます。(#15936, gui#602)

  • GUIの設定とbitcoin.confの設定の間の相互作用がシンプルになりました。 bitcoin.confの設定は、別の警告メッセージ(「Options set in this dialog are overridden by the configuration file: -setting=value」)ではなく、 GUIの設定ダイアログで通常通り表示されるようになりました。また、 settings.jsonの値がbitcoin.confの値よりも優先されるため、 これらの設定を編集することができるようになりました。

低レベルの変更

RPC

  • deriveaddressesgetdescriptorinfoimportdescriptorsscantxoutsetコマンドは、 wsh()ディスクリプター内のMiniscriptの式を受け入れるようになりました。(#24148)

  • getaddressinfodecodescriptlistdescriptorslistunspentコマンドは、 以前はwsh(raw())ディスクリプターが返されていたwsh()内にMiniscriptディスクリプターを出力できるようになりました。(#24148)

クレジット

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

  • /dev/fd0
  • 0xb10c
  • Adam Jonas
  • akankshakashyap
  • Ali Sherief
  • amadeuszpawlik
  • Andreas Kouloumos
  • Andrew Chow
  • Anthony Towns
  • Antoine Poinsot
  • Antoine Riard
  • Aurèle Oulès
  • avirgovi
  • Ayush Sharma
  • Baas
  • Ben Woosley
  • BrokenProgrammer
  • brunoerg
  • brydinh
  • Bushstar
  • Calvin Kim
  • CAnon
  • Carl Dong
  • chinggg
  • Cory Fields
  • Daniel Kraft
  • Daniela Brozzoni
  • darosior
  • Dave Scotese
  • David Bakin
  • dergoegge
  • dhruv
  • Dimitri
  • dontbyte
  • Duncan Dean
  • eugene
  • Eunoia
  • Fabian Jahr
  • furszy
  • Gleb Naumenko
  • glozow
  • Greg Weber
  • Gregory Sanders
  • gruve-p
  • Hennadii Stepanov
  • hiago
  • Igor Bubelov
  • ishaanam
  • Jacob P.
  • Jadi
  • James O’Beirne
  • Janna
  • Jarol Rodriguez
  • Jeremy Rand
  • Jeremy Rubin
  • jessebarton
  • João Barbosa
  • John Newbery
  • Jon Atack
  • Josiah Baker
  • Karl-Johan Alm
  • KevinMusgrave
  • Kiminuo
  • klementtan
  • Kolby Moroz
  • kouloumos
  • Kristaps Kaupe
  • Larry Ruane
  • Luke Dashjr
  • MarcoFalke
  • Marnix
  • Martin Leitner-Ankerl
  • Martin Zumsande
  • Michael Dietz
  • Michael Folkson
  • Michael Ford
  • Murch
  • mutatrum
  • muxator
  • Oskar Mendel
  • Pablo Greco
  • pasta
  • Patrick Strateman
  • Pavol Rusnak
  • Peter Bushnell
  • phyBrackets
  • Pieter Wuille
  • practicalswift
  • randymcmillan
  • Robert Spigler
  • Russell Yanofsky
  • S3RK
  • Samer Afach
  • Sebastian Falbesoner
  • Seibart Nedor
  • Shashwat
  • Sjors Provoost
  • Smlep
  • sogoagain
  • Stacie
  • Stéphan Vuylsteke
  • Suhail Saqan
  • Suhas Daftuar
  • t-bast
  • TakeshiMusgrave
  • Vasil Dimov
  • W. J. van der Laan
  • w0xlt
  • whiteh0rse
  • willcl-ark
  • William Casarin
  • Yancy Ribbens

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