Skip to content

本記事はThe Blockの許可を得て、原文をベースに作成しています。

原文:MimbleWimble: History, Technology, and the Mining Industry - The Block

Image

Mimblewimble系プロジェクト「Grin/BEAM」の概要

Mimblewimble系プロジェクトの誕生秘話

Grinの誕生

Mimblewimbleはファンジビリティ、プライバシー、スケーラビリティに重点を置いているブロックチェーンプロトコルで、2016年のIRCチャンネル「#bitcoin-wizards」にTom Elvis Jedusorという明らかな偽名を用いたユーザーによって提案されました。

Jedusorの論文は、別の論文「[PDF]Increasing Anonymity in Bitcoin, 2013」に基づいています。

この論文はone-way aggregate signatures (OWAS)やアカデミアの世界ではあまり信じられていなかったPairing-based cryptographyを利用するものでした。またビットコインのコア開発者であるGregory Maxwellによって提案されたConfidential TransactionsとCoinJoinという2つのプライバシー技術からもインスピレーションを得ています。

Mimblewimbleのオリジナルペーパーはビットコインと同じく楕円曲線暗号を使っており、Blockstreamの数学者、暗号学者であるAndrew Poelstraを含む多くのビットコイン研究者から注目されました。また、Andrew Poelstraは2016年10月に“precise” versionのホワイトペーパーを発表しています。Poelstra自身は長い間、プライバシーに焦点を当てており、ビットコインにおけるConfidential TransactionsとScriptless scriptsの研究を行っていました。

Mimblewimbleが提案された時点では、ビットコインへの導入やサイドチェーンとしての導入が検討されましたが、Blockstreamの共同創業者Pieter Wuilleやビットコインのコア開発者によって後方互換性を持たせながら導入することの難しさが指摘されており、現在はGrinやBEAMなどの別のプロジェクトとして開発されています。

2016年のポッドキャストでは、以下のような指摘がなされています。

後方互換性を持たせながらMimblewimbleをビットコインに導入するのは不可能ではないが難しい。実験的な別個のチェーンとして実現するか、サイドチェーンとして利用される可能性が高いでしょう。

サイドチェーンでは新たなコインを作り出す必要はないので、新しいコインの発行を伴うMimblewimbleの実現はオリジナルチェーンにおいて行われるでしょう。

またMimblewimbleにも欠点はあります。MimblewimbleにはScriptがありません。Scriptにはプライバシーの課題もありますが、非常に良い機能も提供します。Mimblewimbleは非常に優れたプライバシーを提供しますが、それはScriptがもたらす機能の犠牲の上で成り立ちます。

ビットコインのライトニングネットワークやアトミックスワップを可能にしている表現豊かなScripting languageはMimblewimbleにはありません。以下では、Mimblewimbleを実装している2つのプロジェクトについて見てみましょう。

まずはMimblewimbleの代名詞となったといってもよいGrinです。GrinはPoelstraのポジションペーパーが発表されてからわずか数日後に発表されたプロジェクトです。Ignotus Peverell(※こちらも仮名)はGithubにGrinプロジェクトを立ち上げ、Mimblewimbleの一部実装をRustで記述しました。

2017年3月には「テクニカルイントロダクション」が投稿され、今日でも貴重なレファレンスとして機能しています。Grinの特徴としては、今日に至るまで主に匿名の開発者たちによって開発が続けられている点が挙げられるでしょう。ICOやプレセールがなく、マイニング報酬に開発者報酬が含まれないプロジェクトとしては、珍しい構造になっています。

BEAMの誕生

2つ目の実装はBEAMです。2018年3月に始まったプロジェクトでオリジナルMimblewimbleペーパーのリリースから丁度一年後に発表されました。BEAMはGrinとは別のペーパー[PDF]で、既に機能するマイニングノードやウォレットクライアントと共に説明されており、Zcash型の構造(企業型・開発者報酬型)を採用しています。BEAMチームをリードするのは、イスラエルの起業家であるAlexander Zaidelsonです。

企業的に管理された開発、プリセール(※10万USD以上でプレセールに参加でき、開発者報酬の一部を受け取れる)、ファウンデーションの存在、開発者報酬などの点で、BEAMはGrinとは全く異なるアプローチを取っています。またBEAMは技術的な側面においてもGrinとは異なるアプローチを採用しており、具体的にはマネタリーポリシーやハッシングアルゴリズムなどです。

BEAMは19年1月にローンチされ、多くのハッシュパワーが注がれました(1月14日時点で1,986,117.6 Sol/s)。

ビットコインのUTXOモデルと暗号学の基礎を理解する

Warining

以下の説明はビットコインは暗号学の包括的な説明ではなく、それ以後の内容を理解するための補助的な説明です。

草創期からプライバシーやファンジビリティはビットコインユーザーにとって重要なトピックでした。一方で、ネットワークやブロックチェーン情報の分析によって、ビットコインから匿名性を奪うような試みも実行されてきました。またMoneroやZcashのようなプライバシーを最優先するような暗号通貨プロジェクトが出現する一方で、ビットコイン自身もプライバシーとファンジビリティの両面でプロトコルレイヤーやトランザクションレイヤーにおいて大きな改善を行ってきました。

GrinとBEAMは、Ethereumなどの他のアカウントベースの暗号通貨とは対照的に、Bitcoinが使用しているのと同じ未使用トランザクション出力(UTXO)モデルを使用しています。

Image A visualization of Bitcoin’s UTXO model from Bitcoin.org’s documentation.

90k Satoshiが新しいトランザクションTX1とTX2を介して送信されると、2つの出力(それぞれ40k Satoshiと50k Satoshi)が作成され、送信者によって指定された送金額が指定されたアドレスに送られます。

ビットコイン同様に、GrinやBEAMは暗号学的ハッシュ関数を用いてこれを実現します。ハッシュ関数は「入力→暗号学的ハッシュ関数(CHF)→出力」という流れで、任意の入力に対して固定長の出力を作り出します。以下で詳しく見てみましょう。

暗号学的ハッシュ関数において最も重要なのは、これが攻撃するには難しく、防御/検証するには容易であるという非対称性です。つまり入力された文字列をハッシュ関数を用いて固定長の出力に変換するのは簡単ですが、固定長の出力から元の入力を推測するのは困難であるということです。パスワードから公開鍵/秘密鍵までの世界のインターネットセキュリティの大部分にこのハッシュの仕組みが利用されており、入力→出力は簡単だが、出力→入力の逆算難しいであろうという仮定は強力な量子コンピュータができるまでは成り立ちます。

Image
暗号学的ハッシュ関数 - Wikipedia

Tip

入力が一文字でも変わると出力が全く別のものになっていることが分かります。

ビットコインのUTXOモデルでは、インプット、アウトプット、送金額の3つの情報は公開されており、誰もが検証可能です。UTXOモデルでは、未使用のトランザクションを足し合わせることでシステム内の供給量を把握することが可能です。

コミュニティ内では取引毎に新しいアドレスを用意したり、ミキサーを利用してフレッシュなUTXOを入手することが推奨され、またCoinJoinやConfidential Transactionなどのより良いプライバシーを実現する技術が開発されていますが、現時点ではビットコインの情報は公開され、誰もが入手できるものになっています。

Mimblewimbleがプライバシーを向上させる仕組み

MimbleWimbleは、Confidential TransactionsとCoinJoinに基づいて、トランザクションに匿名性を持たせるために、UTXOモデルにいくつかの変更を加えます。公式ドキュメントより。

  1. アドレスが存在しない
  2. 送金額が開示されない
  3. 中間トランザクションが削除され、一つの大きなトランザクションにまとめられる

最初の2つについてはConfidential Transactionsによって達成されます。CTはUTXOモデルを改善するために用いられるPedersen Commitmentを使用します。秘匿化されたトランザクションにおいては、トランザクションに関与した人間だけが送金額を確認することができます。このようなシステムは理論的には、素晴らしく思えますが、1つの重要な懸念があります。というのは、トランザクションが偽造されている場合、システムに参加していないユーザーを関与させる必要があります。詳しく見てみましょう。

まず暗号学における「コミットメント」という用語についてですが、以下の例をご覧下さい。

コミットメント方式を用いる場合、以下のようにコイン投げを行う。

(1) Bobはコインの"表"か"裏"を選び、その値をコミットする。コミットメントをAliceに伝える。
(2) Aliceはコインを投げ、結果をBobに伝える。
(3) Bobはコミットした値をAliceに伝える。
(4) Bobの値とAliceの値が一致している場合Bobの勝ちとする。そうでない場合、Aliceの勝ちとする。 さてAliceがずるをして勝とうとした場合、(2)の段階でBobのコミットメントの中身を知る必要がある。同様にBobがずるをして勝とうとした場合、(3)の段階でコミットメントの中身を書き換える必要がある。これらの行為はコミットメントが良いものであれば防げる。

ビットコミットメント - Wikipedia

ビットコインではシンプルな暗号学的ハッシュ関数がトランザクションコミットメントを作成するために使用されており、そのためにはインプット、アウトプット、送金額の3つが必要です。Pedersen commitmentはこの部分を改良しており、インプット合計とアウトプット合計が同じ値であることを保証します。Pedersen Commitmentを用いたConfidential Transactionの暗号学的な証明についてはここでは詳述しませんが、このシステムを使うことで、送金額を秘匿化したままで、無効なトランザクションが発生していないかを外部の人間でも検証できるようになります。

秘匿化トランザクションでは送金額の内容が開示されていないので、秘密裏に-100BTCと100BTCという2つのインプットを作って、-100BTCの方を破棄すれば、100BTCを不正に入手することができそうです。Confidential Transactionではrange proofという手法を使ってこれを回避します。これはインプットが一定の範囲内であることを保証することによって、コインの総供給量が不正に操作されていないことを確実にするものです。

MimbleWimbleの実装はすべて、アドレスや送金額が開示されないConfidential Transactionが用いられます。

先程の3番目の目標である「中間トランザクション(情報)の削除」は、同じくGregory Maxwellによって作成されたCoinJoinに似た仕組みによって行われます。また、これについてはトランザクショングラフの作成の懸念があるので、それについても以下で説明します。

トランザクションにおいて開示されてしまう情報を秘匿するのは極めて重要であり、これはConfidential Transactionによって達成されますが、トランザクションの履歴そのものはトランザクションの匿名性を奪うのに十分な量の情報を含んでいる場合があります。これはトランザクショングラフというものを作成することによって実行されます。以下のグラフをご覧下さい。

Image
ビットコイントランザクションの視覚化

トランザクショングラフの作成による匿名性の剥奪は前例のないことではなく、EllipticChainalysisのようなスタートアップは詐欺や違法活動に使われるトランザクションの検知を行うために、上記のような方法でチェーン情報の分析を行っています。またこれらの企業は暗号通貨取引所から政府系企業まで様々な顧客を抱えています。ビットコインのネットワークグラフは追跡が容易なため、必然的に秘匿化トランザクションには適していません。

プライバシーの完全な保護の道徳的なメリットについては、こちらで深くは触れませんが、プライバシーや匿名性というのは、ドラッグの売買やマネーロンダリングだけのためのものではありません。簡単に追跡されてしまうネットワークにおいては、特定の人物や組織によるネットワークへの干渉を容易にしてしまう大きなデメリットがあります。この点においてプライバシーを保護するのは、すべてのサイバーマネーによってのゴールとなります。

CoinJoinでは、複数のユーザーからのインプットがanonymity setと呼ばれるものにまとめられ、それをごちゃまぜにすることでトランザクショングラフによる追跡を難しくします。下の画像は、アリスの10BTCとボブの20BTCを入力がCoinJoinトランザクションで結合されていることを表しています。

Image CoinJoin diagram courtesy of Artncase

ビットコインではWasabi WalletのようなウォレットやTumbleBitのようなタンブラーは、CoinJoinを実装してBitcoinのトランザクションレイヤーのプライバシーを提供しています。しかし、これらのサービスも完璧ではありません。これらの仕組みを用いて、プライバシーをどれくらい確保できるかは、この仕組みに参加する人数に依存しており、送金額のマッチングも必要なため、プライバシーへの寄与は一定以下に留まります。小さなanonymity setのトランザクションは匿名性が奪われてしまうということを発表している論文もあります。

MimbleWimbleの実装は、サードパーティのウォレットやサービスによって実装されるトランザクションレイヤーでのプライバシー改善ではなく、CoinJoinをプロトコルの中核部分にすることでプライバシー問題を解決します。MimbleWimbleでは、すべてのブロック内のすべてのトランザクションが自動的に単一のトランザクションにまとめられ、ほとんどの中間トランザクション情報は省略されます。

インプット、アウトプット、送金額が秘匿化されており、トランザクショングラフも難読化されているとすれば、トランザクション情報の匿名性が奪われることはないということでしょうか。潜在的な問題点としては、発信元IPアドレスを利用することで個々のノードがトランザクションの匿名性を奪えるということです。

ビットコインのトランザクションがウォレットで作成されると、そのトランザクションはネットワーク上のノードにブロードキャストされ、ピアノードに素早くブロードキャストされます。

トランザクションがブロックにまとめられる前は、個々のトランザクションは分割されてブロードキャストされるため、トランザクションの匿名性を奪いたい人間はトランザクションとトランザクションのIPアドレスを記録することで、それらの情報を利用して特定の人物のアクティビティを解析できる可能性があります。

この問題に対するMimbleWimbleの解決策は、もともとイリノイ大学アーバナ・シャンペーン校の研究者チームによってビットコインのために構想されたDandelionという仕組みに基づいています。

Dandelion(=タンポポ)の目的は、ビットコイントランザクションのIPアドレスを難読化することです。ビットコインのトランザクションは以下の2つのフェーズでネットワークにブロードキャストされます。

  1. stemフェーズ(トランザクションが難読化される)
  2. fluffフェーズ(トランザクションがブロードキャストされる)

「stemフェーズ」ではトランザクションはただ一つのノードにのみブロードキャストされ、その後、トランザクションが元のピアから十分に「ジャンプ」するまでは、唯一つのノードのみ伝播されていきます。その後、トランザクションはゴシップネットワークの残りの部分にブロードキャストされます。

Tip

stemフェーズからfluffフェーズに移行する確率、stemフェーズにおけるトランザクションの送信先、stemフェーズの維持上限時間などはパラメーターで指定されます。

grin/dandelion_monitor.rs at e8a481e3d4af9705c4cbd40c177111ac7c94415d · mimblewimble/grin

Dandelionの仕組みを視覚化したものが以下の画像です。(1)で匿名性が担保され、(2)でブロードキャストされていることが分かります。

Image
Image courtesy of Giulia Fanti’s presentation “Presenting Dandelion” in Lisbon.

MimbleWimbleの実装では、Confidential Transaction、CoinJoin、およびDandelionを組み合わせることで、アドレスなどの伝統的なアイデアを廃止することができます。トランザクションの作成を行った人によるコミットメントは、ビットコインにおいてトランザクションを実行するために使用される公開と秘密鍵の目的を果たします。

Tip

同様にUTXOモデルを使っているビットコインとMimblewimbleを使うGrinの大きな違いの一つはここです。これにより、Mimblewimbleは、完全な匿名性を提供することで、Bitcoinよりも大幅にプライバシーを向上させることができます。

Warning

ただし、Mimblewimbleの匿名性の強度は現時点では不明です。今後、MoneroやZcashに対して行われたような調査が行われ、Mimblewimbleの真価が評価されていくでしょう。

BEAMとGrinの違い

GrinとBEAMは共にMimblewimbleプロトコルを実装していますが、多くの違いがあります。

Note

簡潔な比較表は以下のページで提供しています。

Grin/BEAMの比較 - Mimblewimble.jp

  • GrinはRust、BEAMはC++で記述されます。
  • どちらのチームもASIC耐性に気を使っていますが、アルゴリズムの選択と初期のアプローチに違いがあります(※後述)。
  • Grinチームはオープンソース型とファウンデーション型のトレードオフ研究の末にオープンソース型を選択しました。トレードオフの詳細な分析を書いたGrin OSチームは、正式な基盤の代わりにオープンソースのガバナンスに固執することを選びました。* トレードオフの一つは資金調達です。Grinはオープンソースなので、開発者の無償奉仕、もしくは寄付に依存することになります。* 一方でBEAMチームはZcashと同じように最初の5年間はブロック報酬の20%を開発者報酬として受け取る方式(最終的に全排出量の12%が開発チームに手に渡る)を選び、さらに企業としての資金調達も行っています(投資家にはBEAMが分配されます)。
  • Grinのマネタリーポリシーは新規Grinが時間と共に発行され続けるモデルです(総発行量は逓増、新規発行量は一定なので、その割合はゼロに近づいていきます)。このような政策は、イデオロギー的な違いに由来します。つまりビットコインのような発行量一定で、Store of Valueになるべく開発されているコインとは根本の思想が異なるということです。特にGrinチームは、ユーザーがGrinをただ単にホールドし続けるような事態を避けようとしています。対照的に、BEAMは一定の排出量(〜263mコイン)を設定しており、ビットコインやZcashに近いアプローチを取っています。 Grinはエラーが発生した場合に備えて、いくつかの軽減策を備えた部分同期モードを提供しています。これにより、完全なノード同期には必要となるデータのうちの一部のデータを使うことでノードをネットワークに同期させることができます。これは全てのデータを必要とするBEAMとは異なるアプローチです。
  • Beamは従来型のな秘匿トランザクション(Bulletproofsで署名されたもの)を提供しています。さらに、BEAMはBEAMウォレットに監査を可能とするような機能を付属させています(=auditable wallet)。オプトイン(=機能を有効にするにはユーザー側の選択が必要)の監査可能性(=auditability) により、企業やユーザーは、サードパーティーがトランザクションに含まれる資金やメタデータを検証できるようにする一意の公開鍵と秘密鍵のペアを生成できます。Grinチームは、シンプルな設計を志向しているため、コア機能を超える拡張をしないことを決定しています。

マイニング事情

BEAMは、修正版Equihash PoWを選択しました。これはネットワークにASIC耐性を持たせるためです。

Grinは、2015年にJohn Trompによって開発された代替のPoWシステムであるCuckoo Cycleからスタートします。このアルゴリズムはASIC耐性に主軸を置いていますが、Grinの開発チームは「ASICは不可避である」と考えています。これに対しては2018年9月に別のアプローチが提案されました。これは2つのアルゴリズムを使用するというもので、1つはASICフレンドリーなCuckatoo31+を使い、もう1つはGPU向けに最適化されたCuckaroo29を使うというものです。

GrinとBEAMの初期のマイナーはGeForce GTX 1080 Tiという他の多くのブロックチェーンをマイニングするためにも使用される汎用ハードウェアを使っています。

マイニングプールに関するデータをみれば、2つのプールが多くのシェアを占めていることが分かります。1つはSparkpoolでハッシュレートの69%を占めており(※これは1月8日のデータ、1月16日では49%)、もう一つはBeePoolでハッシュレートの30%を占めています(※これは1月8日のデータ、1月16日では25%)。solutions/secの具体的な数値は、使用するマイニングハードウェアや機器の最適化によって異なりますが、OpenCLマイナーのクロッキングが~10sols / secであり、CUDAベースのマイナーのクロッキングが15-20 sols /secであることを踏まえると、おそらく10万台以上のGPUがネットワークに投入されている計算になります。

Grinのマイニング市場には十数のマイニング企業が参入しているため、個人マイナーには自身が参加するプールの選択肢が与えられています。BlockCypherによって運営されているGrinmintMWGrinPoolの2つはコミュニティによって提示されているプールです。

AMDチップセットなどの他のGPUを使ったマイニングは使いづらく、プール用のソフトウェアは堅牢性や信用性に課題があり、マルチシグウォレット用のインフラはまだ存在せず、マイニングの最適化も広くは行われていない等、マイニングには様々な課題のが現状です。このような状況なので、有用な情報を手に入れられるマイナーはレバレッジを効かせてマイニングが可能となり、マイニング領域には情報の非対称性が生まれます。713のgrinboxのようにこのインフラを構築しようとしている企業もあります。

結論

ソーシャルクレジットシステムやAI技術の世界においては、我々が誰と取引しているかを把握し、未来に何が起こるかさえも予測できるようになる可能性があります。そうすると将来の貨幣システムを設計する際に、プライバシーが重要なのは明らかでしょう。

ミキシングのようなプライバシーを保護する手段を使うことさえも、法執行機関に対しては、悪い印象を与えるようになるかもしれません。完全にプライベートな貨幣はこのような事態においてユーザーを保護することが可能です。仮に何も隠すことなどないとしても、この視点は重要なのです。

GrinとBEAMは2つの異なるアプローチを採用しています。表面的には類似していますが、MimbleWimbleベースであることを除けば、事実上あらゆるレベルにおいて異なります。「勝者」が現れるには数ヶ月を要するでしょう。どちらの通貨が「勝つ」かは定かではありませんが、この2つのローンチによって、暗号通貨支持者が常に非常に重要だとみなす多くのことを試行できます。

Grinが採用したような純潔なローンチは、より良い運用資金(それに伴う持続可能性)を持ったプロジェクトと競うことができるのか。 UX(BEAMがリード)は他の要因、たとえばブランド(Grinが有利)に比べて初期の段階でどれくらい重要か。 (Zcash、Monero、Bitcoin独自のプライバシー改善を含む)競合の多い分野で、たとえ新しい技術を伴っていたとしても、新興のプライバシー志向の暗号通貨が人気になることは可能なのか。 2019年はプライバシー関連プロジェクトにとってエキサイティングな年になりそうです。


※Arjun BalajiはThe Blockのアナリスト、エンジニア、テクニカルアドバイザーで、Shomei Capitalの設立者ですが、記事の執筆時点で、BEAMやGrinにはポジションを持っていません(マイニングを行っていません)。

コメント