MakerDAOのステーブルコイン「DAI」 はなぜ安定するのか? そのメカニズムを詳解

MakerDAOのステーブルコイン「DAI」 はなぜ安定するのか? そのメカニズムを詳解

 

ソース: https://makerdao.com/en/dai

ステーブルコインの意義

僕は去年、送金が容易で手数料も安いという理由で、海外のクライアントから給与の一部をETHで支払ってもらっていました。ただみなさんご存知の通り、去年はETHの価値がどんどん下落していきました。日本円と交換するのが面倒で、暫く何も手をつけていなかった結果、見事に随分と損をしてしまいました。この経験があって、ステーブルコインについて少し深掘りしてみることにしました。暗号通貨を法定通貨にわざわざ変えることなく価値をそのまま保存できればとても楽です。

 

暗号通貨の変動制の高さは、投資家にとってはいいことかもしれませんが、他の人にとってはバグのようなものです。ステーブルコインは、暗号通貨を投資以外の目的で使うことを可能にしてくれます。出稼ぎに出ている移民の家族から稼ぎを低コストで受け取った家族は、価格の変動を心配する必要がありません。国をまたいで働く人や、店の経営者、そのお客さんも、給与や売上が減ったりすることを心配しなくてよくなります。長期的に価値が安定すると、他にもあらゆる利用方法が考えられます。例えばローンを組んだりすることも容易になります。価格が変動するようではローンを組みたくはありません。1BTCが1ヶ月後に2倍になってしまうのになんでお金を借りたいと思うでしょうか?これでは借りた本来のお金よりもありえないほど高いお金を借りていることになります。逆に、1ヶ月後に価値が半分になってしまうなら、お金を貸したいとは思いません。せっかく貸してもお金を失ってしまうからです。これ以外にも、スマートコントラクトをベースとした仕組みでも役に立つと考えられます。例えば、DAICOシステムにおいて、トークン発行者はプールされたETHが半分になってしまうことは避けたいでしょう。また、dappsを使うユーザーも価値が変動してしまう通貨は持ちたくないはずです。

 

ステーブルコインにはいくつか種類がありますが、この記事ではMakerDAOのステーブルコインであるDAIに焦点を当てます。まずMakerDAOの基礎について話してから、DAIの価格をいかに安定化させているのかを見ていきます。また実際にDAIを発行して、仕組みを理解していきますので、この記事を読み終わる頃にはDAIを所有することになります。

 

USDの価格に固定された通貨

簡潔に言うと、DAIはUSDの価格に固定された、イーサリアム上の非中心的なステーブルコインです。DAIの価格は少し変動するものの、基本的にほぼUSDと同じように推移します。

 

DAIが市場で自由に取引され始めると、価格をコントロールするのが難しいのではないかと思う人もいるかもしれません。僕も最初は懐疑的で、中央銀行のような需要と供給をコントロールする中央機関なしには難しいと思っていました。ただ、彼らは実際に価格を安定させています。

 

ステーブルコインの素晴らしいところは、それがきちんとしたものであるかを、少なくとも価格面では簡単に評価できる点にあります。単純に市場での価格の推移を見ればいいのです。

 

以下のように、去年ETHの価格は1400ドルから90ドルまで急降下しました。

一方、DAIはほぼ1ドルをずっと保ち続けています

確かに少しは変動しているのですが、1日だけで25%も変動してしまうような他の暗号通貨と比べれば雲泥の差があります。

 

暗号通貨担保型

では、MakerDAOはいかにして1DAIの価格を1USDに安定させているのでしょうか?MakerDAOはステーブルコインの中で暗号通貨担保型というモデルに属します。流通している全てのDAIの価値はイーサリアムのスマートコントラクト上にある暗号資産によって裏付けられており、この暗号資産でDAIを買い戻すことができます。これは、流通している全ての貨幣が金によって裏付けられており、金と引き換えることができるという金本位制が、ブロックチェーン上で実現されているようなものです。現在の中央銀行の仕組みとは違い、何もないところからお金を刷るようなことはありません。

 

担保があるというだけではDAIの安定性は保証されませんが、暗号通貨によって担保されているというのは、MakerDAOの核となる部分です。MakerDAOは、いくつもの担保を使ってローンを組むことができる複数担保型に移行する予定ですが、この記事では現在の仕組みである単一担保型について解説していきます。

 

担保付債務ポジション(CDP)

暗号通貨担保型では、スマートコントラクトに暗号通貨をロックすることでDAIを発行します。MakerDAOにおいて、このスマートコントラクトは担保付債務ポジション、もしくはCDPと呼ばれます。このCDPはDAI供給のエンジンであり、DAIが市場に流通する唯一の手段です。

 

正確にいうと、DAIを発行するためにはローンを組むことになります。つまり、ETHを担保としてスマートコントラクトにロックすることでDAIを借りることができるのです。いわば担保を自分でまだ所有していると言ってもいいのですが、債務があるためロックされている状態です。つまり、担保を取り返すためには債務を履行する必要があります。

 

これは銀行からお金を借りるときに、家を担保として抵当に入れるようなものです。銀行に行き、家の所有権を証明できればその家の価値に応じてお金を借りることができます。家を所有しているのはまだ自分なのですが、銀行には先取特権がある状態です。

 

ローンは可変の年利で組むことができるようになっており、(最新の利率はここで確認できる)、この取引は第三者機関や中央機関なしで、ブロックチェーン上だけで実現することが出来ます。

 

ただ、そもそもなぜDAIを発行するのでしょう?交換所でDAIを買うこともできるはずです。ETHをロックしなくてはいけないのに借りる意味があるでしょうか?

 

DAIをわざわざ発行するのは、ETHの価値が上がると考えていて、そのためにはETHを持ち続けたいけれども、できればそのETHの価値も使いたいからです。また、レバレッジ取引をすることもできます。CDPにETHをロックし、DAIを借ります。このDAIを使って交換所(Eth2Daiなど)でETHと交換します。そしてこのETHでCDPのサイズをさらに大きくします。これを繰り返すことでリバレッジを効かせることができます。

 

このインセンティブは十分でないと思う方もいるかもしれませんが、すでにETHの供給量のおよそ2%ほどがMakerDAOのクレジットシステムの中にロックされています

 

まとめると、担保付債務ポジション(CDP)というのはいわゆるパーミッションレス(許可のいらない)クレジットシステムで、誰でもETHを担保としてロックしてDAIを借り入れることが出来ます。これはDAIが流通する唯一の手段で、この仕組みのおかげで全てのDAIは担保であるETHの価値に裏付けられています。

 

CDP作成、ETH預入、DAI発行のデモ

では、MakerDAOのシステムをより直感的に理解するために、実際にDAIを発行してみようと思います。自分の借入のためにDAIを発行するというシンプルなシナリオを考えてみます。

 

こちらのウェブサイトに飛んでください。

DAIを発行するためにはトランズアクションを送る必要があるので、ウォレットが必要です。MetaMaskか、Ledger Nano S、もしくはTrezorを選べます。

 

今回のデモではMetaMaskを使います。まずMetaMaskにログインしてください。メインネットだけではなくKovanテストネットも使えますが、デモではメインネットを使ってしまいます。ポータルサイトからのリクエストを承認してください。

承認すると、以下のような画面が表示されます。左側では、作成されたCDPの情報が見れるようになります。右上には、MetaMaskの情報が載っています。ETH、DAI、MKR(ガバナンスのためのトークン)の残高がみれます。その下には価格の情報が載っています。PETH(Pooled ETH)は単一担保型において使われる担保のトークンです。ETHをCDPにロックする際、実は裏側ではそれがPETHに変換されています。一番下にはCDPの情報が載っています。このデモの最後には意味がわかるようになるので、今は解説を省きます。特殊な用語が多く戸惑うかもしれませんが、とりあえずこのデモでは直感的に理解することが目的なので、あまり心配せずどんどん読み進めてみてください。

OPEN CDPボタンをクリックしてください。すると以下のような画面になります。

ここでは、2つ決めるべきことがあります。

  1. 左のフォームに担保として預け入れるETHの量を入れる
  2. 右のフォームに借り入れたいDAIの量を入れる

ETHは最低額が0.006ETHになっています。左下の、Liquidation Priceなどの情報はあとで説明します。

次に右側で借り入れたいDAIの量を決めます。ここで注意する必要があるのは担保率です。担保率は担保であるETHと負債であるDAIの比率です。

詳しくはあとで説明しますが、この比率は少なくとも150%以上でなければならず、200%以上にすることが強く推奨されています。先ほど飛ばした右下のGlobal CDP Collateralizationを見ると平均では300%以上であることがわかります。

 

以上の条件を満たした上でフォームに値を入れ、COLLATERALIZE AND GENERATE DAIボタンをクリックします。そしてfinalizeし、create CDPします。

 

また、MetaMaskでトランズアクションも確認してください。
*もしトランズアクションが通らなければ、ガスをより多く積んでみてください。

 

しばらく待ちます。

ガス料金が極めて高かったことに気づいたかもしれませんが、これはトランズアクションが複数送られているからです。一気に複数のトランズアクションを送るためにプロキシーコントラクトが使われており、このおかげでCDP作成、担保の預け入れ、DAIの発行を簡単に行うことが出来ます。

 

これが時間がかかる原因でもあるのですが…しばらく待つと…次のような画面が出ると思います!

これでダッシュボードが見れるようになり、CDPにETHが入っていること、またウォレットにDAIが入っていることがわかると思います。CDPはMakerDAO上の個人アカウントのようなものと考えるとわかりやすいかもしれません。

興味がある方はMetaMaskでトランズアクションをみることもできます。さて、これでDAIがいかにして流通するかということが少し直感的にわかったかと思います。ではこれからDAIをいかに安定させるのかという本題に入ります。

安定化のメカニズム

さて、今までDAIがいかに流通し、なぜCDPが作成されるかをみてきましたが、ここからはDAIの安定化メカニズムについて話します。

 

このメカニズムには5段階あります。一つ一つ順番に見ていきます。

  1. 過剰担保
  2. リスキーなCDPの自動精算
  3. 経済的なインセンティブによる供給量のコントロール
  4. MKRの希薄化
  5. 緊急停止

過剰担保

破産を防ぐためにはユーザーが負債を払えなく状態になってしまう状態、つまり過少担保を防ぐことが肝要です。DAIの裏付けがなくなってしまったときに価格が安定しているとは考えにくいでしょう。

 

過少担保を避けるために、担保の価値以上の負債は持てない仕組みになっています。これは既存の金融業界でも一般的な仕組みであり、MakerDAOもこれを採用しています。つまりCDPは常に過剰な担保によって守られているべきであり、担保の価値は常に負債よりも高くなっています。

 

MakerDAOはただ価値が高いだけではなく、担保率が150%以上でないとそもそもローンを組むことができない仕組みになっており、200%以上であることが推奨されています。$100の価値のETHをもっている場合、100DAI発行できると思っていたかもしれませんが、デモでも見た通り、75DAI以上(150%)は発行できず、50DAI以下発行することが望ましいとされています。

 

過剰に担保を入れてもらうことで、担保の変動リスクに備えているのです。ETHの価値が下がると、担保率が下がり、DAIの価値をカバーするのに十分な担保がなくなってしまうかもしれないというわけです。担保率を100%に設定した場合、ETHの価値が1セントでも下がるとすぐに過少担保に陥ってしまいます。過剰担保は安定性メカニズムの基礎となる部分であり、担保に余裕を持たせることでDAIの安定性を保っています。

 

また、過剰担保は、担保率が150%を切った時にETHが清算される時間を稼いでくれます。次は、この清算がスマートコントラクトを使っていかに行われるかを見ていきます。

 

リスキーなCDPの自動清算

担保の価値が最低担保率(150%)を下回ってしまった場合には自動精算がなされます。

 

精算のプロセスでは、負債の価値(DAI)、安定化手数料、そして精算ペナルティが担保の価値から引かれ、その残りの担保が戻ってきます。

 

つまりCDPユーザーは精算後、手元のDAIと、負債の価値+安定化手数料+精算ペナルティが引かれたETHを所有することになります。

 

安定化手数料というのは銀行に支払う金利のようなもので、借金を返済する際に請求されます。DAIを一部返済する際にも、完済してCDPを閉じる際にも請求されますし、また先に述べたように自動精算が起こった時にも請求されることになります。安定化手数料は、今のところDAIでもMKRでも支払えます(実際はDAIはMKRに変換されてから支払われています )。この手数料はMakerDAOのガバナンスによって変わるようになっており、ここで最新の手数料を確認することができます。手数料は負債であるDAIに対して計算され、年に何%か払う必要があり、負債に対して増加していきます。

 

精算ペナルティはCDPの管理がうまくいかなかった場合の罰金で、十分な担保なしにDAIを発行することを妨げる役割があります。今日(2019年7月9日)の時点で精算ペナルティは13%になっています。

 

現状の単一担保型DAIの仕組みでは、清算援助コントラクトが精算プロセスを担っています。清算援助コントラクトは担保を売りに出し、キーパーと呼ばれる人たちがDAIと引き換えに担保をまとめて購入します(キーパーは清算される可能性が高いCDPを監視しています)。売り出し価格はオラクルと呼ばれる価格をブロックチェーン外から引っ張ってくる人の助けを借りつつ、それに値引きをして決定されます。値引きすることで精算のプロセスがなるべく速く進むようにするためです。担保と交換されたDAIは直ちに焼却され、このプロセスはCDPの負債分が全て焼却されるまで続きます。このようにして、負債をカバーするのに十分な担保が抑えられているようにします。

 

少し細かいですが、手元に残る資本のより詳細な公式は以下のようになります。

CDPユーザーが覚えておくべきことは、150%がCDPが自動精算されてしまうラインであり、市場の価格変動によってそれを下回ってしまうのを避けるために、150%よりも余裕を持って担保を確保しておくということです。精算のリアルタイムの情報はここで確認することができます。

 

デモ

担保が不十分な状態を避けるためには、CDPを健全に保っておくことが重要ですが、CDPを常にモニターしておけば難しいことではありません。ただ、担保率が低くなってしまった時のために、担保を増やすためのETHか、負債を支払うためのDAIを手元に置いておくことも必要です。

以下では担保率が150%に近づいたときにDAIを返済する流れと、ETHを担保としてさらにデポジットする流れを見ていきます。

 

DAIの返済

もう一度ダッシュボードに行き、DAI positionセクションのPAYBACKボタンをクリックします。そうすると以下のように右側にPayback DAIというウィンドウが出てきます。

返済するDAIの額を指定し、Pay stability fee with DAIを選択します。Liquidation priceというのは、担保であるETHが精算されるUSDでの価格です。ETHがこの価格を下回った場合、CDPが精算されます。支払いをした後でこの価格が変わることがわかると思います。また、collateralization ratio( 担保率)も支払いを済ませた後で変わります。

 

PAYBACKをクリックします。

MetaMaskのポップアップスクリーンでConfirmをクリックし、トランズアクションがブロックに含まれるのを待ちます。ここでもプロキシーコントラクトが使われています。

 

しばらくするとトランズアクションがブロックに含まれ、DAIが返済されたことがわかります。liquidation priceは低くなり、collateralization ratio( 担保率)は上がっていることがわかります。

ETHのデポジット

次に、ETH CollateralというセクションでDEPOSITボタンをクリックします。そうすると以下のように右側にDeposit Collateralというウィンドウが出てきます。

ETHをいくらデポジットしたいか指定します。

 

DEPOSITボタンをクリックします。

MetaMaskのポップアップスクリーンでConfirmをクリックし、トランズアクションがブロックに含まれるのを待ちます。ここでもまたプロキシーコントラクトが使われています。

 

しばらくするとトランズアクションがブロックに含まれ、ETHがデポジットされたことがわかります。liquidation priceは低くなり、collateralization ratio( 担保率)は上がっていることがわかります。

経済的なインセンティブによる供給量のコントロール

3つ目のメカニズムは、経済的なインセンティブによって市場での行動を促し、DAIの供給量をコントロールするというものです。2つあるインセンティブ設計を順に見て行きます。

コントラクトと市場価格の間の鞘取引

まずは、スマートコントラクトの価格と市場価格の差を利用した鞘取引を促すものです。

 

新しいCDPを作りDAIを生成することもできますが、市場でDAIを買うこともできます。では、いつどちらの選択をすることに経済合理性があるでしょうか?

 

もしDAIの供給量が少なければ、DAIの市場価格はUSDより少し高いかもしれません。仮に市場価格が以下のような状態だったとします。

この場合、CDPからDAIを借り入れた方が良いでしょう。スマートコントラクトは常に1 DAIが 1 USDだと計算するので、CDPを作れば100ドルの価値のETHで100 DAI得ることができます。一方市場では95DAIしか得ることができません。DAIをコントラクトから得た後は、それを市場で売って利益を得ることができます。

 

安定化手数料にもよりますが、1 DAIが1 USDよりも高い場合は、ローンを組む経済的なインセンティブがあります(これはCDPを作成するインセンティブにもなっています)。こうなるとコントラクトはDAIをより多く発行するため、供給量の増加により価格が下がり、1DAIはより1USDに近づきます。

 

逆にもしDAIの供給量が多けければ、DAIの市場価格はUSDより少し高いかもしれません。

この場合は市場でDAIを買った方が良いでしょう。100ドルの価値のETHで105DAI得ることができます。そしてそのDAIを使って、CDPに返済することもできます。

 

1 DAIが 1 USDより安い場合は、市場で買い、そのDAIをローンの返済にあてるのが合理的です。ローンが返済されると、DAIは焼却されます。こうすると供給量が減り、DAIの価格は1USDへと押し上げられることになります。

 

ここでポイントとなっているのは、コントラクトと市場価格の差です。DAIのエコシステムへの参加者はこの価格差に応じてより多くローンを組むか、ローンを返済するかインセンティブづけられています。1DAIが1USD以上であれば、ETHをロックしてDAIを発行するようにインセンティブが働き、その結果価格が下がります。逆に1DAIが1USD以下であれば、ローンを返済してDAIを焼却するようにインセンティブが働き、その結果価格が上がります。

安定化手数料の調整

次のインセンティブ設計は安定化手数料の調整です。安定化手数料は、DAIの価格に応じてMKR保持者が調整することができます。

 

安定化手数料の増加はCDPユーザーのコストの増加につながり、DAIの供給量を下げます。逆に安定化手数料の減少はCDPユーザーのコスト減少に繋がり、DAIの供給量をあげます。安定化手数料は供給量をコントロールするための政治的な手法だということができます。

 

以上から、MakerDAOは価格差による鞘取引と安定化手数料の調整という2つのゲーム理論的な仕組みを設計することでも、DAIの安定化を図っているということがわかったと思います。

MKRの希薄化

4つ目は、MKRの希薄化です。すでに過少担保を防ぐための手法として自動精算の話をしました。しかし自動精算の仕組みがあったとしても、価格が急激に下がった場合は、自動精算前に担保率が100%を下回ってしまうかもしれません。

 

ここで、ガバナンスのためのトークンとして存在しているMKRが、支払われていない負債をカバーするために使われます。そもそもMKRは、その保持者に対して負債上限、精算率、安定化手数料、そして精算ペナルティなどのパラメーターについての投票権を与えています。MKR保持者はDAIの価格を安定させるために働くことが目的です。自動精算が失敗した場合、彼らがいい仕事をしているとは言いづらいでしょう。よって自動精算が失敗した場合はMKRが生成され、精算の手段として使われます。こうなると当然MKRの価値は下がってしまいますが、これがMKR保持者がDAIを安定させようとするインセンティブになっています。

緊急停止

最後の安定化メカニズムは、緊急停止です。これは最後の砦となっているもので、できれば起こってほしくないものです。文字通りシステムを停止させます。予想できる事態としては異常な価格変動やセキュリティ上の問題などがあげられますが、システムのアップグレードでも使われます。

 

MKR保持者によって選ばれた緊急オラクルという人たちが緊急停止を発動します。これがシステムをある状態で凍結させ、CDPとのやりとりができなくなり、価格オラクルから得ている価格フィードもある価格で凍結されます。この凍結された状態の比率でETHはDAIと交換可能になります。

 

ただ、これはMakerDAOのシステムが完全に終了するということではなく、再度デプロイし、移行されることになります。現状では移行の手順は手動で行うしかありませんが、将来的には自動で行われるようになります。

 

以上がMakerDAOの安定化のメカニズムです!

 

今回の投稿では、スマートコントラクト、ガバナンス、複数担保型DAI、緊急停止プロセスの詳細などなど、カバーしきれないことも多くありましたが、今後他のポイントについても投稿する予定です。

 

まだまだたくさん疑問点があると思いますので、自分でリサーチをしたい方は、こちらのリストも参考にしてみてください!

 

 

Profile

解説:三野泰佑
ICOVOエンジニア
2013年頃からブロックチェーンに関わり、スマートコントラクトのベストプラクティスを閲覧できるサイトやSolidityの監査をするサービスを開発。現在はICOVOのエンジニアとして開発や執筆をしながら、ステーブルコインに特化したモバイルウォレットも開発している。