プライバシーコインとは?プライベートな暗号資産の仕組み

· 10 分で読めます

このガイドでは、プライバシーコインとは何か、通常のブロックチェーンが支払いについて何を明らかにしてしまうのか、そしてプライバシーコインが送信者、受信者、金額を隠すために使う暗号技術を説明します。最後に Blocknet を具体例として取り上げ、マイニングで最初のプライベートなコインを手に入れる方法を紹介します。

プライバシーコインとは何ですか?

簡単な答え

プライバシーコインとは、支払いによって送信者、受信者、金額が公開されないように作られた暗号資産です。リング署名、ワンタイムのステルスアドレス、金額の秘匿などの暗号技術を使うので、すべてのノードは引き続き各支払いを検証できる一方で、ブロックチェーンを読む人にはその支払いについてほとんど何もわかりません。

どの暗号資産も、多くの独立したコンピューターが複製して確認する共有の台帳、つまりブロックチェーンを持っています。この公開性があるからこそ、見知らぬ者同士でも銀行を介さずに、誰が何を所有しているかについて合意できます。プライバシーコインが答える問いは、その台帳が各支払いをどこまで見せる必要があるのか、ということです。

Bitcoin はそのほとんどを見せます。ホワイトペーパーは、そのプライバシーモデルを 1 行で説明しています。「誰かが誰かにある金額を送っていることは誰にでも見えるが、そのトランザクションを特定の人物に結び付ける情報はない」。名前はありませんが、アドレスと金額は公開されています。プライバシーコインはさらに進んで、支払いがルールに従っていることを証明しつつ、各支払いの詳細を公開の記録に載せません。

公開ブロックチェーンはあなたについて何を明らかにしますか?

Bitcoin のような透明なチェーンでは、あなたのアドレスを 1 つ知っている人なら誰でも、ブロックエクスプローラーでそれを調べて次の情報を見られます。

名前は書かれていませんが、アドレスが誰とも結び付かないままでいることはめったにありません。お店への支払い、取引所からの引き出し、寄付用のアドレスの公開などでアドレスはあなたと結び付き、それ以降は履歴全体が読めるようになります。名前の代わりに口座番号を載せた銀行の明細書を、公共の掲示板に張り出すようなものです。あなたが支払った相手には保有額が見え、あなたに支払った相手にはそのお金の使い道が見えます。

プライバシーコインは、掲示板には有効な支払いが行われたことだけが表示されるように設計されています。

プライバシーコインはどのように送信者、受信者、金額を隠しますか?

簡単な答え

多くのプライバシーコインは 3 つの技術を組み合わせています。リング署名は本物のコインをデコイに混ぜて送信者を隠し、ワンタイムのステルスアドレスは支払いごとに新しいアドレスを使って受信者を隠し、コミットメントと範囲証明は金額が有効であることを証明しつつ金額を隠します。多くはネットワーク層も保護し、トランザクションの発信元を隠します。

それぞれの技術が、支払いの一部分をカバーしています。仕組みをわかりやすく説明します。

リング署名は誰が支払ったかを隠す

リング署名を使うと、どのメンバーが署名したかを明かさずに、グループを代表して署名できます。Ron Rivest、Adi Shamir、Yael Tauman が 2001 年にこの考え方を発表し、2013 年の CryptoNote の設計が暗号資産に取り入れました。支払うとき、ウォレットはチェーンからほかのアウトプットをデコイとして選び、グループ全体に対して署名します。そのうち 1 つが使われたことは誰でも確認できますが、署名はそれがどれかを示しません。

プライバシーコインはリンク可能なリング署名を使い、キーイメージを加えます。キーイメージは使われる本物のコインに固有の目印で、リングのどのメンバーかについては何も明かしません。同じキーイメージが 2 回現れると、ネットワークは 2 回目の使用を拒否するので、プライベートなコインでも二重に使うことはできません。Monero と Blocknet は CLSAG と呼ばれるコンパクトな方式を使っています。

ステルスアドレスは誰が受け取ったかを隠す

ステルスアドレスの仕組みでは、共有したアドレスがチェーン上に現れることはありません。アドレスにはビューキーとスペンドキーという 2 つの公開鍵が入っています。支払いのたびに、送信者のウォレットはそれらの鍵を新しいランダムな値と混ぜ、一度だけ使われて二度と使われないアドレスを導出します。受信者側では、秘密ビューキーによってウォレットがチェーンをスキャンして自分宛てのアウトプットを見つけ、秘密スペンドキーでそれを使えます。

Web サイトに載せたアドレスに 10 人が支払っても、チェーン上には目に見えるつながりのない 10 個の別々のワンタイムアドレスが表示されるだけなので、あなたが受け取った合計額は誰にもわかりません。

コミットメントと範囲証明は金額を隠す

金額はペダーセンコミットメントとして保存されます。これは数値を見せずに固定するものです。コミットメントは足し合わせられるので、すべてのノードは、数字を一切見ずに、トランザクションに入る額と出る額が手数料も含めて一致していることを確認できます。さらに範囲証明が、隠された金額がどれもマイナスでないことを示すので、誰もコインを無から作り出せません。2018 年に Bünz らが発表した Bulletproofs によって、この証明はずっと小さくなりました。

ネットワークのプライバシーは支払いの発信元を隠す

完全にプライベートなトランザクションでも、どのノードが最初にそれを通知したかを観察すれば、送信したコンピューターまでたどられる可能性があります。2018 年に発表された Dandelion++ は、新しいトランザクションをまず「ステム(茎)」に沿ってピアからピアへ静かに渡し、その先のランダムな地点からネットワーク全体に広げることで、これに対抗します。

別の方法をとるプライバシーコインもあります。2016 年に始まった Zcash は、zk-SNARK と呼ばれるゼロ知識証明を使います。シールドアドレスは送信者、受信者、金額を隠し、証明はそのどれも明かさずにトランザクションが有効であることを示します。

デフォルトでプライバシーを守ることが重要なのはなぜですか?

プライバシーが自分でオンにする機能だと、それを使うトランザクションは小さなグループになり、小さなグループは分析されやすくなります。すべてのトランザクションが同じ方法で作られていれば、プライベートな支払いはチェーン上のほかのすべての支払いと同じに見え、保護を忘れないよう気を付ける必要もありません。

デフォルトでプライバシーを守ることで、すべてのコインが交換可能なまま保たれます。これはファンジビリティと呼ばれる性質です。透明なチェーンでは、コインはすべての履歴を背負っており、同じ価値の 2 枚のコインが、それまでの経緯によって違う扱いを受けることがあります。どのコインにも見える過去がなければ、1 枚のコインはほかのどのコインとも同じ価値を持ちます。これこそ人々がお金に期待する性質です。

日常的な理由はシンプルです。企業は、取引先への支払いを競合他社に読まれたくありません。従業員は、コーヒーを買う店の相手にまで自分の給与を知られたくありません。何かの活動に寄付する人は、それを自分の胸にしまっておきたいかもしれません。現金や普通の銀行口座はすでにこうしたプライバシーを提供しており、プライバシーコインはそれをデジタルの支払いにもたらします。

プライバシーコインの例としての Blocknet

Blocknet は、すべての支払いにリング署名、ステルスアドレス、金額の秘匿、ネットワークのプライバシーを適用するプライバシーコインです。トランザクション形式に公開モードはありません。

Blocknet では、名前で相手に支払うこともできます。@alice のような Blocknet ID のショートネームが 90 文字以上のアドレスの代わりになり、名前宛ての支払いも新しいステルスアドレスに届くので、公開された名前から持ち主の収入は何もわかりません。各層の詳細は Blocknet が支払いをプライベートに保つ仕組みを、全体像は Blocknet とは?をお読みください。

Blocknet が予定している Faraday アップグレードでは、各支払いが紛れるグループが広がります。blocknetcrypto.com の言葉では、「現在、支払いは 16 個のアウトプットの中に紛れています。Faraday の後は、チェーン上のすべてのアウトプットの中に紛れます」。

プライバシーコインを手に入れるには?

マイニングで手に入れられます。Blocknet のプルーフ・オブ・ワークである Argon2id はハッシュ 1 回ごとに約 2 GB のメモリを必要とするので、デスクトップ、ノートパソコン、サーバーに搭載された普通の CPU と RAM がマイニングを担います。プールからの支払いは、ほかの Blocknet の支払いと同じように、金額が隠されたワンタイムのステルスアドレスで届きます。

  1. ウォレットを用意する。 マイニング用の Blocknet ウォレットガイドで、ウォレットの作成、シードのバックアップ、アドレスのコピーの方法を紹介しています。
  2. seine をダウンロードする。 Windows、macOS、Linux 向けの無料でオープンソースの Blocknet マイナーで、ダウンロードセクションから入手できます。CPU と、Windows と Linux では NVIDIA のグラフィックスカードも同時に使ってマイニングし、実行中に自動でチューニングします。
  3. bntpool.com でマイニングを始める。 アドレスまたは @name を貼り付けてデフォルトのプールを選べば、支払いはプライベートにウォレットに届きます。各ステップは Blocknet のマイニング方法で説明しています。

よくある質問

プライバシーコインと Bitcoin の違いは何ですか?

Bitcoin はすべてのアドレスと金額をそのまま記録するので、誰でもアドレスからアドレスへとコインを追跡し、各残高を読めます。プライバシーコインはリング署名、ワンタイムアドレス、金額の秘匿などの暗号技術を使うので、チェーンはすべての支払いが有効であることを証明しつつ、誰が誰にいくら支払ったかを外部にはほとんど見せません。

すべてのプライバシーコインでプライバシーは必須ですか?

いいえ、設計はさまざまです。Monero や Blocknet のように、すべてのトランザクションにプライバシーを適用するコインもあり、その場合は公開モードがまったくありません。Zcash は、ゼロ知識証明で送信者、受信者、金額を隠すシールドアドレスと、Bitcoin のアドレスとほぼ同じように機能する透明アドレスの両方を提供しています。ユーザーはその間で資金を移動できます。

見えない支払いをネットワークはどのように確認するのですか?

暗号技術によって、ノードは支払いの詳細を読まずに検証できます。リング署名は複数のアウトプットのうち 1 つが使われたことを証明し、キーイメージは同じコインの 2 回目の使用を防ぎ、金額のコミットメントは足し合わせられるので、ノードはインプットがアウトプットと手数料の合計に等しいことを確認できます。範囲証明は、隠された金額がどれもマイナスでないことを示します。

普通のコンピューターでプライバシーコインをマイニングできますか?

はい、そのコインがメモリハードなプルーフ・オブ・ワークを使っていればできます。Blocknet が使う Argon2id はハッシュ 1 回ごとに約 2 GB のメモリを必要とするので、普通のデスクトップ、ノートパソコン、サーバーがマイニングを担います。seine をダウンロードして Blocknet アドレスまたは @name を渡せば、CPU と NVIDIA のグラフィックスカードを使って bntpool.com プールでマイニングします。