WS000001

いまMonero?いまだからMonero! CoinEx 取引高上位の Monero XMR) とは。こんにちは、ノリヒロです。常にCoinEx取引高上位にいるMoneroですが、あらためてどのような通貨なのでしょうか。そして現状はどの程度まで開発が進んでいるのでしょうか。

いまMonero?いまだからMonero!CoinEx 取引高上位の 匿名通貨 Moneroとは

目次
①概要

②匿名・安全性を支える仕組み

③現在の開発状況

①概要

名前 Monero
シンボル XMR
最大発行量 18,400,000XMR
流通量 16,476,906XMR(10/10時点)
プロトコル Cryptnote
承認アルゴリズム PoW  CryptoNight V7 (10/10時点)

ブロックサイズが無制限

2014年に元祖匿名通貨ともいわれるByteCoin(BCN)を基に作られた通貨です。プロトコルはCryptonote、承認アルゴリズムPoWで、ハッシュはCryptoNight V7を現在使用しています。
MoneroはCPUメインのマイニングを推奨しており、反ASIC(反マイニング専用機械)姿勢を貫いています。コストの関係で専用ASICはなかなか現れませんでした。ですが2018年3月、Bitmainが専用ASIC(Antiminer X3)を発表します。するとMoneroは4月にハードフォークを行い、ハッシュをCryptoNight⇒CryptoNight V7 に変更して専用ASICに対抗しています。そして現在に至ります。

Moneroは決済系通貨です。そのことを念頭においてMoneroの特徴を見ていきます。
WS000003
①安全
Moneroは分散化された暗号通貨です。ユーザーネットワークに支えられている安全なデジタル通貨と言えます。トランザクションは分散したユーザーのコンセサスによって確認され、普遍的なブロックチェーンに記録されます。


WS000004
②非公開・匿名性
リング署名(Ring Signatures)・内容秘密取引(Ring Confidential transactions, RingCT)・ステルスアドレスによって非公開、匿名性を最大限に強化しています。各仕様に関しては次の章で解説します。


WS000005
③履歴追跡不能
送信&受信アドレス、送信金額はほとんどわかりません。 Moneroブロックチェーンのトランザクションは、特定のユーザーまたは実際のIDとリンクすることはできません。


WS000006
④代替可能
プライベートな取引を行うことで、Moneroは完全に代替可能です、特定の取引(から生じたXMR)をブラックリストに載せることはできません。

安全、匿名性に優れた決済通貨という事になります。

②匿名・安全性を支える仕組み

Moneroの匿名性・安全性を支える仕組みは

・ステルスアドレス(ワンタイムOPK output public key)⇒送金先(相手)を匿名化
・リング署名(Ring Signature)⇒送金元を匿名化
・内容秘密取引(Ring Confidensial Transactions, RingCT)⇒取引金額・トランザクションを匿名化

から成り立っています。

MoneroのプロトコルであるCryptonoteでは秘密鍵が2種類あります。Viewkey(閲覧キー)とspendkey(使用キー)です。それを公開用にしたものが(閲覧アドレス、使用アドレス)というものになります。ざっくり言うと、Viewkeyは匿名取引を閲覧できる鍵、Spendkeyは送金の指示を出す鍵・それぞれの公開アドレスと思っていただければよいかと思います。このことを念頭に話を進めていきます。

◆ステルスアドレス(ワンタイムOPK)
WS000008

送金先(相手)を隠す技術です。
アリスからボブへの送金を想定してみます。
①(アリス側)使用アドレスとランダム指数を使い公開鍵Rを作り出します。
②(アリス側)ランダム指数とボブの閲覧アドレス・使用アドレスを使ってワンタイム公開鍵(OPK)を作ります。
③(ボブ側)アリスの公開鍵R・ボブの閲覧Key・使用アドレスを使って、ワンタイム公開鍵(OPK)の中にアリスの公開鍵Rがあるかどうか確認。
④(ボブ側)あった場合は、ボブのSpendKey(使用キー)を使って開錠します。送金が完了します。

ここで重要なのは、ボブは自分宛ての送金を確認するために閲覧キーと使用アドレスしか使っていないということです。言い換えれば、この2つをほかのユーザーに伝えれば、ほかのユーザーもボブの送金を確認できます。ただ、使用キーは伝えてないため、第三者はボブの資金を移動はできません。
ワンタイム公開鍵はランダム指数によって毎回変化するので、それに基づいて生成されるワンタイム公開鍵から送金先を解読することは不可能なのです。これがステルスアドレスの仕組みです。


リング署名(Ring Signature)
送金元を隠す技術です。
WS000009
ステルスアドレスを使うことで送金先(相手)を隠すことはできました。次は送金元(送金者)を隠すにはどうしたらよいでしょうか。Moneroはリング署名という技術を使います。

リング署名は、グループ内にいる複数のアカウントの公開鍵を1つの束にして利用する技術です。例えば、AliceとBobとCarolの参加グループをグループAとすると、Aに参加するユーザーの公開鍵を束ねて使用します。受け取る側は、確かに入金確認はできるものの、誰からの入金なのか把握する事が困難となります。また、Aグループ内のユーザーAliceは、同時にBグループにも入ることができます。そうすることでさらに特定する事が困難となります。
◆ステルスアドレスの説明ではアリスとボブの1対1のやり取りを例にしましたが、リング署名ではアリスのほかにキャロル、ステーシーなどグループ内のユーザーが同じことを行います。その際に共通して使われ、各公開鍵を結びつける役割を果たすのが「ランダム指数」です。ランダム指数は1署名ごとに変化する指数なので、どんなに署名人数が多くても1回の署名で使われるのはその回限りのランダム指数、それに伴って作られるワンタイム出力公開鍵(OPK)もその回限りの使用となります。
こうしてリング署名とステルスアドレスは親和性を持って入口と出口を匿名にします

内容秘密取引(Ring Confidensial Transactions, RingCT)

入口と出口は匿名となりました。あとはどうやってトランザクション(内容・金額)を隠すのでしょうか
発行当初のMonero(Cryptnote)では、リング署名に入ることができるOPK(を持つユーザー)は、送金したいOPKと金額を同じくしなければなりませんでした。例えば、4.56XMRを送金したいOPKは、全く同じ金額を保有するOPKを探さなければならず、ブロックチェーン上に見つからない可能性があるなど非常に都合が悪かったのです。最悪の場合、リング署名を使っているにも関わらず特定されてしまう可能性すらありました。そこで4.56XMRを4.0XMR+0.50XMR+0.06XMRという単位に分解してそれぞれOPKを作成する形(デノミネーション)を行うことにしました。これであれば検索できる可能性が格段に上がります。
次にトランザクションを秘匿する方法として、2017年9月にRingCT(内容秘密取引)が導入されました。これは前述のリング署名にさらに指数を入れて新しい公開鍵を作る方法です。この方法でトランザクション(内容・金額)も隠すことが可能となりました

ステルスアドレス、リング署名、RingCTが現在のMoneroの特徴となります。そのほかに、オプションとしてPaymentIDやTyKeyを記入することで、敢えて取引履歴を把握できる機能も追加となっています。

③現在の開発状況

WS000010
①KOVRI(コブリ)
KOVRIはエスペラント語で"カバー"という意味です。i2P ( invisible Internet Protocol)(不可視インターネットプロトコル)をベースに、ネットワーク(IP)も匿名化しようとしています。
WS000012
WS000013
AliceからBobへMoneroが送金される過程で、中間攻撃者により送金がブロックされるかもしれません。送信内容自体は匿名化できてますが、ノード間の移動およびノードは秘匿されておらず、中間攻撃者による取引ののぞき見や改ざん、攻撃の可能性があるのです。
そこで考え出されたのがKOVRIです。KOVRIルーターを使用する事で、インターネット上で保護されたオーバーレイネットワーク(モネロネットワーク)を使うことができます。接続経路の特定を困難にするという意味では、Tor ( The Onion Router)と同じですね。
現在はα版が公開されていますが、非常に重たいのが現在の課題のようです。


WS000014
②Open Alias(オープンエイリアス)
FQDNS(Fully Qualified Domain Names) を提供する事で暗号通貨決済を簡単に迅速にします。FQDNSはドメイン表記法の1つで、トップレベルドメインから順番にサブ、ホストまで階層を省略せずに全て指定する表記法です。Monero walletにこのFQDNSを導入することで、アドレス把握が簡単になり、結果として迅速な決済が可能となります。こちらはすでにいくつかのMonero Walletに導入されています。

③Bulletproof(ブレットプルーフ)
分散型P to Pプラットフォーム上で、ユーザーが暗号化トランザクションを受け取ることができる方法を記述するために使用される言語・およびプロトコルです。
RingCT(秘匿トランザクション)を使用するうえで現在はrange proof という仕組みを使っていますが、この仕組みはトランザクションサイズを大きく消費する性質を持っています。このrange proofをBulletproof(ゼロ知識証明を使う)に変更しトランザクションサイズを減らすことで、手数料を最大80%削減できたり、ブロックサイズを拡張できたりと、ユーザビリティの向上が見込まれます。Moneroはこの開発を懸賞金を出して外注もしており、2018年8月にはテストが成功した報道がされていますが、まだ実装はされていません。
参考:what are Bullet Proofs?-blockonomi.com-

最後にロードマップです。
WS000015
現在進行中なのは、BulletProofの導入です。2018年中にKovriの実装も予定されています。匿名性・安全性・利便性にさらに磨きがかかる形になりますね~!

いかがでしたでしょうか。匿名通貨はわかるまでが非常に難解です。詳細に解説している日本語ブログもあまりないので、基本英文参照となります。ですが、理解できるようになるとその辺のホワイトペーパーでは物足りなくなります(笑。お時間がもしありましたら、公式HPなどを参照してみることをお勧めいたします。Google先生大活躍です!次はZcash、Dashあたりを予定しています。

情報は精査していますが、技術的な問題が多いので誤っている個所がある可能性があります。もし発見いただきましたらコメントいただけますと幸いです。


CoinEx、10/1~の全ルールを解説しています!
CoinEx ルール解説 10/1対応最新板 (CETロックマイニング・長期配当・VIPなど網羅)


10/1からの長期配当も注目!新規登録はいかがですか

CoinExはこちらから登録できます