Reserve Protocol: 暗号資産担保とアルゴリズムによるハイブリッド型ステーブルコイン
こんにちは、R&Dチームの中村(@veryNR)です。普段は形式的検証関連の研究開発に取り組んでおり、FVyperという、OpenZeppelinのVyper版の開発とその形式的検証や、プロトコル検証関連技術の研究をしています(最近読んでいる論文リスト)。
今回は息抜きに、ステーブルコインについて書こうと思います。ステーブルコインと言えば最近、$133Mという多額の資金を集め、有名なプロジェクトであったBasisがプロジェクトを停止したニュースが話題になりました。ステーブルコインには様々な実現手法があり、TetherやTrueUSDのような発行額と同じだけの法定通貨を担保にするものや、MakerDAOのようにオンチェーンの資産を担保にするもの、ニュースになったBasisのようにスマートコントラクトによる発行量調節メカニズムを用いるものがあります。
本記事ではまず、Reserve Protocolという、MakerDAOとBasisの手法を組み合わせ、それぞれの課題を解決するステーブルコインを実現しようとするプロジェクトを取り上げます。また、記事の最後にはAppendixとして、それぞれのステーブルコイン方式の課題と、Basis, Carbon, Reserveという三つのステーブルコインの比較も載せていますので、復習がてらそちらを先に読んでもいいかもしれません!
TL;DR
Reserve Protocolは一言で言えば、「ステーブルコインの価格変動ショック吸収用の資金プールと、そのプール維持のためのシェアコイン発行プロトコル」である。
オンチェーンにVaultと呼ばれるプールに暗号資産が担保されており、ステーブルコインであるReserveの価格を調整する際はオークションにてReserveと交換される。Vaultの担保が十分保たれるよう、発行されているReserveに対する時価総額の比率に目標値が設定されている(Vault Target)。担保が目標値を割るとReserve Shareトークンが発行され、その交換で得たアセットがVaultにプールされる。
Reserveの価格調節は担保資産との交換によるので「暗号資産担保型」ではあるものの、Reserveの発行・回収や担保プールの維持はあくまでスマートコントラクトによって自律的に行われるので「アルゴリズム型」でもある。
BasisやCarbonのようなシニョリッジシェアでは、ステーブルコインの価格が下がった時にシェアを売ることになり、長期的な市場収縮が予想されている場合シェアの価値が下がりハイパーインフレに陥る可能性があるが、Reserve Protocolでは直接暗号資産と交換することができる。
登場するアセット
Reserve
- 役割: ステーブルコイン($1で安定させる)
- 実体: トークン(ERC20)
- mint: 自身の価格が$1を超えた時、mintされ、Vault assetとの交換で売りに出される
- burn: 自身の価格が$1を下回った時、Valut assetとの交換で回収されburnされる
Reserve Share
- 役割: Vaultオークション参加権。加えて、Reserve送金の手数料を受け取る権利も将来的に付与される可能性がある。
- 実体: トークン(ERC20)
- mint: Vault時価総額が目標値を下回った時、mintされ、Vault assetとの交換で売りに出される
- burn: Vault時価総額が目標値を著しく超えた時、Vault assetとの交換で回収されburnされる
Vault
- 役割: Reserveの価格変動を吸収するために貯蔵される資金
- 実体: オンチェーンの多種の担保資産。ボラティリティの低い債権、不動産、コモディティなどの現実の資産がトークン化されたもので構成し、カウンターパーティリスクを抑えるため発行者や法的な管轄区域が多様であることが望ましいとされている。
- 増加: Vault時価総額が目標値を下回った時、発行されたReserve Shareと交換されたアセットがプールされる。
- 減少: Vault時価総額が目標値を著しく超えた時、Reserve Shareとの交換で売りに出されるか、Reserve Shareの保有者に配分される。
Reserve価格の固定
価格が$1を超えた場合、Reserveをmintしオークションにかける。参加者はVault assetで支払う。価格が$1を下回った場合、Vault assetをオークションにかけ、Reserveを回収してburnすることで発行量を減らす。
オークションでmint/burnするReserveの量は、「理論的なmint/burn必要量」に0から1の間の定数(r)をかけたもの。理論的な量というのは、オークションの前後でReserveの時価総額が変わらないと仮定して必要なReserve流通量の変化分。具体的には、Reserve価格をあげるオークションでのburn量は次のようになる。
パラメーターrを例えば0.7などに設定することで、段階的に$1に近づけていく。
Vault時価総額の維持とReserve Shareの発行
Vault Ratio, Vault Target
まず、次の量をVault Ratioと呼ぶ。
Vault Ratio = (Vault時価総額) / (($1) ×(Reserve量))
Reserveの価格下落を吸収する十分な量を維持するため、システムにはVault Target Ratioという値が設定されている。Vault Target Ratioは、「価格が$1で安定している時のReserveの時価総額」の何%程度のVaultがあるべきか、という目標値である。また、そのVaultの時価総額をVault Targetと言う。
Vault Target = ($1) × (Vault Target Ratio) × (Reserve量)
システムはVault時価総額がVault Target以上になるように調節する、すなわち、Vault時価総額がVault Targetより少なくなると、システムはReserve Shareをmintし、交換で得たアセットをVaultに入れる。
Vault Target Ratioが高いとReserveの価格下落ショックの吸収力が高まるが、維持するにはReserve Shareを大量に売り出さなければならなくなり、ハイパーインフレの可能性を高める。最初は控えめに、300%と高めからスタートする。
反対に、Vault assetが高騰するなどして、Vault RatioがTargetを著しく超えた場合、Vault assetを売り出しReserve Shareと交換するか、Reserve Share保有者に配分する。基本的にはReserve Shareが希釈されている場合はReserve Shareとの交換になり、回収されたReserve Shareはburnされる。希釈されていない場合は配分となる。この基準の詳細は今後決められる。
Reserve Share保有のインセンティブ
Reserve Shareを買うインセンティブとしては、前述の様に、Vault assetが高騰した場合の配当を得られることに加え、Reserveの移動の手数料がある。最初は手数料は0に設定されているが、ガバナンスプロトコルによって変更されうる。
その他
オークション
Reserve Protocolでは以下のケースでオークションが行われる。
- Reserveの売り出し(Vault assetと交換。Reserveの価格を下げるため。)
- Vault assetの売り出し(Reserveと交換。 Reserveの価格を上げるため。)
- Reserve Shareの売り出し(Vault assetと交換。Vault時価総額をVault Targetまで回復させるため。)
- Vault assetの売り出し(Reserve Shareと交換。Vault時価総額がVault Targetを著しく上回り、Reserve Shareが希釈されていない時。)
いずれもダッチオークション方式を用いる。最低レートの1.5倍で開始し、20分間かけてブロックごとに線形にレートを下げる。0xプロトコルを使う(詳細は割愛)。
オラクル
Reserve, Reserve Share, Vault assetの価格を取ってくるオラクルが必要。
30分ごとに、主要な取引所から、各アセットに関する取引量、ボラティリティ、価格の量・時間的加重平均を取ってくる。直近30分間の平均と、直近4時間の平均の2つ(ある瞬間の値段取ってくるだけだと一瞬市場操作して色々ハックできてしまう)。最初は自前のオラクルが使われるようだが、ChainLinkなどの分散オラクルが好ましいだろうとしている。
ガバナンス
バグがあった場合などの緊急時の一時停止や、各種パラメータの変更を含むプロトコルのアップデートなどの意思決定は、オンチェーンで投票で行うする。最初はReserve Share保有者に参加権を持たせ、徐々にReserve保有者も参加できる様にし、その比重も高めていく。
以上が簡単なReserve Protocolの仕組み解説でした。
開発状況・今後のプラン
Reserve Shareの証券性について
まず気になるのは、「BasisはBond, Shareトークンの証券性を理由にプロジェクト中止したけど、Reserve Shareは大丈夫なの?」ということでしょう。CEOのTelegramでの発言によると、「Reserve Shareは適格投資家のみに売られる」「それでもプロトコルは問題なく機能する」というスタンスのようです。
Basisのプロジェクト終了に関してReserveが言及したMedium記事(Does Basis’ Fate Mean That All Stablecoins Are Doomed?)では、 Reserve自体についての具体的なコメントはされていないものの、「発行されたステーブルコインを直接購入することのできる資産でないならば(本来)問題ない」とし、Telegramでの他のコメントと合わせて、将来的に何らかの形でより広くReserve Shareが売買されるようにしていくという意思は持っているようです。
Reserveチームの開発プラン
同じくTelegramでのCEOの発言によると、ここまで説明してきたホワイトペーパーで提案されている仕組みはあくまで段階的に実現していくものであり、最初は、オフチェーンで法定通貨を担保に発行し、徐々にホワイトペーパーの仕組みを実現していくそうです(!)。このあたりのアップデートも前述の通りなるべく分散的なガバナンスで進めていきたいとのこと。このあたりの詳細なロードマップはまだ明かされていません。オンチェーンガバナンスは一般的にワークさせるのが難しい上、Reserve Protocolは規制への対応・細かいパラメタの最適化・最初の中央集権的な設計からのダイナミックな移行など難しい意思決定が大量に伴うので、ガバナンスの部分は困難を極めると思われます。
所感・考察
Reserve Share保有のインセンティブについて
Vault assetの高騰によるReserve Share保有者への配当の仕組みだけでは難しいだろうと思います。ホワイトペーパーではVault assetの高騰(つまりVault assetに使われる債権・不動産などのトークンの高騰)に関して楽観的な書かれ方がしていましたが、それなら投資家がReserve Shareを買わずに保有すればいいだけです。Reserve送金の手数料をいずれ有効にして、Reserve経済圏の成長がReserve Shareの価値を高めるようにするのではないでしょうか。
Vault assetのアセットクラスについて
債権や不動産など、オフチェーンのアセットに紐づいたトークンを担保に使いたい気持ちは非常にわかります。オンチェーンのアセットはどうしても価格が相関しがちなので、Reserveの価格が下がった時の価格安定性は相対的に高いように思えます。ただ、これらのアセットは一般に規制の元でトークン化され、流動性も限定的なので、価格維持メカニズムのオークションはかなり複雑になってしまうのではないでしょうか(アセットごとの適格投資家のホワイトリストを参照しながらVault assetを売り出す必要があるなど)。
その他、Scrapboxに、ホワイトペーパーを読んでいて気になったことの雑多メモを書いています。
参考
Appendix 1: 各種ステーブルコインの課題
Tether, TrueUSDのような法定通貨担保型
- 根本的に中央集権的になってしまう
- ユーザーに信用してもらうためにブロックチェーン外で努力しないといけない。(よって、監査等管理・信用獲得のためのコスト分を稼がないといけないので手数料高くしたり運用したりする必要が出る。)
MakerDAOのような暗号通貨担保型
- スケーラビリティ。ステーブルコインの時価総額以上の担保が必要になるが、担保になる資産を保有する投資家にとってその資産の他の運用方法と比べて魅力的でなければならず、担保拠出の需要は無限には増えない。
- 担保にしているクリプト資産の暴落に弱い。例えばMakerDAOだと、現状のパラメータで3割くらいまでしか、担保資産の暴落に耐えられない。(Scrapboxの計算メモ)
アルゴリズム型(のうちのシニョリッジシェア型)
- ステーブルコインが価格を割ったときにシェアを売るのがよくない。(ステーブルにする)コインとシェアの価格は相関する。将来のマーケットキャップの期待が下がれば、コインもシェアも値段が下がる。
- シェアの価格が下がると、コインの価格を戻すためにさらにシェアを発行しないといけなくなる。シェアの発行料が増えてさらに値段が下がり、ハイパーインフレになる
ステーブルコインはその実現方式によって、どれくらい強くペグされているか、価格復旧にどれくらい時間がかかるか、どんなリスクがあるかなどが異なるので、将来的にはそれぞれ別の使われ方をするのかもしれません。
Appendix 2: アルゴリズム型ステーブルコインの比較
Carbon, Basis protocol, Reserve protocolの比較です。ただし、Carbonはあくまで以前のモデル(古いホワイトペーパー)であり、EOSにローンチしたものなどは法定通貨担保のトークンを使う別の仕組みになっているようです。また、Basisはプロジェクトを停止しています。
Carbon
ステーブルコインであるCUSDとCarbon Creditの二種類のトークンがある。ステーブルコインであるCUSDの価格が下落すると、Carbon Creditを売るダッチオークションを行いCUSDを受け付ける。CUSDの価格が上昇すると、CUSDをmintしCarbon Credit保有者に配分する(この時Creditはburnされない)。
Basis protocol
ステーブルコインであるBasis, シェア系トークンとしてBondとShare、合わせて三種類のトークンがある。BondがBasis価格下落時のショック吸収に使われる割引債的なトークンで、mint/burnされ供給量は可変。ShareはBondの償還に劣後する配当権を与え、供給量一定。
Basisの価格が下落すると、Bondの(イングリッシュ)オークションを行いBasisを受け付ける。Bondのオークションは、まずシステムが発行するBondの量を指定し、参加者は購入量とレートを指定して参加し、高いレートのものから順にfillされる。
Basisの価格が上昇しBasisがmintされると、まず新しいBondから順に1Bond = 1Basisで交換されていく。Bondが全て交換されると、残りはShare保有者に保有量に応じて配分される。この時Shareはburnされない。
ReserveチームのMedium記事によると、Shareの80%はBasis運営側が保有し、その利益と調達資金の一部を中央集権的な手法による価格安定のために使うらしい。
シェア系のトークンの比較
- Carbon Credit: 発行上限なし、保有者はCUSD発行時に配当、burnされない
- Bond(Basis): 発行上限なし、Basis発行時に新しいBondから1Basisと交換、burnされる
- Share(Basis): 供給量一定、保有者はBasis発行時に(未償還のBondが無ければ)配当、burnされない
- Reserve Share: 発行上限なし、Reserve発行時のオークションに利用可能、burnされる