機密トランザクション (Confidential Transactions) についての紹介
ホーム
記事
機密トランザクション (Confidential Transactions) についての紹介

機密トランザクション (Confidential Transactions) についての紹介

上級者
公開済 Feb 10, 2020更新済 Dec 28, 2022
6m

はじめに

ブロックチェーンが機能する上で、システムが透明であることが重要であると考えられていることが多いです。つまり、ネットワーク上のすべてのノードがコピーを保存し、ルール違反がないことを検証することができるのです。多くの分散型台帳では、誰でもオンラインのブロック・エクスプローラーをロードして、ブロック、トランザクション、アドレスを検索することができます。

プライバシーの面では、これは理想的ではありません。Bitcoinのようなシステムでは、すべてのトランザクションは過去のトランザクションにリンクすることができます。コインには技術的な互換性がないため、それぞれが特定のトランザクションに結び付けられます。Bitcoinの送付を妨げることはできませんが、そのコインが以前にブラックリストに掲載されたアドレスを通過していた場合、そのトランザクションの受け入れを拒否することは可能です。

最悪の場合、換金性の欠如はシステムの根幹に重大な影響を及ぼす可能性があります。 クリーンなコインはプレミアムを獲得する可能性がありますが、そうではないコインはその歴史を考えると価値が下がるかもしれません。

Bitcoinにおけるプライバシーは、しばしば誇張されがちです。コインだけでなく、ユーザーも追跡することができます。また、匿名性 (名前の代わりにパブリックアドレスが表示されます) を享受しているが、これには欠点があります。高度な分析技術により、精度を高めながら、アドレスをクラスタリングし、ネットワーク・エンティティを非匿名化することができます。

トランザクションを真にプライベートなものにするために提案されたアップグレードのひとつが、機密トランザクションです。


機密トランザクションとは?

機密トランザクション (CT) は、2013年にBlockstreamのCEO Adam Back氏がによって最初に議論され、その後、Bitcoin開発者のGregory Maxwell氏が拡張したものです。Maxwell氏は、第1章で述べた問題点 (ファンジビリティと弱い偽名性) を概説し – その解決策を提案しました。振替額はネットワークから遮断され、取引当事者だけが振替額を知ることができます。



通常の場合 (トランザクションが公開されている場合) 、ノードが受信額が送信額を超えていないことを確認するのは簡単です。Alice氏が0.3 BTCをBob氏に送りたい場合、未使用のアウトプット (1 BTCとする) を取り、2つに分割します。例えば、0.3はBobに送られ、0.69はAliceに送り返されます (残りはマイニング手数料として没収されます)。
これは他のノードでは単純な代数です。1は0.3 + 0.69よりも大きいため、署名はすべて正しく、Aliceのインプットはすでに他の場所で使用されていないため、このトランザクションは有効となるはずです。しかし、金額が分かりにくい場合、そう簡単にはいかなくなります。ある未知の金額が他の2つの未知の金額の和と等しいか、あるいは超えているか、どのように評価をするのでしょうか?


関連する暗号化の概要

データを隠すためには、暗号化が必要です。しかし、従来の方法は、書類を金庫に入れるのと同じで、一度データを中に閉じ込めると、取り出すまで使えなくなります。機密トランザクションを機能させるために必要なのは、中身は明かさず、その性質を外部の人間が検証できるデジタル金庫です。

その答えは、特にPedersenコミットメントと呼ばれるスキームの準同型暗号化にあります。この種の暗号化により、部外者は様々な目的で暗号化されたデータ (見ることはできない) に対して操作を行うことができます。 

通常のハッシュは、後で明らかにしたいデータにコミットするために使用することができます。例えば、お気に入りの取引所を当てた人には0.01 BTCの賞金が当たるというコンペティションをSNSで告知したいとします。参加者は、コンペティション終了後に回答を見て、話題になっていないような取引所が選択されていることを知り、疑心暗鬼になる可能性があります。

あなたができることは、フォロワーにハッシュを提供することです。一見ランダムに見える数字や文字の列は、特定のインプットに対応します。特定のアウトプットを取得するために、取引所の名前を関数に渡します (SHA256アルゴリズムを使用したとします)。


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


これを見ても、インプットの内容はさっぱりわかりません。また、反対方向の関数にデータを渡してもインプットを取得することはできません。しかし、インプットが「バイナンス」であることが分かっていれば、そのハッシュが上記のものと一致するかどうかを簡単に確認することができます。こうすることで、フォロワーはあなたがコンペティション終了後に回答を変更していないということを、ある程度保証することができます – 回答を変更した場合、まったく異なるアウトプットになってしまうからです。

ただし、現実的には、これはあまり安全ではありません。フォロワーはアルゴリズムをリバース・エンジニアリングすることはできませんが、可能限り取引所リストを作成し、一致するまですべてのデータをハッシュ化することができます。ハッシュ化するデータに、ブラインド・ファクターと呼ばれるランダムなデータを加えることで、その可能性を低くすることができるのです。 

もし「バイナンスは私のお気に入りの取引所です、他のどの取引所よりも大好きです 2#43Wr」と入力すれば、相手が推測するのはかなり難しくなります (報酬が0.01 BTCの場合、誰もそれを試みることはないでしょう)。

Pedersenコミットメントを使用すると、コミットメントにインプットを追加することができます。Maxwell氏の説明:



C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

ここでは、BF盲検化係数Dは データです


ここから先は楕円曲線暗号や範囲証明が絡んできますが、基本的な考え方は、ユーザーが自分のアドレスに対してPedersenコミットメントを持つというものです。送金時には、2つのコミットメントが追加で作成されます (1つはユーザーに返却する変更アドレス用、もう1つは宛先アドレス用)。  

送信金額は誰にもわかりませんが、変更先と送信先の約束事 (マクスウェル方程式の左辺) が、送信元のアドレス (方程式の右辺) に加算されることは確認できます。これが正しく評価されれば、インプットとアウトプットが等しいことが証明され、ユーザーのトランザクションは有効となります。


機密トランザクションでは何ができるのか?

もし、Bitcoinに機密トランザクションが実装されれば、私たちはよりプライベートなシステムを享受することができます。インプットとアウトプットの両方がネットワークから隠蔽され、台帳の項目も難読化されます - このようにプライバシーが大幅に強化されたBitcoinは、連鎖分析によって特定のユニットの履歴が分からなくなるため、事実上、カジノ化される可能性があります。 

機密トランザクションがプロトコルに統合されるかどうかについては、現時点ではその可能性はないようです。この機能が追加されると、トランザクションは標準的なものよりはるかに大きくなります – ブロックスペースが限られている中で、これは需要を増やすだけです。また、従来は困難とされてきたコードの変更に、参加者の過半数の同意を得る必要があります。


まとめ

機密トランザクションは、他の仮想通貨やBitcoinのサイドチェーンで、いくつかのイテレーションが見られます。例えば、Moneroでは、リング署名と呼ばれる構成と組み合わせて使用し、匿名性と 代替可能性を実現しています。Liquidサイドチェーンは、より高いプライバシーを実現するためにそれらを実装し、MimbleWimbleは同じ目的のためにそれらを拡張しています。

機密トランザクションは、その利点のために、より大きなフットプリントというトレードオフを伴っています。仮想通貨は、ベースレイヤーでのスケーラビリティやスループットに悩むことが多く、トランザクションサイズの大きさはすべての人に申請できるものではありません。とはいえ、プライバシー保護論者は、仮想通貨を真に代替可能なお金として機能させるためには、取引額や参加者を隠すことが不可欠であると考えています。