• 検索結果がありません。

社会を変えるブロックチェーン技術:3.ビットコイン改善提案 最前線

N/A
N/A
Protected

Academic year: 2021

シェア "社会を変えるブロックチェーン技術:3.ビットコイン改善提案 最前線"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)特集 社会を変えるブロックチェーン技術. ❸ ビットコイン改善提案 最前線. 基 応 専 般. 日向理彦(合同会社ジャノム) 今井崇也(フロンティアパートナーズ合同会社) ビットコインの技術的進展と ビットコイン改善提案(BIP)  非中央集権的な電子マネーを目指して開発が行わ れているビットコインは,その開発体制自体も非中 央集権的になる(特定の開発者が強い決定権を持た ない)よう配慮がなされています.そのためには, 後方互換性をなくすような新しい機能の追加や,標 準的なユースケースの提案に関しては,なるべく オープンな場で公開し誰もが議論に参加できるよう にすることはきわめて重要です.ビットコインでは, 新しい提案を文書化し誰もがその詳細を自由に閲覧. 図 -1 GitHub 上の BIP 用リポジトリに掲載されている,現在提 出されている BIP の一覧(抜粋). できる場として「ビットコイン改善提案(Bitcoin. Improvement Proposal:BIP)」と呼ばれる GitHub. 重要になると思われるものを 2 つピックアップし,. 上のリポジトリ(図 -1)が用意されています.これ. それぞれ技術的な内容や意義について簡単に紹介を. はいわば「ビットコイン版の RFC」と言えるよう. させていただきます.. な存在であり,新たに取り入れられる機能は必ずこ の場で徹底的に議論され,コミュニティ全体の合意 が得られた時点で初めて本体のコードに統合される, という運営体制となっています.. 1196. BIP 114:マークル化抽象構文木 (Merkelized Abstract Syntax Tree).  BIP に掲載されているもののうち,重要かつ分か.  ビットコインの仕組みではほかのノードが不正を. りやすいものをいくつか列挙すると,ビットコイン. していないことを確認するためにネットワークに流. アドレスのリンクフォーマットを定める BIP 21,電. れるすべてのトランザクションを検証しなければな. 子署名のシリアライズ方式を厳格化する BIP 66,ピ. らないため,ユーザ数が増えトランザクションの作. ア間通信の暗号化方法を定める BIP 151 等がありま. られる数が増えていくとディスク容量やネットワー. す.このようにビットコインの重要な仕様に関する. ク帯域が逼迫し耐え切れなくなるのではないかと言. ドキュメントが多数掲載されていますので,これか. われています.この問題はビットコインコミュニテ. らビットコインを学ぶ方や現在学んでいる方,また. ィ内では「スケーラビリティ問題」という名前で呼. 将来どのような機能が実装されていく予定なのか知. ばれており,長年に渡り優先度の高い懸案事項とな. りたい方にとっては非常に貴重な資料となっており. っております.当然,これに対する改善策はいくつ. ます.. も提案されていますが,こうした改善策の 1 つと.  そこで本稿では,現時点で BIP にて議論されてい. して提案されているのが本章で解説する「マークル. る新機能のうち,とりわけインパクトが大きく今後. 化抽象構文木(Merkelized Abstract Syntax Tree :. 情報処理 Vol.57 No.12 Dec. 2016.

(2) ❸ ビットコイン改善提案 最前線 MAST)」1)であり,送金したコインの使用可否条件. MAST Root. に複雑な分岐処理が含まれている場合に劇的にトラ ンザクションのデータサイズを削減できる仕組みと. MAST Version. Script Root. なっております.  マークル化抽象構文木を理解するためには,送金 したコインを誰が利用できるのかをどのように記述. Hash. HI. HE. Subscript. HJ. HF. HG. SD SE SF. SG. HH. しているのかについて抑えておく必要があります. コインの使用可否条件は匿名関数の形でトランザク ション内に書き込まれており,たとえばアドレス A (公開鍵 A のハッシュ値)に対する入金トランザク ションであれば引数として公開鍵と電子署名を取る,. Message. HA. HB. SA. SB SC. 図 -2 マークル化抽象構文木の一例. HC. HD. M. SH. 1). 以下のような関数を記述します.. 1. 公開鍵のハッシュ値がアドレス A と一致しなけ れば false を返却し,一致すれば次の処理へ進む.. 2. 電子署名が正しければ true を,不正であれば false を返却する.. ここで A さんがこのコインを出金することを考え ると,引数 1 として「0」を渡すことで 1. および 2. の処理を実行することになりますから,関数のうち. 3. の処理は一切実行されません.そうすると 3. の. この関数の実行結果が true なのか false なのかによ. 処理に相当するデータは落としてしまってもよさそ. りコインが出金できるかどうかが決定されます.. うですが,単純にデータを落としてしまうと関数全.  P2SH と呼ばれる方式ではこの関数の実データは. 体のハッシュ値が正しいかどうかを検証できず,改. 出金トランザクションに含めるという約束となって. ざん検知ができなくなってしまいます.そこで分岐. おり,入金トランザクションには関数データのハッ. 先の処理それぞれのハッシュ値を計算し,さらに. シュ値のみを書き込むことで後から関数が改ざんで. それら 2 つのハッシュ値をつなげたものに対して. きないようにしています.. ハッシュ値を計算することでこれを関数全体のハッ.  冒頭で軽く触れましたが,マークル化抽象構文木. シュ値としてみましょう(マークル木).こうする. が威力を発揮するのは関数内に分岐処理がある場合. ことで改ざん検知をするためには,実行されない分. となります.例として次のような関数を考えてみま. 岐処理に関しては処理の実データを渡すのではなく. しょう.. そのハッシュ値を渡せば十分だと分かります.これ. 1. 引数 1 が 0 なら 2. の処理を,1 なら 3. の処理を. により分岐先の処理がどんなに長くとも,ハッシュ. 行う.. 値の長さ(32 バイト)程度に圧縮することができ. 2. 引数 2 がアドレス A に対する正しい電子署名に. ます.ただし,関数内の分岐が入れ子構造となって. なっていれば true,そうでなければ false を返却. いる場合などにはこのような単純な構成方法はでき. する.. ませんが,このような場合でも抽象構文木のような. 3. 引数 2 がアドレス B に対する正しい電子署名に. データ構造を作ることで任意の関数に対応できます. なっていれば true,そうでなければ false を返却. (図 -2).このようにして作られた木構造のことを. する.. 「マークル化抽象構文木」といいます.. 引数 1 を適切に選択することで A さんまたは B さ.  マークル化抽象構文木が利用できそうな複雑な分. んのどちらでも利用できるトランザクションとなっ. 岐処理を含む例としてライトニング・ネットワーク. ていますので,これはいわば「A さんと B さんの共. に用いられているトランザクションなどが挙げられ. 用ウォレット」を作っていると言うことができます.. ますが,それ以外に 1 つ興味深い例として「巨大. 情報処理 Vol.57 No.12 Dec. 2016. 1197.

(3) 特集 社会を変えるブロックチェーン技術. なマルチシグトランザクション」というものがあり. 目的が,ブロックの P2P ネットワーク全体への伝. ます.ここで一般的に M-of-N マルチシグトランザ. 搬時間の短縮にあるわけではありません.しかし,. クションというのは,N 個の公開鍵のうちいずれか. 結果的にブロックの伝搬時間の短縮につながり,若. M 個の電子署名が与えられれば送金ができるとい. 干トランザクションの承認が早くなるとは思います. う種類のトランザクションのことを指します.たと. が,劇的に改善するものではありません.むしろ,. えば 3-of-2,000 マルチシグトランザクションを考. 今後増えていくであろうトランザクションに対して. えると,素直な実装では 2,000 個(40,000 バイト). 今のうちに無駄を省きネットワークの帯域確保をす. もの巨大なアドレスデータを含まなければいけませ. る対策になっています.. ん.ところが,これを約 13 億個の 3-of-3 マルチシ.  これまでのノード間のブロックのやりとりは,次. グトランザクションに分解しマークル化抽象構文木. の通りです.フルノード A の先端ブロックがフルノ. を適用することで 1,500 バイト以下のサイズで表現. ード B にはまだないという状況を考えましょう(フ. することができます.. ルノードとは,最初からの完全なブロックチェー.  ビットコインに対する改善案として利用が検討さ. ンを保持しているノード.簡略化のためフルノード. れているマークル化抽象構文木の仕組みは,抽象的. のみに限定).. で汎用性が高くほかの分野にも応用できる可能性を.  フルノード B がフルノード A に getblocks メッ. 秘めています.たとえば安全ではないネットワーク. セージを送ると,返答としてフルノード A は先端. 経由で巨大なプログラムの一部分の機能のみダウン. ブロックのブロックヘッダハッシュを inv メッセー. ロードし利用したい場合に,プログラム全体をダウ. ジでフルノード B に送ります.. ンロードすることなく改ざんを検知するといった利.  次に,フルノード B はフルノード A に先端ブロッ. 用例が考えられるでしょう.ビットコインの仕組み. クのブロックヘッダハッシュを含む getdata メッ. の一部として発明されたブロックチェーンに対して. セージを送ると,返答としてフルノード A は先端. ほかの分野での応用可能性が模索されているように,. ブロックをフルノード B に送ります.. マークル化抽象構文木についてもビットコインを超.  先端ブロックを送るときに,先端ブロックに含ま. えた分野で活躍する日が来るのかもしれません.. れているトランザクションも一緒に送ります.  さて,最後に送られたトランザクションは,フル. BIP 152:コンパクトブロックリレー (Compact Block Relay). 1198. ノード B が初めて知るものなのでしょうか?   いえ,このトランザクションはもっと前にフル ノード B に到達していることが多いのです.トラ.  本章では,2016 年 8 月 24 日(日本時間)にリリース. ンザクションを発行してほかのノードにブロードキ. された Bitcoin Core 0.13.0 から入った新機能であ. ャストすると,P2P ネットワーク上をトランザクシ. る BIP152 コンパクトブロックリレー(Compact. ョンが伝搬していきます.通信速度が遅いネットワ. Block Relay)2)を紹介します.Bitcoin Core 0.13.0. ークを除いて,数秒で P2P ネットワーク全体にト. は執筆現在の最新リリースになっています.. ランザクションが行き渡ります.このため,マイニ.  コンパクトブロックリレーを簡単に説明すると,. ングをしてブロックが生成されるときにはすでに,. ノードがブロックを受け取る方法を効率化すること. ブロックに含まれるトランザクションは P2P ネッ. でブロックを処理する時間を短縮し,またビットコ. トワーク上に行き渡っているのです.. インの P2P ネットワーク内での通信量を減らそう.  コンパクトブロックリレーでは,トランザクショ. というものです.これ自体ビットコインユーザにす. ンを指し示す ID(short transaction id)だけをも. ぐに好影響があるものではありません.この BIP の. らうことで,いちいちトランザクションを送っても. 情報処理 Vol.57 No.12 Dec. 2016.

(4) ❸ ビットコイン改善提案 最前線. らわなくてもブロックを再構 Node A. 成 で き, ゆ え に P2P ネ ッ ト. Node B. ワーク内の通信量を減らせる ことになります.. Node B. Node A. sendcmpct(1) block. block. Node B. Node A. sendcmpct(0) block.  コンパクトブロックリレー. cmpctblock. の 仕 様 で は, コ ン パ ク ト ブ. getblocktxn. ロックを利用するときに 2 つ. headers or inv. のモードが用意されていま. getdata. getdata(CMPCT). す. 高 帯 域 幅 リ レ ー(High. block. cmpctblock. headers or inv. blocktxn. Bandwidth Relaying) と 低. getblocktxn. 帯 域 幅 リ レ ー(Low Band-. blocktxn. width Relaying)です(図 -3 参照) .. A. Legacy Relaying.  この 2 つのモードの大き. B. High Bandwidth Relaying. C. Low Bandwidth Relaying. 図 -3 コンパクトブロックリレーのプロトコルフロー. な違いは,新しいブロックが 来たことを次のノードにアナウンスするタイミング. ので,より詳しく知りたい方は以下に掲載してあり. です.高帯域幅リレーでは新しいブロックの検証を. ます文献 2)をご参照ください.なお,本稿に記載. しながら次のノードにアナウンス(cmpctblock メ. しました情報は 2016 年 8 月時点のものであり,将. ッセージ)をしますが,低帯域幅リレーではこの検. 来的に変更される場合がありますので,最新の情報. 証が終わってからアナウンスをします.低帯域幅. につきましてはご自身で改めてご確認いただければ. ネットワークでは,高帯域幅ネットワークと違って. と思います.. トランザクションの省略ができない場合(ノードに まだトランザクションが伝搬していない)が多いと 考えられます.short transaction id によるハッシュ 衝突を避けるため,低帯域幅リレーでは始めに inv. 参考文献 1) Lau, J. : BIP 114 : Merkelized Abstract Syntax Tree(https:// github.com/bitcoin/bips/blob/master/bip-0114.mediawiki) 2) Corallo, M. : BIP 152 : Compact Block Relay(https://github. com/bitcoin/bips/blob/master/bip-0152.mediawiki) (2016 年 9 月 1 日受付). メッセージまたは headers メッセージを使って新 しいブロックのアナウンスをすることになります.. 詳細な技術内容を知るには  本稿ではコインの使用可否条件が複雑な場合に劇 的にトランザクションのサイズを削減することので きる技術「マークル化抽象構文木」および,ピア間 でブロックデータを受け渡す際に通信相手がブロッ. 日向理彦 [email protected] 東京大学理学部物理学科を卒業後,長距離相互作用のある系の熱 統計力学的性質に関する研究で修士号を取得.前後してビットコイ ンと出会い,その斬新さに魅了される.現在は分散型電子マネーに 関する基礎研究の傍ら,決済サービスや取引所の開発・運営を行っ ている.合同会社ジャノム代表 CEO.. クに含まれているトランザクションをすでに持って いた場合に通信量を削減する「コンパクトブロック. 今井崇也 [email protected]. リレー」を取り上げました.紙面の都合上,具体的. フロンティアパートナーズ合同会社代表 CEO.(株)ブロックチェ ーンハブ技術アドバイザー.一般財団法人ブロックチェーン技能認 定協会アドバイザー.新潟大学大学院自然科学研究科修了.理学博 士(素粒子理論物理学).. なプロトコルなどの詳細な技術情報については掲載 せず,概要を理解できる程度の説明にとどめました. 情報処理 Vol.57 No.12 Dec. 2016. 1199.

(5)

図 -1 GitHub 上の BIP 用リポジトリに掲載されている,現在提 出されている BIP の一覧(抜粋)日向理彦(合同会社ジャノム)今井崇也(フロンティアパートナーズ合同会社) 基専 応❸ ビットコイン改善提案 最前線般

参照

関連したドキュメント

 当社は、APからの提案やAPとの協議、当社における検討を通じて、前回取引

加藤 由起夫 日本内航海運組合総連合会 理事長 理事 田渕 訓生 日本内航海運組合総連合会 (田渕海運株社長) 会長 山﨑 潤一 (一社)日本旅客船協会

在学中に学生ITベンチャー経営者として、様々な技術を事業化。同大卒業後、社会的

[r]

技術士のCPD 活動の実績に関しては、これまでもAPEC

(ECシステム提供会社等) 同上 有り PSPが、加盟店のカード情報を 含む決済情報を処理し、アクワ

は,コンフォート・レターや銀行持株会社に対する改善計画の提出の求め等のよう

原子力損害賠償・廃炉等支援機構 廃炉等技術委員会 委員 飯倉 隆彦 株式会社東芝 電力システム社 理事. 魚住 弘人 株式会社日立製作所電力システム社原子力担当CEO