Bitcoin Core 0.13.0がリリース。目玉の新機能

レポート「アルトコイン図鑑」では30種類以上のコインを解説ビットコイン研究所

レポート「ビットコインの情報源決定版(26ページ)」を配信しました。レポート内容へ

Bitcoin Core 0.13.0がリリースされました。

100人以上の開発者による5ヶ月の開発を経てリリースされたメジャーバージョンアップで、多くの先進的な機能を取り込んでいます。

こうした機能は、ユーザーには直接関係ないことも多いので、知る人は少ないと思うのですが、よい機会なので新機能を紹介します。基本こちらの記事を参考に、わたしからの解説も加えてあります。

Segregated Witness (Segwit)

最も重要なコードチェンジがSegwitです。Segwitにより、ブロックに含めることのができるデータ量(トランザクション)が最大4倍になるほか、懸案だったトランザクション展性の問題を最終的かつ恒久的に解決します。これにより、マイクロペイメントチャネルなどの新しい技術の開発が進むでしょう。

Segwitのコード自体は0.13.0に取り込まれているものの、アクティベーションフラグが立っていません。実際にSegwitがデプロイされるのは、次のバージョン、0.13.1になります。

なので、0.13.0は正確にいうと、Segwit 準備のための、コードのお披露目リリースになります。ですが、コードは完成されておりSegwitを自分の環境にインテグレートしたいという人がこれをつかって準備をすることができます。

0.13.1のリリース時期は未定ですが、些細なバグフィックスとSegwitのフラグを立てるだけの変更とみられ、0.13.0に問題が特になければ、程なくしてリリースされると考えられています

Compact Block Relay

ビットコインの仕組では、フルノードは、同じトランザクションを2度受け取ることになります。最初は、トランザクションがブロードキャストされたとき。ノードは、それを中継するためにトランザクションを受け取り、中味を検証しています。

さて、新しいブロックが発見されたとき、その採掘者から新しいブロックの内容が伝播されるわけですが、そのときも、同じトランザクションを受け取ることになります。

つまり同じ内容を、トランザクション中継時、新しいブロックの伝播時の2回にわたってうけとることになるのです。これはネットワークの容量を圧迫してしまうとともに、より重要な問題としては、ブロックの伝播に時間がかかるることで、回線が細い地域のノードが新しいブロックを手に入れて検証するまでに時間がかかってしまうということになります。これはネットワークの分断や、回線が細い採掘者を不利にします。

そこで、ノードは、すでにトランザクションを中継時にデータを持っているのですから、ブロック生成時には同じデータを受け取る必要は本来ないのでは?というところに注目したのが、コンパクトブロックの仕組です。

protocol-flow

コンパクトブロックでは、ブロック生成時にコンパクトブロックハッシュだけを送ることで、受け取ったノードはこれを元に、ブロックに含まれるトランザクションデータはすでに手元にあるものを使ってブロックを構築することができるようになります。

これにより、トランザクションデータの2重受け取りを解消します。

Mining transaction selection (“Child Pays For Parent”)

ビットコインのネットワークは混雑していて、最近は手数料が上がっているというのはご存知のとおりとおもいます。ネットワークのキャパシティを超えるトランザクションが流れている場合、どれを優先してマイニングするかを決めないといけません。

採掘者は、手数料のたかいトランザクションを優先してマイニングするということをしていました。いわゆる手数料競争がおきていて、十分な手数料をつけないトランザクションは、採掘されるまで、24時間以上かかることもありました。

既に存在しているReplace by Feeの機能ではは、送金側においては、より高い手数料を添付しなおしてトランザクションを再度流すことができます。採掘者がより高い手数料が添付されたほうを取り込めば、そちらのトランザクションが有効になります。よって、取引をリプレイスできるわけです。(この機能がつかえるユーザー向けウォレットはまだ無いようです)

一方で、コインの受け取り側としては、どうでしょうか?低い手数料で送られたコインを受け取った側が、それを使いたいとおもったとき、下手をすると採掘まで24時間以上もまたなければいけません。低い手数料でおくって送りて側のせいです。

Mining Transaction Selectionでは、コインを受け取った側が、そのコインを使うときに、高い手数料を添付すれば、採掘者がそれを認識して、以前の低い手数料の部分もふくめてマイニングしてくれるというものです。

無題3

AからBに低い手数料でコインを送ったとします。このコインをBからCに送るときに、早く採掘されるように高い手数料をつけて送ったとしましょう。しかしながら、Cが受け取ったこのコインがコンファームされるには、A→Bの低い手数料の部分が採掘されるのをまたねばいけませんでした。ここがボトルネックになって、それ以降に多くの手数料をつけても、採掘が早くなるとは限りません。

Mining Transaction Selectionは、採掘者がこのような構造にあるトランザクションを認識できるようになります。採掘者は、BからCの手数料の高い部分を手に入れるために、AからBの部分が手数料が低くても、これをまとめて採掘して優先的にブロックに取り込みます。これにより、採掘者はBからCへの高い手数料を手に入れることができるわけです。

この仕組は、ユーザーおよび採掘者双方にメリットが有ります。

Hierarchical Deterministic Key Generation

HDウォレットの仕組はすでに一般的ですが、Bitcion Coreには取り込まれていませんでした。このバージョンからは、CoreクライアントでHDウォレットが作成できるようになります。

Linux ARMのバイナリの提供

ソフトバンクが買収したことでも知られるARMチップむけのバイナリ版を提供します。いままでもソースコードからビルドすれば可能でしたが、ユーザーからの強い要望があるということで、今回から公式のバイナリ版が提供されます。

スマートフォンや、組み込み用のCPUとして多く使われているARMチップですが、そこ向けのバイナリが提供されることで、こうしたデバイスでの利用も拡大するかもしれません。

その他のセキュリティおよびパフォーマンスの改善

沢山の細かいパフォーマンスやセキュリティの改善がおこなわれています。C++11とPython3にコードベースをアップデートしています。データベースのキャッシュメモリが向上しました。Dosアタックを防ぐために、最低手数料以下のトランザクションをリレーしないオプションができました。P2P通信プロトコル、RPCコールなど基礎的なレベルのコードを改善しパフォーマンスが向上しています。

Bitcoin Coreからのリリースノートはこちらになります。

最後に、こうした開発者の地道で堅実な努力の積み重ねがコインの価値には不可欠だということを改めて認識させてくれます。開発者の皆様、ありがとうございました。お疲れ様でした。

<参考>

  • https://bitcoinmagazine.com/articles/bitcoin-core-is-released-what-s-new-1471877163
  • リリースノート https://bitcoincore.org/en/releases/0.13.0/

詳細日本語マニュアル付きTrezorの購入はコインギフトから

初心者向け「使って勉強!ビットコイン」DMMオンラインサロン