Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bitcoinが直面している課題の最前線

 Bitcoinが直面している課題の最前線

Blockchain Jam 2018 で講演させていただいた「Bitcoinが直面している課題の最前線」というスライドです。

Masahiko Hyuga

October 21, 2018
Tweet

More Decks by Masahiko Hyuga

Other Decks in Technology

Transcript

  1. 自己紹介 日向 理彦(ひゅうが まさひこ) 東京大学理科一類 ⇨ 理学部物理学科 ⇨ 総合文化研究科(物性基礎論) 2013年末にビットコインと出会い、論文などを読みより深い技術を知るにつれてのめり

    込んでいく。 ECサイト、採掘プール、交換所、ブレインウォレットなど多数のサービスを開発・運用(合 同会社ジャノム)。 現在は、事業者向けのバックエンドで利用できるウォレット管理システム (Enterprise Wallet Manager; EWM) の開発および提供を行う会社(フレセッツ株式会社)をメインに 活動している。
  2. 2018年10月21日 Blockchain Jam 2018 「スケーラビリティ問題」とは? ビットコインでは、ネットワークを流れるすべてのトランザクションを全ノードで共有する必 要がある。 そのためユーザ数や需要の増加によりトランザクション数が増えていくと、各ノードの 様々なリソースが逼迫することが予想される。 リソースの具体例:ネットワーク帯域、メモリ、CPU演算能力

    このようにトランザクション数の増大にビットコインネットワークが耐えられなくなってしま うことを「スケーラビリティ問題」という。 ※より学術的には……トランザクション数 N に対して各ノードに必要なリソースが現状では O(N) ですが、これを O(1) とできればい くらトランザクション数が増えても各ノードの負担は全く増えませんので無問題となります。また O(log(N)) 程度であれば実用的には 問題ないでしょう。このように、各ノードに必要とされるリソースのオーダーをいかに抑えることができるか?というのが、具体的なス ケーラビリティ改善に関する研究の目標となります。
  3. 2018年10月21日 Blockchain Jam 2018 現時点での限界性能(参照元) 参考……クレカ (VISA) の平均処理件数 2,000tps、ピーク性能 56,000tps

    ※tps = transactions per second = 秒あたりトランザクション数 ▪ ネットワーク帯域 トランザクションサイズは平均すると約200バイト程度なので、1Mbps あたり 1,250 tps。 ▪ CPU ECDSA の署名検証処理が主な仕事で、Intel CPU で約 4,000 tps 捌ける。 ▪ ブロックサイズ制限 一ブロックあたり1MBの暫定的な上限がある。約 8 tps。ただしプログラムによるただの 設定値なので、いくらでも引き上げ可能。
  4. 2018年10月21日 Blockchain Jam 2018 現状 ネットワーク需要は既にブロックサイズ上限に達しており、ブロックへの取り込み待ちトランザクションが溢れて いる。 マイナーはトランザクション手数料の支払が多い順にブロックに取り込むため、手数料をケチると後回しにされ 何日も取り込まれない可能性がある。 ※ただしこれは需要と供給が拮抗している状態であることを意味しており、経済学的には合理的な状態とも言える。

    ⇨ ブロックサイズの上限引き上げにより解決しようという人たちによるハードフォーク (Bitcoin Cash) しかしながら上限引き上げの副作用としてネットワーク帯域・ディスク容量を圧迫すること、後述する Lightning Network などの新しい技術により改善できることなどから、 Bitcoin Core 開発者はブロックサイズ上限引き上げ に消極的。
  5. 2018年10月21日 Blockchain Jam 2018 支払チャネル 通常の支払方法だと、必ずトランザクションのデータを全ノードにブロードキャスト&コ ピーし、ブロックチェーンに書き込む操作が必要となる(「オンチェーン取引」という)。 ⇨ これは明らかに高コスト 毎回ブロックチェーンに書き込まずとも送金を行いたいユーザ間のみで完結する方法

    (「オフチェーン取引」という)はないだろうか? ⇨ 最も簡単な方法:第三者にビットコインを預け、第三者機関内のデータベースで各ユー ザの残高を管理する(cf. 銀行の内国為替) この方法では第三者機関の破綻リスク(e.g. Mt.Goxや銀行の破産)や持ち逃げリスク があり、安全ではない。 ⇨ そこで考えられたのが、特殊なビットコイン・トランザクションを用いて行う「支払チャネ ル (Payment Channel)」と呼ばれる一連の技術。
  6. 2018年10月21日 Blockchain Jam 2018 マイクロペイメント・チャネル(概要) 無与信下 (trustless/trust-free) でオフチェーンで送金することのできるアルゴリズムで あり、他の支払いチャンネルの基礎となっている非常に重要なもの。何万回送ろうとも手 数料は厳密にゼロになることから、非常に小さな額の支払い(マイクロペイメント)に適し

    ているとされる。 マイクロペイメント・チャネルを使って送金する手順: 1. [開始処理] 送金人と受取人の間で特殊なトランザクションを作成し、ブロックチェーンに書き込むことで支 払チャネルを開通させる。 2. [初回送金] 送金人は送金トランザクションを作成し、受取人に渡す。 (※ブロックチェーンには書き込まない) 3. [追加送金] 追加の送金が必要になったら、送金人は追加分だけ送金額を増額させたトランザクションを 作成し、受取人に送り直すことで 2. で作ったトランザクションを上書きする。 (※ブロックチェーンには書き込まない) 4. [終了処理] 送金し終わったら、最終的なトランザクションをブロックチェーンに書き込むことで支払チャネ ルを閉鎖させる。
  7. 2018年10月21日 Blockchain Jam 2018 マイクロペイメント・チャネル(Pros./Cons.) メリット: • 検証が早い(トランザクションの正当性のみ チェックすればいいので、一瞬) •

    第三者の信頼を必要としない • 何回も送金を行う場合には、手数料が激安 になる(二回分の手数料で何万回でも送れ る) • 最終的な送金額のみが公開され、途中経過 は秘匿されるため、ある程度プライバシーが 守られる デメリット: • M.P.チャンネルを開いた特定の二者間でし かやり取りできない • はじめにBTCをデポジットしなければならな いため、ある程度の余剰資金が必要 • 受取人もオンラインでなくてはならない • トランザクション展性により、返金トランザク ションが無効化されてしまう可能性がある(こ れは SegWit により解決可能) • 通常の送金と比べると、遥かに複雑
  8. 2018年10月21日 Blockchain Jam 2018 Lightning Network(概要) マイクロペイメント・チャネルは、支払いチャンネルを開いた二者間のみのやり取りに限定されている。そのた め、違う人に送金する際には、その人ごとに支払いチャンネルを開く必要があり、非効率。そこで支払いチャン ネルをバケツリレー的にいくつも経由することで、どこかを経由して支払いチャンネルが繋がってさえいれば送 金ができるプロトコル「

    Lightning Network」が発明された。 Lightning Networkの一つの利点として、ブロックチェーンのデータ量を大幅に削減できることがあげられる。こ れにより、現在問題になっているスケーラビリティの問題を解決できるのではないか、と言われている。従来の 方法では支払いを行うたびにトランザクションがブロックチェーン上に書き込まれるが Lightning Network を用 いれば、支払いチャンネルの開通・閉鎖トランザクションというたった二つのトランザクションを定期的に(例えば 数カ月に一回)ブロックチェーン上に書き込むだけで、ブロックチェーンを利用せずとも支払いを何回でも行うこ とができる。 通常の支払い方法 支払いトランザクション Lightning Network ブロックチェーン 支払いごとに毎回ブロック チェーンへトランザクション を書き込む! 支払いチャンネル 送金   を経由して支払い ブロックチェーン 支払いチャンネル の開通・閉鎖時の み書き込み
  9. 2018年10月21日 Blockchain Jam 2018 Lightning Network(Pros./Cons.) メリット: • 直接支払いチャネルを開いていない相手と もやり取りができる

    • ブロックチェーンへ書き込まなければいけな いデータの削減が期待できる • 銀行のクリアリング・システムのようなものを 無与信下 (trustless/trust-free) で実装でき る デメリット: • 手続きが非常に複雑 • バグの温床となる可能性 • トランザクション展性対策が必要 (SegWit 導入待ち) • 常にインターネットに接続し、相互監視をす る必要がある • 中継や支払のために、ある程度の金額のコ インをデポジットする必要がある
  10. 2018年10月21日 Blockchain Jam 2018 Schnorr 署名 Bitcoin では ECDSA(楕円曲線 DSA)を電子署名方式として採用しているが、Schnorr

    (シュノア)署名も使えるようにしようという動きがある。 Schnorr 署名は、ECDSA に比べて以下のような利点を持つ。 • 安全性が証明可能である • 電子署名が展性 (malleability) を持たない • 複数の署名を集約することができる • バッチ検証により多数の署名を検証する際に効率的になる • Bitcoin のスクリプト言語を利用しなくても、アトミックスワップなどができるようにな る(アダプタ署名)
  11. 2018年10月21日 Blockchain Jam 2018 匿名性は犯罪につながるから、危険……? 「ビットコインは匿名性が高いため、犯罪行為に使われやすい!違法薬物の売買や資 金洗浄に使われている!ビットコインは危険だ!」と言われることがありますが…… • 「ビットコインは匿名性が非常に高い」って本当? •

    匿名性が全くない方が送金システムとして優れているの? といった議論が正確になされているのは少ないようです。 ▶ そこでまずは、送金システムに匿名性があることのメリット・デメリットを考えてみましょ う。
  12. 2018年10月21日 Blockchain Jam 2018 匿名性のメリットとデメリット ▪ メリット ① プライバシーを保てる 匿名性がないと、給料がいくらなのか、何をいつ

    買ったのか、総資産はいくらなのか、といった情報 が推測できてしまう可能性がある ②Fungibility(代替可能性)を保てる あるモノが個体差がなく同一数量の別の物にいつ でも交換できる、という性質を持つとき「 Fungibility がある」という。(例: 1グラムの純金は、別の 1グラ ムの純金と本質的に一緒であり交換可能である。) ビットコインではコインがどのように流通していった のかがすべて追跡できるため、例えば自分の持っ ているコインが犯罪行為に使われていたコインだと 後から判明すると、 他人がこのコインを使った支払に応じてくれなく なってしまう可能性がある。 一方で匿名性があれば、どのコインも同等のもの であることが保証されるから、このような問題は起 きにくいと考えられる。 ▪ デメリット 足がつきにくいため犯罪行為に使いやすい。 • 詐欺 • 資金洗浄(マネーロンダリング) • 違法薬物取引 • ランサムウェアの身代金支払 • 脱税
  13. 2018年10月21日 Blockchain Jam 2018 匿名化の試み • 撹拌サービス …… Tumbler /

    Mixer • CoinJoin …… DASH (旧 Darkcoin)、SharedCoin(サービス終了?) • リング署名 …… CryptoNote (Monero) • 秘匿 (Confidential) トランザクション • TumbleBit • ゼロ知識証明を利用したもの …… Zerocoin / Zerocash 匿名化を目指したものではないが、(副作用的に)少なからず匿名性が担保できるもの: • Lightning Network • Mimblewimble
  14. 2018年10月21日 Blockchain Jam 2018 リング署名 支払人の匿名性を向上させる仕組みとして、リング署名を応用したものがある。 リング署名とは、複数人の署名人のうち、誰が署名したかは分からないが、そのうちの 誰かひとりが作成した署名であることを保証できるアルゴリズム。 通常の電子署名 リング署名

    署名人 電子署名 一対一に対応 電子署名 署名人 (複数) 電子署名作成 誰が署名したかは 分からない! ? 通常、ひとつの電子署名にはひとりの署名者(公開鍵)が対応するため、誰が送金を 行ったのか分かってしまう。リング署名を使うと、複数の署名者のうち誰が送金したのか を隠匿することができる。
  15. 2018年10月21日 Blockchain Jam 2018 秘匿トランザクション 勝手にコインが増やされてしまわないよう、トランザク ションの入金額 (Input) と出力額 (Output)

    が一致す るかチェックしなければならない。 Bitcoinではトランザクションに入力と出力の金額があら わに書かれているため、これを使ってチェックできる。し かしこれだと、送金額がバレてしまう。 「入力額の合計 = 出力額の合計 (Σ In = Σ Out)」という 等式だけをチェックすれば十分だということに注目する と、やり取りする金額があらわに書かれていなくても不 正チェックができる! 楕円曲線の性質をうまく用いることで、上記の目的を達 成することができ、秘匿トランザクション(Confidential Transaction) と呼ばれている。 Input Output 1BTC 1BTC 1BTC 1.8BTC 1.2BTC ←いくら送ったかバ レてしまう。 入力の合計額と 出力の合計額が 等しいかチェック→ 1BTC + 1BTC + 1BTC || 3BTC || 3BTC || 1.8BTC + 1.2BTC ? ←この部分だけ  チェックできればよい
  16. 2018年10月21日 Blockchain Jam 2018 TumbleBit Mixing や Tumbler では、中央管理者がコインを持ち逃げしたり、参加者の情報を集め ることで匿名性を破ることができてしまう。こうした問題点を解決する仕組みが

    「TumbleBit」である。 中央管理者「Tumbler」を通じて Alice から Bob に 1BTC を送金することを考える。大まかな処理の流れは 以下の通り。 1. Tumbler から Bob 宛の 1BTC 分の出金トランザ クション tx を作り、Tumbler のみが知る鍵で暗号 化 (Enc(tx)) し Bob へ渡す 2. Bob は Enc(tx) が Bob のものであるとステップ 3. で Tumbler に知られないようにスクランブル処理 (Scr(Enc(tx))) を施し Alice に渡す 3. Alice は Tumbler に 1BTC を支払うことで暗号化 を解除 (Scr(tx)) してもらい、結果を Bob へ渡す 4. Bob はスクランブルを解除 (tx) し、出金トランザク ションをネットワークへブロードキャストする
  17. 2018年10月21日 Blockchain Jam 2018 ゼロ知識証明 ー 完全な匿名性を目指して これまでに取り上げた方式の匿名性はどれも、そのシステムを利用する際に参加した人 数に依存している。そのため、「その時点で匿名化システムに参加した人のいずれかで ある」といった情報が漏れてしまい、完全な匿名性を実現できているとは言えない。(例

    :TumbleBit では、同じ Tumbler を利用したユーザのいずれかのコインであることが分 かってしまう) 単純に参加人数を増やせば匿名性は強固にできるが、トランザクションサイズが増大し てしまいスケーラビリティが失われるなどのデメリットがどの方式にも存在する。 ▶ ゼロ知識証明の最新の研究結果を利用することで、スケーラビリティを保ちながら完 全な匿名性を実現できる方式が提案された。
  18. 2018年10月21日 Blockchain Jam 2018 ゼロ知識証明 ー 完全匿名コイン • Zerocoin ◦

    コミットメントやゼロ知識証明、アキュムレータといった暗号理論の道具を組み合わせることで完全 な匿名性を目指したプロトコル • ZCoin ◦ Zerocoin の実装。2016年9月28日正式ローンチ • Zerocash ◦ zk-SNARK と呼ばれる新しい暗号手法 (〜2010年) により、Zerocoin の様々な課題を解決 • Zcash ◦ Zerocash の実装。2016年10月28日正式ローンチ ZCoin の GUI クライアント
  19. 2018年10月21日 Blockchain Jam 2018 ゼロ知識証明 ー Zerocoin と Zerocash 比較表

    Bitcoin(参考) Zerocoin Zerocash 証明/署名方式 ECDSA zk-SoK(+アキュムレータ) zk-SNARK 証明/署名サイズ 〜100 バイト 40,000 〜 50,000 バイト 300 〜 1,000 バイト Mint 処理時間※1 極めて高速(〜0.1ms) ※電子署名作成時間 高速(〜800ms) 極めて高速(〜0.02ms) Pour 処理時間※1 高速(〜500ms) 極めて低速(〜2分) 検証時間※1 極めて高速(〜0.1ms) 低速(〜500ms)※2 高速(〜5ms) 匿名性 擬似的な匿名性 完全な匿名性 完全な匿名性 送金額面 任意の金額 固定額 任意の金額 ※1 …… Bitcoin の値は libsecp256k1 の手元のマシンのベンチマーク結果、 Zerocoin/Zerocash の値は論文掲載の値による ※2 …… Mint, Pour 処理時間と一緒だが、検証はすべてのノードが行う必要があり、システム全体のパフォーマンスを大きく左右するため、ここでは薄赤色としている
  20. 2018年10月21日 Blockchain Jam 2018 その他 ▪ Lightning Network L.N. を用いると送金情報は送金に関わった人(送金者、受領者、中継者)にのみ伝達さ

    れるため、ある程度の匿名性が担保されると考えられる。銀行送金などの匿名性担保 の仕組みとほぼ一緒。 ▪ Mimblewimble A ⇨ B ⇨ …… ⇨ Z とコインの受け渡しが行われた場合、必要なのは「A のコインが最終 的に Z に渡った」という情報だけだが、現在のビットコインの仕組みでは不正を検知する ためには途中経過の情報もすべて取っておく必要があり非効率。そこで複数のトランザ クションを「集約」し、途中経過を省略できる仕組みとして「Mimblewimble」が考えられ た。途中経過を保持しないため、ある程度の匿名性を担保できると考えられる。
  21. 2018年10月21日 Blockchain Jam 2018 まとめ……スケーラビリティとプライバシー 暗号通貨の直面している二大課題として《スケーラビリティ》と《プライバシー》の問題が あげられる。 • スケーラビリティ……トランザクション数の増加に対して、ネットワークが耐えられな くなってしまう問題

    ◦ これを解決する最有力候補として Lightning Network が知られている • プライバシー……ブロックチェーン上のデータの解析によって、支払情報が丸見え になってしまう問題 ◦ CoinJoin, リング署名, Confidential Transaction, TumbleBit, zk-SNARK など、最新の暗号理論の 研究結果の応用が解決策として知られている ⇨ 今後の研究・開発により、少しずつ解決されていくことが期待されている。
  22. 2018年10月21日 Blockchain Jam 2018 さいごに フレセッツ株式会社では、取引所のバックエンドでAPI連携して使えるウォレットシステム の提供を行っています。 当社製品にご興味のある方、また当社採用に興味のある方はぜひブースまでお越しく ださい。 •

    フレセッツ株式会社(Fressets, Inc.) • 場所:東京都文京区本郷7-3-1 東京大学南研究棟 360号室(東京大学構内) • 従業員数:約10名 • 資本金:約4億円 • 設立:2018年 • Webページ:https://fressets.com/