Overview

私達はBitcoin Core 0.15.0をリリースしました。このリリースには、手数料計算の改善や、よりアクセスしやすくなったfee bumpingマルチウォレットのサポートといつくかの重要なパフォーマンス改善が行われています。また多くのバグフィックスや最適化、その他の改善も含まれています。

アップグレードの注意事項

Bitcoin Core 0.15.0ではパフォーマンス最適化の一環で、使用可能なBitcoinを追跡するデータベースの形式をアップデートしており、初めてBitcoin Core 0.15.0(もしくはそれ以降のバージョン)を起動すると、自動的にこのアップデートが開始されます。このアップデートはコンピューターの性能に応じて約5分から30分ほどかかります。

GUIを使用しているユーザーは、Bitcoin Coreのスプラッシュ画面でアップデートの進捗状況を確認できます。bitcoind を使用しているユーザーはdata ディレクトリ内のdebug.logファイルで進捗状況を確認することができます。

もし旧バージョンにダウングレードする場合は、リリースノートのinstructionsを参照してください。

手数料計算の改善

トランザクションが承認されるまで数時間待つことができるユーザーは、需要が高い期間に迅速な承認が必要なユーザーと比べて、トランザクション手数料の80%以上を節約できるというエビデンスがあります。

これらは単に時間に余裕があるユーザーがお金を節約できるだけでなく、Bitcoinのマイナーがブロックに入れるためのたくさんの有料トランザクションを持つことを保証することにもなります。将来Bitcoinが2100万ビットコインの発行上限に近づくと、手数料がマイナーの所得の大半を占めるようになるため、マイナーが継続してブロックチェーンを拡張していくためには、こういった確実な有料トランザクションの確保が必要になるでしょう。

時間に余裕のあるユーザーにはトランザクション手数料について最大限の恩恵があるように、急いているユーザーにはできるだけ早くトランザクションが承認されるように、Bitcoin Core 0.15.0では手数料の算出アルゴリズムとユーザーインターフェースを大幅に改善しました。

  1. 手数料算出時の指定可能な最大ターゲットが40倍に: 手数料の算出機能では今まで指定できる最大ターゲットは25ブロックまででしたが、これが最大1,008ブロック(約一週間)まで指定可能になり、その範囲で合理的な手数料の算出ができるようになりました。これによりユーザーは緊急性の低い送金の際に可能な限り手数料を節約できるようになります。

    GUIでこの増加された範囲を表すため、これまでの手数料のスライダーは以下の手数料のドロップダウンに置き換わります。

    New fee drop-down box

  2. 手数料の調整がより早く: 手数料の算出は、ブロックスペースの増減などのネットワークの状況に応じてより迅速に調整されるようになります。このアルゴリズムは、既存のトランザクションデータから複数の予測値を作成し、そのうち最適なものを自動的に選択します。使用されるアルゴリズムの詳細は、開発者Alex Morcosのdescriptionを参照してください。

  3. RBFユーザー向けのより安い手数料の算出 これまではブロードキャスト後に未承認トランザクションの手数料を変更することが難しかったため、Bitcoin Coreは通常より高めの手数料を提示していました。この記事の後半で説明しますが、Bitcoin Coreは送信済みの未承認トランザクションの手数料を引き上げるツールを提供します。この機能により必要に応じていつでも手数料を引き上げることができるため、このツールを利用するユーザーには低めに手数料を算出します。

プログラマーとコマンドラインユーザーは、現在のRPCコールを介して自動的に改善された手数料の算出機能にアクセスし、新しいestimatesmartfeeRPCを使って上記の高度な機能にアクセスすることができます。これまでのestimatefeeRPCは引き続き動作しますが、非推奨になり将来のリリースで削除されます。詳細については、bitcoin-cli help estimatesmartfeeを実行するかリリースノートを参照ください。

GUIでのfee bumping

Bitcoin Core 0.14.0では未承認のトランザクションの手数料を増やすエキスパートオプションが導入されました。このプロセスはfee bumpingと呼ばれています。

これにより、手数料を節約したいユーザーは最初に小額の手数料を設定し、その手数料でトランザクションが承認されるかしばらく待ってから、ブロックに入れられないようであれば手数料を引き上げることができます。

Bitcoin Core 0.15.0では、エキスパートユーザーでなくてもこの機能を利用することができるようになります。GUIを使ってトランザクションを送信する際の手数料オプションで、”Request Replace-By-Fee”を選択できるようになりました。このオプションを使うと未承認のトランザクションをより高い手数料を設定したトランザクションに置き換えられるようになります。

Screenshot of replace-by-fee checkbox

ユーザーがこの機能を有効にした場合、その後Transactionsタブで対象のトランザクションを選択し右クリックし、”Increase transaction fee”を選択します。

Screenshot of "increase transaction fee" option on menu

元のトランザクションと手数料を置き換えたトランザクションが両方共Transactionsタブに表示され、どちらのトランザクションが承認されたか確認できます(必ずしも手数料が高いトランザクションが承認される保証はありませんが、承認されるのは必ずどちらか一方のトランザクションです)。いずれかのトランザクションが承認されると、その他のトランザクションは失敗として表示されます。

作成したトランザクションが承認されるまで何度でもfee bumpingが可能です。手数料を更新したトランザクションをいくつ作成しても承認されるのは1つのみです。

Replace-By-Fee (RBF)でトランザクションを作成するのをデフォルトにしたいユーザーは、Bitcoin Coreの起動時に -walletrbfを付与して起動するか、設定ファイルwalletrbf=1を追加してください。また、未承認のトランザクションを確定した決済として受け入れるサービスの中には、トランザクションが承認されるまでReplace-By-Feeを受け入れないサービスもあるので注意してください。opt-in replace by feeの詳細についてはRBF FAQを参照ください。

マルチウォレット

Bitcoin Core 0.15.0では、1つのBitcoin Coreで簡単に複数のウォレットを管理できるようになりました。この機能はまだ新しく、今のところエキスパートユーザーのみがアクセスできますが、今後GUIで利用できるようにしたいと考えています。

新しいマルチウォレットモードを使用すると以下のようなことが可能になります。

  • 会計処理を簡単にし、偶発的な資金の誤用を防ぐため、ビジネス用・プライベート用にそれぞれウォレットを分けて使用することができるようになります。

  • プライバシーを守るためにに、あなたのアイデンティティに関連するビットコインとあなたへの追跡ができないビットコインを分離して管理できるようになります。各ウォレットでは完全に異なる秘密鍵を使用し別のウォレットのビットコインが混ざるようなことがないため、2つのウォレットをつなげたテイント解析を防止します。

  • 現在廃止予定のBitcoin Coreのアカウント機能で今までできていたこととほぼ同じ方法でBitcoinバックエンドの構成を管理します。簡単な例として、あまりビットコインに馴染みのない友人や家族の小額の残高を処理する場合、各人のビットコインをあなたのビットコインと一緒に管理するのではなく、それぞれ別々のウォレットで管理できるようになりました。

このマルチウォレットの機能は現在、プログラマーやコマンドラインユーザーのRPCインターフェースを介してのみ利用可能で、これらのAPIは将来のバージョンで変更される可能性があります。もしマルチウォレットモードを改善しGUIで利用できるようにしたい場合は、この記事の最後に書いてある開発へコントリビュートする方法を参照してください。マルチウォレットモードのより詳細な情報はリリースノートを参照ください。

パフォーマンス改善

ブロックチェーンのサイズや複雑さが増すなか、できるだけ多くのユーザーがフルノードを利用できるように、Bitcoin Core 0.15.0ではいくつかの重要なパフォーマンス改善が行われています。

  • 30%〜40%高速になるブロックの検証と10%〜20%のメモリ使用量の削減 Initial Block Download (IBD)のテストでは、ディスクへの書き込みが大幅に減少しました。これは使用可能なビットコインのデータおよび、それらのコインを使用する際に必要な所有者の情報をトラッキングするchainstateデータベースのフォーマットを単純化した結果です。

  • 検証済みのトランザクションで構成されたブロックの検証スピードが40%から50%高速に 受信したブロックに以前検証済みmempoolのトランザクションが含まれていた場合、より少ないステップで検証をできるようにした結果です。

  • プラットフォームによるパフォーマンスの向上 chainstateデータベースで使用される一貫性チェックのオペレーションに最近のコンピュータープロセッサでサポートされているハードウェアアクセラレーションを使用した結果、それらのプロセッサを使用する環境でパフォーマンスが向上しました。主に2008年以降に製造されたIntelもしくはAMDのプロセッサが対象になります。

これらの改善の詳細についてはリリースノートを参照ください。

将来にむけて: P2SHでラップしたsegwitアドレス

Bitcoin Core 0.15.0をリリースするための最終準備が行われているなか、segregated witnessがBitcoinネットワークでアクティベートされ使用できるようになりました。

Bitcoin Coreは0.13.0からsegwitアドレスの作成をサポートしていましたが、このサポートはエキスパートユーザーのみが使用できるように設計されていました。私達はGUIやRPCの通常のユーザーインターフェースにsegwitのサポートを追加するのを、segwitが採用されるかどうか確認できるまで待っていました。

segwitのロックインとアクティベーションがこのタイミングとなったため、私達は上記全機能を含む0.15.0のリリースを遅らせるか、segwitをデフォルト設定にしたユーザーインターフェースが無いまま0.15.0をリリースするか選択する必要がありました。

私達は後者を選択することを決めましたが、次のメジャーアップデートまで6ヶ月待つ必要はありません。次のリリースではsegwit互換のアドレスがデフォルトで生成されるようになります。これは実際にコードが書かれ徹底的にテストされた後すぐにリリースされます。

技術的な詳細について興味がある方は、ネットワーク上のほぼ全てのウォレットと互換のあるP2SHでラップされたsegwitアドレスを使用してください。他のウォレットで生成されたBech32のsegwitネイティブアドレスへの送信はサポートするかもしれませんが、GUIではおそらく後のリリースまでBech32アドレス自体の生成をサポートしません。

最後に

Bitcoin Core 0.15.0の詳細な変更内容については、リリースノートを参照ください。Bitcoin Core 0.15.0はダウンロードページもしくはファイルディレクトリからダウンロードできます。

Bitcoin Coreへのコントリビュートに興味がある方は、コントリビュートページBitcoin Coreにコードをコントリビュートする方法のドキュメントをご覧ください。どこから始めたらいいか分からない場合や他の質問がある場合は、IRCでお尋ねください。

検証用のハッシュ

ec5e93ebc747d3d50b6c3bc33ac840348820b0e681de734999ebc4e671803a8e  bitcoin-0.15.0-aarch64-linux-gnu.tar.gz
ec6b9e0ea467f82f2f9938f8577fb41cb7c2998b027709f78b8aff02afc983a9  bitcoin-0.15.0-arm-linux-gnueabihf.tar.gz
75de087adf888f15faa4d8a65ea18dee75150ee761b0d6bcaefc7770230e1e66  bitcoin-0.15.0-i686-pc-linux-gnu.tar.gz
dd444b4e55ef8ef070c9f93f56a1ad028ea4d99205f6c3d4d631550f48937c05  bitcoin-0.15.0-osx64.tar.gz
973967c7722c9431b7bdb592981831e320fc6f67c4d10d3c3f27c0a251cab6d6  bitcoin-0.15.0-osx.dmg
54b6f54982da97f294d21ad69c6b8624f2cf40d157be0683123b2ba6db2bf2a1  bitcoin-0.15.0.tar.gz
c35f048c9e62335bba031db91bb36b7c11d9292c89c21af219f63eac1d090c34  bitcoin-0.15.0-win32-setup.exe
b7bb50796b79b18c97c15b90368962a275057d234ac674407e47148e73968497  bitcoin-0.15.0-win32.zip
94d0626426810db85b342dbf801681752e474ff0aff726783cb5297b70999a45  bitcoin-0.15.0-win64-setup.exe
d1686db57c59136c758db1536eaf1bb0b9a08c6a0fd21f54d39ee6a7b6bd39d8  bitcoin-0.15.0-win64.zip
ed57f268d8b5ea5acfcb0666e801cf557a444720d8aed5e812071ab2e2913342  bitcoin-0.15.0-x86_64-linux-gnu.tar.gz