シニョレッジシェアとは? -担保が必要ではないStable Coinの仕組み-

こんにちは! iOSエンジニアの@akifujiです。

暗号通貨といえば、大きなボラティリティーが特徴ですが、最近は価格が安定するように設計された通貨であるStable Coinが注目を集めています。

Stable Coinは、TetherやMakerDaoのようなオン/オフチェーンで担保を必要とするものが有名ですが、アルゴリズムによって供給量を調整することによって、価格を安定させるようなトークンもあります。有名なものでいうと、Basecoin, Carbonが挙げられます。今回は、これらのトークンの設計のベースとなった"A Note on Cryptocurrency Stabilisation: Seigniorage Shares"という論文の内容を紹介したいと思います。

どうやって価格を安定させるか

この論文で使われている理論は、経済学的にいえば、マネタリズムと呼ばれているものです。マネタリズムとは、貨幣も物やサービスと同じように、供給量を増やせば価格が下がり、供給量を減らせば価格が上がるというものです。この理論は、国の中央銀行でも良く使われているものです。論文では、この供給量の調整を人の手ではなく、アルゴリズムによって実装することを試みています。

どうやって価格を安定させるか、を分解すると以下のようになります。

  1. 需要によって、トークンの価格が変わる
  2. 価格の変化に応じて、トークンの供給量を調整する
  3. トークンの価格が元に戻る

論文では、この2の部分をアルゴリズムで実現しようとしています。

具体的にいえば、ある一定期間(rebase periodと呼ぶ)で、トークンの価格がX%変化した時、トークンの供給量もX%変化させれば、価格は安定します。

いま、rebase periodを iとおき、Qをトークンの供給量。Pをトークンの価格とすると、価格が安定するためには、以下のような等式を成り立つように供給量を調整させれば良いことになります。

 Q_i = Q_{i-1} * \displaystyle\frac{P_i}{P_{i-1}}

すなわち、 i-1期と i期の価格の比率によって、 i期の供給量 Q_iが決まります。 ここで、後で使うために、1期前との供給量の差を \Delta_iで表します。

 \Delta_i = Q_i - Q_{i-1}

2つの問題点

ここで以下の2つの問題点が考えられます。

  • どうやって価格 P_{i}を取得するか?
  •  \Delta_iをどうやって分配するか?

1つ目は、ブロックチェーンに含まれない情報をどのように取得するか、という問題です。そもそもUSドルやビットコインなど何の価格を基準とするか、という問題も含まれます。論文の後半では、この問題について触れていますが、この記事ではその部分は割愛いたします。

2つ目が、この論文の焦点です。供給量を増やす場合、どうやって増加分をユーザーに配布すれば良いのでしょうか?  \Delta_iは負の値もとるので、その時はユーザーの中でトークンの持分を減らさなければなりません。その分配問題をどうやって解決するのでしょうか?

ナイーブな実装

シンプルなやり方

一番シンプルな方法は、毎回、全てのユーザーの所持金に \frac{Q_i}{ Q_{i-1}}を掛け合わせることです。つまり、トークンの総供給量の増減分の比率に応じて、各ユーザーの所持金も増減させるのです。

一見シンプルで良いように見えますが、これには問題があります。確かに、トークンの価格を安定させることはできますが、ユーザーのアカウントの購買力を安定させることができません。購買力とは、モノを買うことのできる財力のことです。トークンの価格が一定で、所持金のトークンの量が変われば、当然その所持金のトークンの総額は変わります。つまり、これでは結局、ユーザーの持っている所持金の価格は不安定なので、ボラティリティが解決されたとは到底いえません。

2つのwallet

そこで、次に、以下のような2つのwalletを導入してみます。

  • Sav(saving) wallet: 含まれているトークンの価格が変化しない
  • Inv(investement) wallet: 供給量に比例して、含まれているトークンの価格が変化する

ユーザーはこの2つのwalletを使い分けます。決済や取引のみにトークンを使用したい人はSav walletを利用します。価格が上がり、供給量が増えることを予想した人は、Inv walletを利用して、積極的にリスクをとりにいくことができます。

しかし、これも問題があります。 \Delta_iが負の値だった時に、全Inv walletsの総計に \Delta_i分のトークンが入っていなければ、供給を十分に減らすことができません。しかし、 i-1時点で \Delta_iが負の値(トークンの供給量が減る)と予想すると、ユーザーはInv walletsの資金をSav walletsに移動してしまいます。つまり、ユーザーはwallet間で資金を自由に移動できるので、供給の急激な減少が予想された時に、その減少に耐えられない可能性があります。

では、いったいどのようにすれば、この供給量の調整を解決することができるのでしょうか?

コインとシェア

そこで、コインとシェアという新しいカテゴリーをトークンに用意します。コインは、価格を安定させる対象で、こちらが実際に決済などに使われるトークンです。それとは別に、ユーザーは、このトークンのシステム内でのみ使用することができるシェアを保有することができます。

トークンの供給量を増やしたい時には、シェアと交換することでコインを獲得できるようにして、供給量を減らしたい時は、コインと交換することでシェアを獲得できるようにします。これは、一体どういうことでしょう?

毎回のrebase period後に以下のオークションが行われます

 \Delta_iが正の値の場合(コインの供給量を増やしたい)

 \Delta_iの増加分のコインのオークションが開かれます。 シェアの所有者は、コインに対していくらのシェアを支払うかを宣言することができます。価格を最も低く宣言した人からコインを受け取り、彼らはシェアを失います。 \Delta_i分のコインが分配されたら終了します。

 \Delta_iがネガティブ(コインの供給量を減らしたい)

 \Delta_iの減少分のシェアのオークションが開かれます。 コインの所有者は、シェアに対していくらのコインを支払うかを宣言することができます。価格を最も高く宣言した人からシェアを受け取り、コインを失います。 \Delta_i分のシェアが分配されたら終了します。 一時的にコインの価格が下がった場合でも、長期的にコインの需要が高まれば、シェアの供給量が減っていくので、シェアの価値がどんどん高まっていきます。したがって、ユーザーにはコインを失いシェアを獲得するインセンティブがある、という想定がされています。

このようなオークションを開くことによって、トークンの保有者が自発的にコインとシェアを交換し、トークンの供給量が調整されるのです。

終わりに

コインとシェア、というトークンに2つのカテゴリーを導入し、それらの間に市場原理をはたらかせることで、コインの価格が安定するようなメカニズムを紹介しました。

実際にこのような方式が実装されたトークンは生まれたばかりで、本当に理論通りにいくかは分かりません。しかし、担保を必要とせずにトラストレスにStable Coinを実装することが出来る、ということで非常に興味深い論文だと思いました。これからも、どのようなStable Coinが生まれるか楽しみですね!

Hiring!

先日、弊社コーポレートサイトがリニューアルして、
代表の宇佐美からのラブレターが公開されたので、是非読んでみてください!

また、「英単語の会社からビットコインの会社になるまで」や「ミッション・バリューが決まるまで」などPARK代表の田村さんのインタビューを交えたnoteも公開されたので良ければこちらもどうぞ! note.mu