ビットコインのアップグレードが間近に迫る、0.18.0コアソフトウェアコンテンツのプレビュー

ビットコインのアップグレードが間近に迫る、0.18.0コアソフトウェアコンテンツのプレビュー

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 ルールを有効にする方法を説明するエラー メッセージが生成されます。

設定オプションの変更

  1. 構成ファイルで認識されないセクション名が使用されている場合は、警告が表示されます。認識されるセクションは[test][main][regtest]です。

  2. 追加のメッセージをドロップする前に ZMQ がメモリにキューに入れるメッセージの最大数を設定するための 4 つの新しいオプションがあります。デフォルト値は 1000 で、以前のバージョンと同じです。詳細については、ZMQ のドキュメントを参照してください。

  3. enablebip61オプション (Bitcoin Core 0.17.0 で導入) は、BIP61 拒否メッセージの送信を切り替えます。拒否メッセージは P2P ネットワークでは適用されず、ほとんどのネットワーク ノードによってデバッグ目的でのみログに記録されます。プライバシーとセキュリティを向上させ、アップロードの使用量を削減するために、このオプションはデフォルトでオフになります。ローカル ネットワークのデバッグの目的で、ユーザーはこのオプションを明示的にオンにすることができます。

  4. rpcallowipオプションを使用して、すべてのネットワーク インターフェイスを自動的にリッスンすることはできなくなりました。代わりに、 rpcbindパラメータを使用して、リッスンする IP アドレスも指定する必要があります。パブリック ネットワーク接続を介して RPC コマンドをリッスンすることは安全ではないため無効にする必要があります。そのため、ユーザーがそのような構成を選択した場合は警告が表示されるようになりました。 Docker などのツールを使用するために RPC を公開する必要がある場合は、RPC を localhost のみにバインドするようにしてください (例: Docker run[…]-p 127.0.0.1:8332:8332 )。

  5. rpcpasswordオプションは、設定ファイルに設定されたパスワードにハッシュ文字 (#) が含まれている場合、ハッシュ文字がパスワードとして使用されているのか、コメントとして使用されているのかが不明確であるため、起動エラーを引き起こすようになりました。

  6. 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 で指定されたオプションよりも優先されるためです。

書類

  1. JSON-RPC インターフェースに関する新しい短いドキュメントでは、ウォレットの状態やメモリプールの状態など、異なるサブシステムのデータ間で RPC の結果に不整合が含まれる可能性があるいくつかのケースについて説明しています。同じルールが適用されることを示す注記を REST インターフェースのドキュメントに追加しました。

  2. このインターフェースを保護する方法の詳細については、JSON-RPC ドキュメントに追加されます。

  3. bitcoin.conf ファイルに関する新しいドキュメント。このファイルを使用して Bitcoin Core を構成する方法について説明します。

  4. 新しいドキュメントでは、Bitcoin Core の BIP174 部分署名ビットコイントランザクション (PSBT) インターフェースが紹介されています。これは、複数のプログラムが協力して新しいトランザクションを作成、署名、ブロードキャストできるようにするために使用されます。これは、オフライン (コールド) ウォレット、マルチ署名ウォレット、コインジョイン実装、および 2 つ以上のプログラムが相互作用して完全なトランザクションを生成する必要がある他の多くの状況で役立ちます。

  5. 出力スクリプト記述子のドキュメントは、このまだ開発中の言語の新機能に関する情報で更新されました。この言語は現在scantxstart RPC で使用されており、他の RPC や基盤となるウォレット構造にも適応される予定です。

ビルドシステムの変更

  1. 新しい--disable-bip70オプションを./configure,に渡すと、Bitcoin-Qt が BIP70 支払いプロトコルをサポートする libssl をビルドまたはリンクするのを防ぐことができます。過去に支払いプロトコルによって Bitcoin Core が libssl の脆弱性にさらされたことがあるため、bip70 サポートを必要としないビルダーは、将来の脆弱性の露出によって引き起こされる被害を軽減するためにこのオプションを使用することをお勧めします。

  2. Qt の最小必要バージョン (GUI を構築する場合) が 5.2 から 5.5.1 に増加されました。

新しいRPC

  1. getnodeaddresses RPC は、このノードに知られているピア アドレスを返します。 DNS シーダーを使用せずに接続先のノードを見つけるために使用できます。

  2. listwalletdir RPC は、ウォレット ディレクトリ (デフォルトのウォレット ディレクトリまたは-walletdirパラメータで構成されたディレクトリ) 内のウォレットのリストを返します。

  3. getrpcinfo 、RPC サーバーの稼働時間の詳細を返します。現時点では、現在アクティブなコマンドの配列と、それらの実行時間を返します。

  4. deriveaddresses 、出力記述子に対応する 1 つ以上のアドレスを返します。

更新されたRPC

注: 以下の「低レベル RPC の変更」セクションでは、主にテストに役立つ低レベル RPC の変更について説明します。

  1. getpeerinfo RPC は、ピアの bip133 料金フィルターに設定された追加のminfeefilterフィールドを返すようになりました。これを使用して、ピアがデフォルトの最小リレー料金を下回るトランザクションを受け入れるかどうかを検出できます。

  2. verbose=true的情况下getrawmempoolなどの mempool RPC は、トランザクションが、ノードとマイナーが同じ入力を使用してより高い手数料のトランザクションに置き換えることを要求するオプトインを選択したかどうかを示す追加の「bip125-replaceable」値を返すようになりました。

  3. SettXFee RPC はこれまで、手数料を許可された最小値未満に設定する試みを黙って無視していました。最小値を要求するために特殊な値「0」が引き続き使用できるという警告が発行されるようになりました。

  4. getaddressinfo RPC は、ウォレットが変更出力でアドレスを使用したかどうかを示すischangeフィールドを提供するようになりました。

  5. importmulti RPC は、P2WSH、P2WPKH、P2SH-P2WPKH、および P2SH-P2WSH をサポートするように更新されました。 P2WSH および P2SH-P2WSH のリクエストでは、追加のwitnessscriptパラメータが受け入れられます。

  6. importmulti RPC は、各リクエストに対して追加のwarningsフィールドを返すようになりました。この警告フィールドには、フィールドが無視されたか矛盾していた場合 (あった場合) を説明する文字列のセットが含まれています。

  7. getaddressinfo RPC は、Bitcoin Core がアドレスの scriptPubKey、オプションの redeemScript、オプションの witnessScript について十分に認識している場合に、追加のsolvableブール値フィールドを返すようになりました。これにより、ウォレットは署名されていない入力を生成して、そのアドレスに送信された資金を使用できるようになります。

  8. getaddressinfolistunspent 、およびscantxoutset RPC は、アドレスのすべてのキーパスと署名情報 (秘密鍵を除く) を含む出力記述子を含む追加のdescフィールドを返すようになりました。 getAddressInfolistunPent 、アドレスが解決可能な場合にのみdescフィールドを返します。

  9. importprivkey RPC は、インポートされる秘密キーに対応するアドレスまたは公開キーに対して以前に設定されたラベルを保持します。たとえば、以前のバージョンの Bitcoin Core で「coldwallet」というラベルの付いた読み取り専用アドレスをインポートした場合、その後に秘密鍵をインポートすると、アドレス ラベルがデフォルトの空の文字列ラベル ("") にリセットされます。このリリースでは、以前の「コールドウォレット」ラベルが保持されます。 importprivkey呼び出すときに、オプションでデフォルト以外のラベルを指定すると、新しいラベルがアドレスに適用されます。

  10. GetBlockTemplateの変更については、マイニング セクションを参照してください。

  11. getmininginfo RPC は、このノードでブロックが RPC 経由で組み立てられたことがない場合、 currentblockweightcurrentblocktxを省略するようになりました。

  12. getrawtransaction RPC および REST エンドポイントは、トランザクションの未使用 UTXO セットをチェックしなくなりました。残りの動作は次のとおりです。1. ブロック ハッシュが提供されている場合は、対応するブロックをチェックします。 2. ブロックハッシュが提供されていない場合は、メモリプールを確認します。 3. ブロックハッシュが提供されていないが、txindex が有効になっている場合は、txindex もチェックする必要があります。

  13. unloadwallet RPC は同期的になりました。つまり、ウォレットが完全にアンロードされるまで戻りません。

  14. importmulti RPC は記述子からのアドレスのインポートをサポートするようになりました。インポートする範囲の開始と終了を指定するために、リクエストで「scriptpubkey」の代わりに「desc」パラメータを、オプションの範囲記述子とともに提供することができます。記述子の詳細については、こちらをご覧ください。

  15. listunspent RPC は、P2WSH または P2SH-P2WSH 出力の場合の監視スクリプトである witnessScript を返すように変更されました。

  16. createwallet RPC に、空のウォレットを作成するために使用できるオプションの空白パラメータが追加されました。空のウォレットにはキーや HD シードは含まれません。ビットコイン コア クライアントのバージョンが 0.18 未満の場合、開くことができません。空のウォレットに HD シード セット ( sethdseedを使用) が設定されるか、秘密鍵、スクリプト アドレス、その他の読み取り専用のものがインポートされると、ウォレットは空ではなくなり、0.17.x で開くことができます。空のウォレットを暗号化すると、HD シードも設定されます。

非推奨または削除された RPC

  1. signrawtransaction RPC はバージョン 0.17.0 で非推奨となり、特別な設定オプションの背後に隠されていましたが、現在は削除されています。

  2. 「アカウント」API は、v0.17 で非推奨になった後、削除されました。 「ラベル」API は、アカウントの代わりとして v0.17 で導入されました。 「アカウント」API から「タグ」API への変更の詳細については、v0.17 のリリース ノートを参照してください。

  3. addwitnessaddress RPC は、バージョン 0.16.0 で非推奨になった後、削除されました。

  4. ウォレットのgenerate RPC メソッドは非推奨となり、次のメジャー リリースで完全に削除されます。この RPC はテストにのみ使用されますが、その実装は複数のサブシステム (ウォレットとマイニング) にまたがるため、ウォレット ノード インターフェイスを簡素化することはお勧めしません。テスト目的でgenerateを使用しているプロジェクトは、ウォレット コンポーネントを必要としない、または使用しないgeneratetoaddress RPC を使用するように変換する必要があります。 getnewaddress RPC によって返されたアドレスを使用して generatetoaddress を呼び出すと、古い generate RPC と同じ機能が提供されます。このリリースでgenerate引き続き使用するには、 -deprecatedrpc=generate構成オプションを使用して bitcoind を再起動します。

残りの変更

ブロックの高さに基づいて、現在の最適なブロックチェーン内のブロックのハッシュを取得するための新しい/rest/blockhashbyheight/エンドポイントを追加しました。

グラフィカル ユーザー インターフェイス (GUI)

  1. 既存の「ファイル」、「設定」、「ヘルプ」メニューの横に、新しい「ウィンドウ」メニューが追加されます。他の開いている新しいウィンドウ メニューのいくつかの項目がこの新しいウィンドウ メニューに移動されました。

  2. [送信] タブで、[必要な金額のみ支払う] チェックボックスが削除されました。代わりに、ユーザーはカスタム料金フィールドの値を、ノードに設定されている最小リレー料金まで下げるだけです。

  3. 「概要」タブでは、ウォレットがCreateWallet RPC を使用して作成され、 disable_private_keysパラメータが true に設定されている場合、読み取り専用残高のみが表示されます。

  4. 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 変更セクションと統合できると思います)

  1. submitblock RPC は、無効なブロックを拒否する基本的な理由を常に返し、すでに受け入れた有効なブロックの「重複」のみを返すようになりました。

  2. 新しいsubmitheader RPC を使用すると、ブロックとは独立してブロック ヘッダーを送信できます。これはテストにのみ役立つ可能性があります。

  3. signrawtransactionwithkeyおよびsignrawtransactionwithwallet RPC は、オプションでwitnessScript (P2WSH または P2SH-P2WSH 出力の場合の witness スクリプト) も受け入れることができるように変更されました。これはlistunspentへの変更と互換性があります。

  4. importmultiによってインポートされたキーの起源情報を持つ記述子は、PSBTを作成するためにウォレットにキーの起源情報を保存します。

  5. walletprocesspsbtwalletcreatefundedpsbt両方で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 への依存を解消することに一歩近づきます。

謝辞

このソフトウェアのリリースに直接関わったすべての人に感謝します。

<<:  カナン・クリエイティブ、数十億ドルの評価額で新たな資金調達ラウンドを完了

>>:  意見:ファイルコインのマイニングはビットコインよりもはるかに複雑

推薦する

イーサリアムの失敗はビットコインの成功である

注: この記事は、7 月に Motherboard に掲載された「ビットコインが失敗したのにイーサリ...

意見: イーサリアム 2.0 はビットコインを超えるか?

著者: ティム・デニング、翻訳者: ジェレミーイーサリアムはクールです。しかし、問題はそれが非常に複...

分散型タオバオ、OpenBazaarが3月1日にテスト開始

米国で設立された OpenBazaar は、取引にビットコインを使用する分散型電子商取引プラットフォ...

チップメーカーEbitが新型10nmチップマイニングマシンを発売

ビットメインの最大のライバルで、ビットコインマイニング用の特定用途向け集積回路(ASIC)チップの製...

成都聯安:ツイッターアカウントビットコイン詐欺事件の検証と分析

1. イベント概要- 2020年7月15日、Twitterへの大規模攻撃により、多数のTwitter...

ブルームバーグ:ビットコイン供給量の7%が1つの企業によってコールドストレージに保管されている

コインテレグラフによると、ブルームバーグは5月9日、匿名の情報源を引用して、ビットコイン保管プロバイ...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-05-11)

上昇ペースは鈍化しており、短期的な調整が必要になる可能性がある1. 市場動向<br/>今...

100元未満から数千元まで、成都のビットコイン投機家は3年間で5倍の利益を上げました

「昨日は私を無視したけど、今はもう私に構ってられないわよ。」この文は現時点ではビットコインに非常に当...

ソーシャルブログプラットフォームAKASHAがまもなくアルファテスト版をリリース

検閲は長年ソーシャルメディアプラットフォームを悩ませてきましたが、AKASHA はこれに終止符を打ち...

李其源氏のSegWit2xに関する講演は大きな論争を引き起こし、「Latiao」の創設者はBTCが競合通貨ではないと反論した

水曜日、BTCC CEO のボビー・リー氏は公開 AMA で SegWit2x フォークに関する自身...

モネロはビットコインのダークウェブ市場での地位に挑戦するが、ビットコインは「犯罪通貨」としてのアイデンティティを捨てて利益を得る

新しい暗号通貨が、最も人気のあるダークウェブ通貨としてのビットコインの地位に挑戦している。この新しい...

中国銀行とHSBC、住宅ローン評価情報共有のためのブロックチェーンシステムをテスト

中国・香港の銀行グループが、ブロックチェーン技術を使って住宅ローンの評価に関する情報を共有するシステ...

中国のFenbushi Capitalが参加するブロックチェーンスタートアップAbraが米国でブロックチェーン送金アプリをリリース

クレイジーな解説:決済アプリケーションのスタートアップ企業であるAbraは2016年のコンセンサスカ...

オーストラリアのオークションで押収されたビットコイン1900万ドル相当が販売される

クレイジー解説:米国政府が初のビットコインオークションを開催し、世界の注目を集めた後、オーストラリア...