Bitcoin Core 30.0

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

30.0 リリースノート

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

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

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

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

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

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

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

この新しいメジャーバージョンのリリースにより、バージョン27.x以前のバージョンは 「サポート終了」となり、今後は更新されなくなります。

セキュリティポリシーに従い、2週間以内に以下の情報を公開します:

  • 28.0で修正された重大度中および高の脆弱性(該当なし)
  • 30.0で修正された重大度低の脆弱性(5件)

アップグレード方法

旧バージョンを起動している場合はシャットダウンしてください。 完全にシャットダウンするのを待ってから(数分かかる場合があります)、 Windowsの場合はインストーラーを実行、Macの場合は/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を使用するのはお勧めできません。

主な変更点

ポリシー

  • 単一の標準トランザクションで実行される可能性のあるレガシー署名操作の最大数が2500に制限されるようになりました。 すべてのインプットのスクリプトおよびインプットが参照する前のアウトプットスクリプト、 (存在する場合は)すべてのP2SHのredeemスクリプトの署名操作が制限にカウントされます。 この新しい制限は、一般的に構成される標準トランザクションには影響しないと想定されています。 この変更は、将来のBIP54の展開に対する準備として行われました。(#32521)

  • -datacarriersizeはデフォルトで100,000まで増加され、事実上制限が撤廃されます( それよりも最大トランザクションサイズの制限が最初に適用されるため)。 これまでのバージョンで適用されていた制限に戻す場合は、-datacarriersize=83で上書きできます。(#32406)

  • リレーおよびマイニングにおいて、トランザクション内に複数のデータキャリア(OP_RETURN)アウトプットが許可されるようになりました。 -datacarriersize制限は、トランザクション内のすべてのそのようなアウトプットのscriptPubKeyのサイズの合計( scriptPubKey自体のサイズは含まない)に適用されます。(#32406)

  • 最小ブロック手数料率(-blockmintxfee)が、1vBあたり0.001 satoshiに変更されました。 この値は設定オプションで変更することは依然可能です。このオプションは、 マイナーがブロックテンプレートに追加するパッケージの最小手数料率を設定するために使用できます。(#33106)

  • 最小リレー手数料率(-minrelaytxfee)と増分リレー手数料率(-incrementalrelayfee)のデフォルト値が、 1vBあたり0.1 satoshiに変更されました。それぞれの設定オプションを使って変更することは依然可能ですが、 変更する場合は両方を一緒に変更することが推奨されます。(#33106)

    そのほかの最小手数料率(ダスト手数料率や、手数料推定器が返す最小値、 ウォレットが使用するすべての手数料率など)は変更されません。mempoolの最小手数料率は、 引き続き取引量が多い場合に反応して変更される場合があります。

    これらのデフォルト値の削減がネットワークで広く採用されるまで、 低手数料率で作成されたトランザクションの伝播や承認は保証されません。また、ウォレットの手数料率は変更されません。 ウォレットを使って低い手数料率のトランザクションを作成する場合は、事前に -mintxfeeを変更する必要があります。(#33106)

P2Pおよびネットワークの変更

  • 1-parent-1-child(1P1C)パッケージリレーで、子がmempoolで未承認の親を持つ状況を処理できるように改善されました。 これは、1P1Cパッケージがより広いトポロジー(1つの親のみが手数料の引き上げを必要とするmulti-parent-1-child、 親のみが手数料の引き上げを必要とするgrandparent-parent-childなど)に接続されていても受け入れられ、 伝播できることを意味します。(#31385)

  • インプットが欠落しているトランザクションを一時的に保持するトランザクションオーファネージで、 親トランザクションの取得を試行する間のサービス拒否(DoS)保護が改善されました。 これまでは、一意のトランザクションの最大数(デフォルトは100で、-maxorphantxで設定可能)が適用されていました。 今回の変更でこの制限は次のようになります: (wtixdとピアによって一意な)エントリー数と、 各一意のトランザクションのインプット数を10で割ったものを加算した合計が3,000を超えてはなりません。 一意なトランザクションの合計ウェイトは、ピア数に404,000を掛けた値を超えてはなりません。(#31829)

  • -maxorphantxオプションは、オーファネージが一意のトランザクション数を制限しなくなったため、 無効になりました。この設定オプションを使用していたユーザーは、 将来のバージョンでこの設定が認識されなくなった際にエラーが発生するため、削除する必要があります。(#31829)

新しい bitcoin コマンド

  • 機能をより発見しやすく、便利に使用できるようにするため、新しくbitcoinコマンドラインツールが追加されました。 bitcoinツールは、他の実行可能ファイルを呼び出すだけで、それ自体は機能を実装していません。 具体的には、bitcoin nodebitcoindと同義で、bitcoin guibitcoin-qtbitcoin rpcbitcoin-cli -namedと同義です。その他のコマンドとオプションは bitcoin helpで確認できます。新しいbitcoinコマンドは、他のコマンドを直接呼び出す代わりに使用できますが、 既存のコマンドを置き換えるものではなく、既存のコマンドを廃止する予定はありません。(#31375)

外部署名

  • Windowsでの外部署名のサポートが再度有効化されました。(#29868)

IPCマイニングインターフェース

  • 新しいbitcoinコマンドは、1つの新機能をサポートします: (実験的な)IPCマイニングインターフェースで、ノードがStratum v2 またはその他のマイニングクライアントソフトウェアと連携できるようになります(#31098 参照)。 ノードをbitcoin -m node -ipcbind=unixで起動すると、IPCクライアント接続用のUnixソケットで待ち受け、 クライアントがブロックテンプレートを要求したり、マイニングされたブロックを送信したりできるようになります。 -mオプションは、新しい内部バイナリ(bitcoindの代わりにbitcoin-node)を起動し、 現在は必須ですが将来的にはオプションになります(#33229で)。

  • IPC接続は新しい依存性を導入します(multiprocess.md参照)。IPCを使用する予定がない場合は、 -DENABLE_IPC=OFFビルドオプションでオフにできます。(#31802)

インストールの変更

  • test_bitcoin実行可能ファイルがbin/に代わってlibexec/にインストールされるようになりました。 直接実行することも、新しいbitcoinコマンドを通じてbitcoin testとしてアクセスすることもできます。 libexec/ディレクトリには、IPC機能をサポートし、bitcoinツールを通じて呼び出される新しい bitcoin-nodeおよびbitcoin-guiバイナリも含まれています。 ソースビルドのみ、test_bitcoin-qtbench_bitcoinbitcoin-chainstatebin/に代わってlibexec/にインストールされるようになり、 新しいbitcoinを通じてアクセスできます。詳細は、bitcoin helpの出力をご覧ください。(#31679)

  • Windowsでは、インストーラーはスタートメニューのエントリーに「(64-bit)」サフィックスを追加しなくなりました。(#32132) また、アップグレード中に古いアーティファクトが自動的に削除されるようになりました。(#33422).

インデックス

  • coinstatsindexの実装が、既にデフォルトsignetで観察されているオーバーフローバグを防ぐために変更されました。 アップグレードさらたノードを初めて起動する際、新しいバージョンのインデックスを最初から同期する必要があります。

    古いバージョンは/indexes/coinstats/に格納されていましたが、 新しいバージョンは/indexes/coinstatsindex/に格納されます。アップグレードされたノードでは、 将来ユーザーがノードをダウングレードする選択をした場合に備えて、古いバージョンのインデックスは削除しません。 ダウングレードする予定のないユーザーは、データディレクトリから/indexes/coinstats/を削除しても安全です。 Bitcoin Coreの将来のリリースでは、古いバージョンのインデックスを自動的に削除する可能性があります。(#30469)

ログ

  • ディスクへの無条件のログ出力は、各ソースロケーションに1時間あたり1MiBのクォータを設定することで、 レート制限が適用されるようになりました。無条件のログ出力とは、 debugよりも高いログレベル(infowarningerror)のログ出力を指します。 現在抑制されているソースロケーションが少なくとも1つある場合、 すべてのログに[*]というプレフィックスが付きます。(#32604)

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

RPCの更新

  • -paytxfee起動オプションとsettxfee RPCは非推奨となり、Bitcoin Core 31.0で削除されます。 これらを使用すると、ウォレットトランザクションの手数料率を静的に設定することができ、 過払いまたは過少払いになる可能性がありました。ユーザーは代わりに、手数料推定に頼るか、 fundrawtransactionsendtoaddresssendsendallsendmanyなどのRPCで fee_rate引数を使ってトランザクション毎に手数料率を指定する必要があります。(#31278)

  • パラメーターの1つがディスクリプターであるRPCでは、提供されたディスクリプター内の 断片内の公開鍵の最初または最後に空白が含まれている場合(例:pk( KEY)pk(KEY ))、 エラーを投げます。(#31603)

  • 親子パッケージの送信を許可するsubmitpackage RPCは、 すべての未承認の親が存在する必要がなくなりました。パッケージには、 他のmempool内の祖先も含まれている可能性があります。(#31385)

  • waitfornewblock RPCは、オプションのcurrent_tip引数を採るようになりました。 またこのRPCは非表示ではなくなりました。(#30635)

  • waitforblockおよびwaitforblockheight RPCは非表示ではなくなりました。(#30635)

  • psbtbumpfeeおよびbumpfee RPCは、フルRBF下での置換を許可し、BIP-125のシグナリングを要求しなくなりました。(#31953)

  • トランザクションスクリプト検証エラーは、これまではエラーの理由を、 コンセンサスエラーの場合はmandatory-script-verify-flag-failedを付けて、 標準エラーの場合は(「-failed」がない)non-mandatory-script-verify-flagを付けて返していました。 これが、すべてのブロックおよびmempoolでのエラーに対してそれぞれ block-script-verify-flag-failedmempool-script-verify-flag-failedに変更されました。(#33183)

  • getmininginfo RPCは、-blockmintxfee設定値を指定する「blockmintxfee」結果を返すようになりました。(#33189)

  • getmempoolinfo RPCは、-permitbaremultisigおよび-datacarriersizeの設定値を反映する、 「permitbaremultisig」および「maxdatacarriersize」フィールドを追加で返すようになりました。

ウォレット関連のRPCの変更は、下記のウォレットセクションで確認できます。

新しいRPC

  • ブロックのundoデータを使用して、使用済みのトランザクションアウトプットを効率的に取得するための新しいREST APIエンドポイント(/rest/spenttxouts/BLOCKHASH)が導入されました。(#32540)

ビルドシステム

設定の更新

  • -maxmempoolおよび-dbcache起動パラメーターは、32-bitシステムではそれぞれ 500MBと1GiBに制限されるようになりました。(#32530)

  • -natpmpオプションがデフォルトで1に設定されるようになりました。 これは-listenが有効(デフォルト)で、ファイアウォール/ルーターがPCPまたはNAT-PMPプロトコルのいずれかをサポートしていれば、 (ローカルネットワークルーターなどの)ファイアウォールの背後で実行されているノードに到達可能になることを意味します。(#33004)

  • -upnp設定は完全に削除されました。代わりに-natpmpを使用してください(#32500)

  • これまでは、-proxyはすべてのネットワーク(-i2psamを使用するI2Pを除く)のプロキシを指定し、 Torプロキシのみが-onionを介して個別に設定できました。現在、-proxyの構文が拡張され、 =の後にネットワーク名を付加することで、IPv4、IPv6、TorおよびCJDNSのプロキシを個別に指定できるようになりました。 例えば、-proxy=127.0.0.1:5555=ipv6はIPv6のみのプロキシを設定します。 -proxyオプションは複数回使用でき、異なるネットワークに異なるプロキシを定義することができます。 たとえば、-proxy=127.0.0.1:4444=ipv4 -proxy=10.0.0.1:6666=ipv6のように。 同じネットワークに対しては、後で指定した設定が先に指定した設定を上書きします。 これを使うと、以前のすべてのネットワークプロキシを削除し、特定のネットワークのみで直接接続を使用できます( 例:-proxy=127.0.0.1:5555 -proxy=0=cjdns)。(#32425)

  • -blockmaxweight起動オプションはデバッグ専用に更新されました。 ユーザーは引き続き使用できますが、デフォルトの-helpテキストには表示されず、 -help-debugでのみ表示されるようになりました。(#32654)

GUIまたはウォレット関連の設定変更については、以下のGUIまたはウォレットのセクションをご覧ください。

ウォレット

  • BDBレガシーウォレットは、作成またはロードができなくなりました。新しいディスクリプター形式のウォレットに移行できます。 詳細については、migratewallet RPCをご覧ください。

  • レガシーウォレットの削除によりbitcoin-walletツールの冗長なオプション( -withinternalbdb-legacy-descriptorsなど)が削除されます。 レガシー専用のRPC(addmultisigaddressdumpprivkeydumpwalletimportaddressimportmultiimportprivkeyimportpubkeyimportwalletnewkeypoolsethdseedupgradewallet)も削除されます。 (#32944, #28710, #32438, #31250)

  • ウォレットが受信したTRUCトランザクションの使用およびTRUCトランザクションの作成が可能になりました。 ウォレットはTRUCポリシールールを満たしていることを確認します。 ユーザーがTRUC UTXOを他のバージョンのUTXOと一緒に使おうとすると、ウォレットはエラーを投げます。 さらに、ウォレットは未承認のTRUC兄弟トランザクションをmempool内で競合として扱います。 ウォレットは、TRUC UTXOを使用するトランザクションが必要なサイズ制限を満たしていることも確認します。(#32896)

  • ディスクリプターウォレットは、監視専用と監視専用でないディスクリプターの混在を許可していないため、 include_watchonlyオプション(およびその命名方法のもの)は、それを持つすべてのRPCから削除されます。(#32618)

  • iswatchonlyフィールドは、それを返すすべてのRPCから削除されます。(#32618)

  • unloadwalletは、RPCウォレットエンドポイントとwallet_nameの両方が指定されていない場合、 RPC_INVALID_PARAMETERを返します。これまでは、JSONのパースエラーでRPCは失敗していました。(#32845)

  • getdescriptoractivityは、blockhashesとscanobjects引数を必須としてマークし、 どちらかが欠落している場合にユーザーに明確なヘルプメッセージを表示します。 unloadwalletと同様に、以前はJSONのパースエラーでRPCは失敗していました。(#32845)

  • getwalletinfoは、balanceimmature_balanceおよびunconfirmed_balanceフィールドを削除します。(#32721)

  • getunconfirmedbalanceRPCは削除されます。getbalances RPCをクエリし、 JSON応答内の"mine" "untrusted_pending"エントリーを確認できます。(#32721)

  • 以下のRPCは、ユーザーが任意の標準バージョン番号(1-3)のトランザクションを作成できるように、 versionパラメーターを含むようになりました:

    • createrawtransaction
    • createpsbt
    • send
    • sendall
    • walletcreatefundedpsbt (#32896)

GUIの変更

  • GUIがQt5からQt6に移行されました。Windowsでは、ダークモードがサポートされるようになりました。 macOSでは、Metalバックエンドが使用されるようになりました。(#30997)

  • トランザクションの手数料の引き上げはフルRBF下で許可され、BIP-125シグナリングは要求しなくなりました。(#31953)

  • 取引タブのカスタム幅列は、レガシーウォレットの削除の副作用としてリセットされます。(#32459)

低レベルの変更

  • ログにどのピアがヘッダーを送信したかが含まれるようになりました。 さらに冗長なヘッダーログメッセージが減少しました。この変更の副作用として、 一部の非典型的なケースでは新しいヘッダーがログに記録されなくなります(例: これまで未知のヘッダーを持つ直接のBLOCKメッセージやsubmitheader RPC)。(#27826)

クレジット

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

  • 0xb10c
  • amisha
  • Andrew Toth
  • Anthony Towns
  • Antoine Poinsot
  • Ava Chow
  • benthecarman
  • Brandon Odiwuor
  • brunoerg
  • Bue-von-hon
  • Bufo
  • Chandra Pratap
  • Chris Stewart
  • Cory Fields
  • Daniel Pfeifer
  • Daniela Brozzoni
  • David Gumberg
  • deadmanoz
  • dennsikl
  • dergoegge
  • enoch
  • Ethan Heilman
  • Eugene Siegel
  • Eunovo
  • Eval EXEC
  • Fabian Jahr
  • fanquake
  • Florian Schmaus
  • fuder.eth
  • furszy
  • glozow
  • Greg Sanders
  • Hao Xu
  • Haoran Peng
  • Haowen Liu
  • Hennadii Stepanov
  • Hodlinator
  • hoffman
  • ishaanam
  • ismaelsadeeq
  • Jameson Lopp
  • janb84
  • Jiri Jakes
  • John Bampton
  • Jon Atack
  • josibake
  • jurraca
  • kevkevin
  • kevkevinpal
  • kilavvy
  • Kristaps Kaupe
  • l0rinc
  • laanwj
  • leopardracer
  • Lőrinc
  • Luis Schwab
  • Luke Dashjr
  • MarcoFalke
  • marcofleon
  • Martin Zumsande
  • Matt Corallo
  • Matthew Zipkin
  • Max Edwards
  • monlovesmango
  • Murch
  • naiyoma
  • nervana21
  • Nicola Leonardo Susca
  • Novo
  • pablomartin4btc
  • Peter Todd
  • Pieter Wuille
  • Pol Espinasa
  • Prabhat Verma
  • rkrux
  • Roman Zeyde
  • Ryan Ofsky
  • Saikiran
  • Salvatore Ingala
  • Sebastian Falbesoner
  • Sergi Delgado Segura
  • Shunsuke Shimizu
  • Sjors Provoost
  • stickies-v
  • stratospher
  • stringintech
  • strmfos
  • stutxo
  • tdb3
  • TheCharlatan
  • Tomás Andróil
  • UdjinM6
  • Vasil Dimov
  • VolodymyrBg
  • w0xlt
  • will
  • willcl-ark
  • William Casarin
  • woltx
  • yancy
  • zaidmstrr

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