Bitcoin Core 開発チームの計画によると、Bitcoin Core ソフトウェアのバージョン 0.18.0 は 4 月 3 日頃に正式にリリースされる予定です。記事執筆時点では、コード ベースは 96% 完成しています。 以下はバージョン 0.18.0 のリリース ドラフトです。読者は、このバージョンのソフトウェアの更新内容を事前に知ることができます。 (githubからのスクリーンショット) (注:これは暫定的な説明であり、公式リリースでは若干異なる可能性があります) 読者は Bitcoin Core 0.18.0 クライアント コード リポジトリにアクセスできます。 https://bitcoincore.org/bin/bitcoin-core-0.18.0/ これはビットコインのメジャーアップデートであり、新機能、さまざまなバグ修正、パフォーマンスの改善、トランザクションの更新が含まれています。 開発者は GitHub の問題追跡システムを使用してバグを報告できます。 https://github.com/bitcoin/bitcoin/issues セキュリティとアップデートの通知を受け取るには、登録してください: https://bitcoincore.org/en/list/announcements/join/ アップデート方法古いバージョンのクライアントを実行している場合は、それを閉じて、完全にシャットダウンするまで待ってから (古いバージョンでは数分かかる場合があります)、インストーラーを実行するか (Windows)、 /Applications/Bitcoin-Qt (Mac システム) またはbitcoind/bitcoin-qt (Linux システム) にコピーして上書きします。 0.15.0 以降のクライアントを初めて実行すると、チェーン データベースが新しい形式に変換されます。これには、マシンの速度に応じて数分から 30 分程度かかる場合があります。 ブロック データベース形式もバージョン 0.8.0 で変更され、バージョン 0.8 より前のクライアントから 0.15.0 への自動アップグレード コードは存在しないことに注意してください。クライアントバージョン 0.7.x 以前では、直接アップグレードすることはできません (ブロックチェーンを再度ダウンロードする必要があります)。ただし、これまでどおり、ウォレットの古いバージョンも引き続きサポートされます。 互換性Bitcoin Core クライアントは、Linux カーネル オペレーティング システム、macOS 10.10 以降、Windows 7 以降を含む複数のオペレーティング システムで広範囲にテストされています。サポートされていないシステムで Bitcoin Core クライアントを使用することはお勧めしません。 Bitcoin Core は他の Unix 系 OS でも動作しますが、テストはあまり行われていません。 macOS オペレーティング システムがバージョン 10.10 未満の場合、バージョン 0.17.0 以降の Bitcoin Core クライアントを実行することはできないことに注意してください。これは、0.17.0 が Qt 5.9.x を使用してビルドされており、バージョン 10.10 より前の macOS オペレーティング システムをサポートしていないためです。 このバージョンのプリコンパイル済みディストリビューションは、以前サポートされていた CPU プラットフォームに加えて、RISC-V プラットフォーム用のバイナリを提供します。 contrib/init/bitcoind.service にあるsystemd ユニット設定ファイルを使用する場合、データ ディレクトリとして~bitcoin/.bitcoin ではなく/var/lib/bitcoind 使用するように変更されています。新しい設定ファイルに切り替えるときは、 /var/lib/bitcoind が存在するファイルシステムに十分なスペースがあることを確認し( df-h/var/lib/bitcoind で確認)、必要に応じて既存のデータ ディレクトリをコピーします。詳細については、「システム初期化ファイル」セクションを参照してください。 注目すべき変更点鉱業 segwit ルールが指定されていない場合、 getblocktemplate の呼び出しは失敗します。 segwit を指定せずにgetblocktemplate 呼び出すと、マイナーの報酬が減るため、ほぼ間違いなく設定ミスになります。呼び出しが失敗すると、segwit ルールを有効にする方法を説明するエラー メッセージが生成されます。 設定オプションの変更 構成ファイルで認識されないセクション名が使用されている場合は、警告が表示されます。認識されるセクションは[test] 、 [main] 、 [regtest] です。 追加のメッセージをドロップする前に ZMQ がメモリにキューに入れるメッセージの最大数を設定するための 4 つの新しいオプションがあります。デフォルト値は 1000 で、以前のバージョンと同じです。詳細については、ZMQ のドキュメントを参照してください。 enablebip61 オプション (Bitcoin Core 0.17.0 で導入) は、BIP61 拒否メッセージの送信を切り替えます。拒否メッセージは P2P ネットワークでは適用されず、ほとんどのネットワーク ノードによってデバッグ目的でのみログに記録されます。プライバシーとセキュリティを向上させ、アップロードの使用量を削減するために、このオプションはデフォルトでオフになります。ローカル ネットワークのデバッグの目的で、ユーザーはこのオプションを明示的にオンにすることができます。 rpcallowip オプションを使用して、すべてのネットワーク インターフェイスを自動的にリッスンすることはできなくなりました。代わりに、 rpcbind パラメータを使用して、リッスンする IP アドレスも指定する必要があります。パブリック ネットワーク接続を介して RPC コマンドをリッスンすることは安全ではないため無効にする必要があります。そのため、ユーザーがそのような構成を選択した場合は警告が表示されるようになりました。 Docker などのツールを使用するために RPC を公開する必要がある場合は、RPC を localhost のみにバインドするようにしてください (例: Docker run[…]-p 127.0.0.1:8332:8332 )。 rpcpassword オプションは、設定ファイルに設定されたパスワードにハッシュ文字 (#) が含まれている場合、ハッシュ文字がパスワードとして使用されているのか、コメントとして使用されているのかが不明確であるため、起動エラーを引き起こすようになりました。 WhiteListforceRelay オプションは、メモリプールによって受け入れられない場合でも、ホワイトリストに登録されたピアからのトランザクションを中継するために使用されます。このオプションはデフォルトでオフになっているため、ポリシーや切断/禁止の動作を変更しても、ホワイトリスト内の別のノードがピアによって削除されることはありません。ユーザーは引き続きコマンドライン オプションを使用してこの動作を明示的に有効にすることができます (この機能は将来廃止される可能性があります)。
システム初期化ファイル システム初期化ファイル ( contrib/init/bitcoind.service ) は、データ ディレクトリとして~bitcoin/.bitcoin ではなく/var/lib/bitcoind を使用するように変更されました。この変更により、Bitcoin Core は他のサービスとより一致するようになり、システム初期化ファイルは既存の Upstart および OpenRC 構成とより一貫性のあるものになります。 設定、PID、およびデータ ディレクトリは、systemd によって完全に管理されるようになりました。systemd は、それらの作成、アクセス許可などを処理します。詳細については、systemd.exec(5) を参照してください。 contrib/init の下に提供されている init ファイルを使用する場合、 /etc/bitcoin/bitcoin.conf bitcoin.conf のdatadir オプションを上書きしても効果はありません。これは、初期化ファイルで指定されたコマンドライン引数が、 /etc/bitcoin/bitcoin.conf bitcoin.conf で指定されたオプションよりも優先されるためです。 書類JSON-RPC インターフェースに関する新しい短いドキュメントでは、ウォレットの状態やメモリプールの状態など、異なるサブシステムのデータ間で RPC の結果に不整合が含まれる可能性があるいくつかのケースについて説明しています。同じルールが適用されることを示す注記を REST インターフェースのドキュメントに追加しました。 このインターフェースを保護する方法の詳細については、JSON-RPC ドキュメントに追加されます。 bitcoin.conf ファイルに関する新しいドキュメント。このファイルを使用して Bitcoin Core を構成する方法について説明します。 新しいドキュメントでは、Bitcoin Core の BIP174 部分署名ビットコイントランザクション (PSBT) インターフェースが紹介されています。これは、複数のプログラムが協力して新しいトランザクションを作成、署名、ブロードキャストできるようにするために使用されます。これは、オフライン (コールド) ウォレット、マルチ署名ウォレット、コインジョイン実装、および 2 つ以上のプログラムが相互作用して完全なトランザクションを生成する必要がある他の多くの状況で役立ちます。 出力スクリプト記述子のドキュメントは、このまだ開発中の言語の新機能に関する情報で更新されました。この言語は現在scantxstart RPC で使用されており、他の RPC や基盤となるウォレット構造にも適応される予定です。
ビルドシステムの変更新しい--disable-bip70 オプションを./configure, に渡すと、Bitcoin-Qt が BIP70 支払いプロトコルをサポートする libssl をビルドまたはリンクするのを防ぐことができます。過去に支払いプロトコルによって Bitcoin Core が libssl の脆弱性にさらされたことがあるため、bip70 サポートを必要としないビルダーは、将来の脆弱性の露出によって引き起こされる被害を軽減するためにこのオプションを使用することをお勧めします。 Qt の最小必要バージョン (GUI を構築する場合) が 5.2 から 5.5.1 に増加されました。
新しいRPC getnodeaddresses RPC は、このノードに知られているピア アドレスを返します。 DNS シーダーを使用せずに接続先のノードを見つけるために使用できます。 listwalletdir RPC は、ウォレット ディレクトリ (デフォルトのウォレット ディレクトリまたは-walletdir パラメータで構成されたディレクトリ) 内のウォレットのリストを返します。 getrpcinfo 、RPC サーバーの稼働時間の詳細を返します。現時点では、現在アクティブなコマンドの配列と、それらの実行時間を返します。 deriveaddresses 、出力記述子に対応する 1 つ以上のアドレスを返します。
更新されたRPC注: 以下の「低レベル RPC の変更」セクションでは、主にテストに役立つ低レベル RPC の変更について説明します。 getpeerinfo RPC は、ピアの bip133 料金フィルターに設定された追加のminfeefilter フィールドを返すようになりました。これを使用して、ピアがデフォルトの最小リレー料金を下回るトランザクションを受け入れるかどうかを検出できます。 verbose=true的情况下 getrawmempool などの mempool RPC は、トランザクションが、ノードとマイナーが同じ入力を使用してより高い手数料のトランザクションに置き換えることを要求するオプトインを選択したかどうかを示す追加の「bip125-replaceable」値を返すようになりました。 SettXFee RPC はこれまで、手数料を許可された最小値未満に設定する試みを黙って無視していました。最小値を要求するために特殊な値「0」が引き続き使用できるという警告が発行されるようになりました。 getaddressinfo RPC は、ウォレットが変更出力でアドレスを使用したかどうかを示すischange フィールドを提供するようになりました。 importmulti RPC は、P2WSH、P2WPKH、P2SH-P2WPKH、および P2SH-P2WSH をサポートするように更新されました。 P2WSH および P2SH-P2WSH のリクエストでは、追加のwitnessscript パラメータが受け入れられます。 importmulti RPC は、各リクエストに対して追加のwarnings フィールドを返すようになりました。この警告フィールドには、フィールドが無視されたか矛盾していた場合 (あった場合) を説明する文字列のセットが含まれています。 getaddressinfo RPC は、Bitcoin Core がアドレスの scriptPubKey、オプションの redeemScript、オプションの witnessScript について十分に認識している場合に、追加のsolvable ブール値フィールドを返すようになりました。これにより、ウォレットは署名されていない入力を生成して、そのアドレスに送信された資金を使用できるようになります。 getaddressinfo 、 listunspent 、およびscantxoutset RPC は、アドレスのすべてのキーパスと署名情報 (秘密鍵を除く) を含む出力記述子を含む追加のdesc フィールドを返すようになりました。 getAddressInfo とlistunPent 、アドレスが解決可能な場合にのみdesc フィールドを返します。 importprivkey RPC は、インポートされる秘密キーに対応するアドレスまたは公開キーに対して以前に設定されたラベルを保持します。たとえば、以前のバージョンの Bitcoin Core で「coldwallet」というラベルの付いた読み取り専用アドレスをインポートした場合、その後に秘密鍵をインポートすると、アドレス ラベルがデフォルトの空の文字列ラベル ("") にリセットされます。このリリースでは、以前の「コールドウォレット」ラベルが保持されます。 importprivkey 呼び出すときに、オプションでデフォルト以外のラベルを指定すると、新しいラベルがアドレスに適用されます。 GetBlockTemplate の変更については、マイニング セクションを参照してください。 getmininginfo RPC は、このノードでブロックが RPC 経由で組み立てられたことがない場合、 currentblockweight とcurrentblocktx を省略するようになりました。 getrawtransaction RPC および REST エンドポイントは、トランザクションの未使用 UTXO セットをチェックしなくなりました。残りの動作は次のとおりです。1. ブロック ハッシュが提供されている場合は、対応するブロックをチェックします。 2. ブロックハッシュが提供されていない場合は、メモリプールを確認します。 3. ブロックハッシュが提供されていないが、txindex が有効になっている場合は、txindex もチェックする必要があります。 unloadwallet RPC は同期的になりました。つまり、ウォレットが完全にアンロードされるまで戻りません。 importmulti RPC は記述子からのアドレスのインポートをサポートするようになりました。インポートする範囲の開始と終了を指定するために、リクエストで「scriptpubkey」の代わりに「desc」パラメータを、オプションの範囲記述子とともに提供することができます。記述子の詳細については、こちらをご覧ください。 listunspent RPC は、P2WSH または P2SH-P2WSH 出力の場合の監視スクリプトである witnessScript を返すように変更されました。 createwallet RPC に、空のウォレットを作成するために使用できるオプションの空白パラメータが追加されました。空のウォレットにはキーや HD シードは含まれません。ビットコイン コア クライアントのバージョンが 0.18 未満の場合、開くことができません。空のウォレットに HD シード セット ( sethdseed を使用) が設定されるか、秘密鍵、スクリプト アドレス、その他の読み取り専用のものがインポートされると、ウォレットは空ではなくなり、0.17.x で開くことができます。空のウォレットを暗号化すると、HD シードも設定されます。
非推奨または削除された RPC signrawtransaction RPC はバージョン 0.17.0 で非推奨となり、特別な設定オプションの背後に隠されていましたが、現在は削除されています。 「アカウント」API は、v0.17 で非推奨になった後、削除されました。 「ラベル」API は、アカウントの代わりとして v0.17 で導入されました。 「アカウント」API から「タグ」API への変更の詳細については、v0.17 のリリース ノートを参照してください。 addwitnessaddress RPC は、バージョン 0.16.0 で非推奨になった後、削除されました。 ウォレットのgenerate RPC メソッドは非推奨となり、次のメジャー リリースで完全に削除されます。この RPC はテストにのみ使用されますが、その実装は複数のサブシステム (ウォレットとマイニング) にまたがるため、ウォレット ノード インターフェイスを簡素化することはお勧めしません。テスト目的でgenerate を使用しているプロジェクトは、ウォレット コンポーネントを必要としない、または使用しないgeneratetoaddress RPC を使用するように変換する必要があります。 getnewaddress RPC によって返されたアドレスを使用して generatetoaddress を呼び出すと、古い generate RPC と同じ機能が提供されます。このリリースでgenerate 引き続き使用するには、 -deprecatedrpc=generate 構成オプションを使用して bitcoind を再起動します。
残りの変更ブロックの高さに基づいて、現在の最適なブロックチェーン内のブロックのハッシュを取得するための新しい/rest/blockhashbyheight/ エンドポイントを追加しました。 グラフィカル ユーザー インターフェイス (GUI)既存の「ファイル」、「設定」、「ヘルプ」メニューの横に、新しい「ウィンドウ」メニューが追加されます。他の開いている新しいウィンドウ メニューのいくつかの項目がこの新しいウィンドウ メニューに移動されました。 [送信] タブで、[必要な金額のみ支払う] チェックボックスが削除されました。代わりに、ユーザーはカスタム料金フィールドの値を、ノードに設定されている最小リレー料金まで下げるだけです。 「概要」タブでは、ウォレットがCreateWallet RPC を使用して作成され、 disable_private_keys パラメータが true に設定されている場合、読み取り専用残高のみが表示されます。 Macosx Min バージョン 10.11 以降でコンパイルした場合、起動時の起動オプションは MacOS では利用できなくなります (デプロイメント SDK バージョンを設定するには、CXXFLAGS="-mmacosx-version-min=10.11" CFLAGS="-mmacosx-version-min=10.11" を使用します)
道具新しいbitcoin-wallet ツールが、Bitcoin Core の他の実行可能ファイルとともに配布されるようになりました。このツールは現在、RPC を使用せずに、新しいウォレット ファイルを作成したり、ウォレットが暗号化されているかどうか、HD シードを使用しているかどうか、含まれるトランザクションの数、アドレス帳のエントリの数など、既存のウォレットに関する基本的な情報を表示したりできます。 低レベルの変更RPC (TODO pieter: このセクションは、以前の RPC 変更セクションと統合できると思います) submitblock RPC は、無効なブロックを拒否する基本的な理由を常に返し、すでに受け入れた有効なブロックの「重複」のみを返すようになりました。 新しいsubmitheader RPC を使用すると、ブロックとは独立してブロック ヘッダーを送信できます。これはテストにのみ役立つ可能性があります。 signrawtransactionwithkey およびsignrawtransactionwithwallet RPC は、オプションでwitnessScript (P2WSH または P2SH-P2WSH 出力の場合の witness スクリプト) も受け入れることができるように変更されました。これはlistunspent への変更と互換性があります。 importmulti によってインポートされたキーの起源情報を持つ記述子は、PSBTを作成するためにウォレットにキーの起源情報を保存します。 walletprocesspsbt とwalletcreatefundedpsbt 両方でbip32derivs が true に設定されているが、公開鍵のキー メタデータが更新されていない場合、そのキーには、スタンドアロン キーであるかのように派生パスが設定されます (つまり、派生パスはなく、マスター フィンガープリントはそれ自体になります)。
構成クライアントのバージョン 0.16 では、 -usehd 構成オプションが削除され、そのバージョン以降、新しく作成されるすべてのウォレットは階層的決定論的 (HD) ウォレットになります。このリリースでは、 -usehd を指定すると無効な configure オプションになります。 ネットワークこのリリースでは、不正な動作(無効なデータの送信など)によりノードが自動的に切断したピアが、ノードに再接続できるようになります(未使用の着信接続スロットがある場合)。スロットがいっぱいの場合、不正な動作をしているノードは切断され、問題の履歴がないノードのためのスペースが確保されます (不正な動作をしているノードが他の方法でノードを支援している場合を除く)。以前は、Bitcoin Core は不正な動作をしているピアの IP アドレスを一定期間 (デフォルトでは 1 日) 禁止していましたが、これは複数の IP アドレスを持つ攻撃者によって簡単に回避されていました。たとえば setban RPC を使用してピアを手動で禁止した場合でも、そのピアからのすべての接続は拒否されます。 財布HD トレントを初めて使用する場合、キー メタデータをアップグレードする必要があります。暗号化されていないウォレットの場合、ウォレットが読み込まれるときにこれが起こります。暗号通貨ウォレットの場合、これはウォレットが最初にロック解除されたときに発生します。 安全このリリースでは、OpenSSL で使用される乱数ジェネレーター (RNG) が Bitcoin Core 独自の実装に変更されます (ただし、Bitcoin Core によって収集されたエントロピーは OpenSSL にエクスポートされ、プログラムで強力なランダム性が必要なときに読み戻されます)。これにより、Bitcoin Core は、過去にセキュリティ問題を引き起こした依存関係である OpenSSL への依存を解消することに一歩近づきます。 謝辞このソフトウェアのリリースに直接関わったすべての人に感謝します。 |