この記事は、Terra Classic(LUNC)関連の開発者Duncan氏(@wrapped_dday)が2023年4月1日に公開したホワイトペーパー『Market Module("Ziggy”)の再定義』の内容を日本語訳したものとなります。
Duncan氏のリペグ案「Ziggy」に関するこれまでの取り組みや内容については以下の記事をご覧ください。
Terra Classic:ERM実装によるUSTCのリペグ提案「Ziggy」|Prop 11324
この記事は、Terra Classicの著名な開発者であるDuncan氏が2023年1月29日に公開した提案『USTC Re-Peg: Ziggy(Final)』の内容を日本語訳した記事となります。
続きを見る
【翻訳担当者】
「Ziggy」ホワイトペーパー概要
Terraのマーケットモジュールでは、Terra(法定通貨)とLuna(商品)通貨を交換することができます。この取引は、IMFのSDRに ペグ されたTerraSDRを通じて交換されていました。一方のコインが ミント されると、同等の価値を持つもう一方のコインは Burn されます。
しかし、ミントに上限がないため、価格が抑制されたコインはやがてハイパーインフレとなり、TerraやLunaをデノミネーション(通貨の呼称単位の切り下げまたは変更)とするチェーン上のすべての資産の価値を低下させます。
本論文は、ハイパーインフレが起こる前と起こった場合の両方をコントロールするために、Terraのマーケットモジュール の変更を実装することを提案するものです。
TerraのMarket Moduleには、2つのバーチャル流動プール("vLP")が存在します。1つのプールはTerra通貨で、もう1つのプールはLuna通貨です。仮想流動性プールの計算式はUniSwapの「v2 Constant Product Market-Maker」を改良したもので、計算式は以下のようになります。
現在のマーケットモジュール「マーケットメイキング・アルゴリズム」
ここで重要なのは、SDR(Special Drawing Rights)は人工的通貨であるということです。 つまり、TerraSDR、またはSDTの価格が両プールを通じて為替レートを決定するのです。
仮にSDTの値 = 0.5とすると、Terraプールサイズ = 1000 SDTとLUNAプールサイズ = 2000 SDTの間で100SDTのスワップを行うと、次のようになります。
このスワップの結果、≈181.82 LUNAを受け取ることができます。
このUniSwapのCPMM式「xy = k」の実装により、Lunaの価格によってプールの割り当てをするのではなく、Lunaプールサイズを変化させます。つまり、Lunaの価格は製品に影響を与えず、サイズのみを変化させます。
現在のマーケットモジュール「バーチャルLP」
バーチャルLP(vLP)とは、vLPのすべてのTerra通貨と、他方のvLPのすべてのLUNA通貨と定義します。TerraのCPMMとUniSwapのCPMMの主な違いは、δ(TerraPoolDelta)を利用して、各vLPのサイズを、vLPの初期サイズBasePool(デフォルトでは250,000SDR)の偏差値として保存する点です。
各流動プールのサイズは、以下の式を使用してδから生成することができます。
そして、250,000 SDRを基本価格とすると以下のような結果になります。
各ブロックの終了時、マーケットモジュールはパラメータのPoolRecoveryPeriodで定義されるように、TerraプールとLUNAプールの間のδの大きさを減少させることによってプールの補充を行います。
この期間が短いほど取引に対する感度が低くなり、また、以前の取引はより早く無くなって市場はより多くの流動性を提供できるようになります。この機能により、需要と供給が互いに動的に反応し、動的なスプレッド手数料を請求することができます。
現在のマーケットモジュール「スワップ処理」
マーケットモジュールのドキュメントでは、スワップ 処理を次のように定義しています。
- MsgSwap メッセージを受信した後、基本的な検証チェックが行われます。
- 為替レートの応答とスプレッドは、関数 k.ComputeSwap() を使用して計算されます。
- 関数k.ApplySwapToPool()でTerraPoolDeltaが更新される。
- オファーコインは、関数 supply.SendCoinsFromAccountToModule() を使って、アカウントからモジュールに転送されます。
- オファーコインは、supply.BurnCoins()を使って燃やされます。
- 手数料 = spread * ask; これはスプレッド手数料です。
- supply.MintCoins()関数で、AskDenomのコインを "Mint ask" する。これは、feeコインが焼かれるときに自動的にスプレッド手数料を適用します。
- supply.SendCoinsFromModuleToAccount() で、新しく鋳造されたコインをトレーダーに送ります。
- スワップイベントを発行してスワップを公表し、スプレッド手数料を記録する。
要するに、ユーザーがTerraからLuna、またはその逆(Terra <> Luna、Luna <> Terra)にスワップしたいときはいつでも、為替レートを計算し、δを更新します。
アカウントはコインをOfferとしてモジュールに送ってそれをBurnし、スプレッド手数料が計算されてスワップに課されます。そして、提示された価格から手数料を差し引いたスワップコインをミントし、モジュールを介してトレーダーに送信します。
このスワップは履歴を残すために公開されます。
現在のマーケットモジュール「シニョリッジ」
Columbus-5では、すべてのシニョリッジはBurnされ、コミュニティプールの資金源はない状態です。為替レートオラクルのBallot Rewardsとして、シニョリッジの代わりにスワップ手数料が使用されています(Ballot Rewardsは為替レートを決定するVoteProcedureから生成されます)。
LUNAがTerraにスワップするたびにシニョリッジが発生します。このようにしてプロトコルが回収したLUNAは、新しいTerraの発行時に発生する付髄価値である「シニョリッジ」と呼ばれています。シニョリッジの総額は計算され、為替レートオラクルへのBallot Rewardsとしてやトレジャリーモジュールによりコミュニティプールに再投入されました。
シニョリッジをデマレージで補う
シニョリッジとは「トークンの鋳造から得られる収入または利益で、通常は使用される内在価値と額面価値との差」を指します。貴金属で例えると内在価値とは "価値よりも量に関して考慮された金や銀のこと" です。私たちの場合、LUNAは「内在価値の一つの要素」と考えることができ、内在要素は銀行の準備金として機能します。
イングランド銀行はコインや紙幣を地金に交換する際に手数料を徴収していますが、これがデマレージです(デマレージは海上輸送における貨物の出荷遅延で発生する罰金を指すこともある)。
例えば、米国連邦準備制度理事会(FRB)は、通貨やコインを製造する際に手数料を徴収しています。2022年の年間予算は約10.6億ドルで、紙幣や硬貨の価値に応じて1枚あたり0.075ドルvから0.17ドルを徴収しており、製造手数料の純利益は92.5%以上となります。
2023年度の 連邦準備制度理事会 の紙幣印刷注文は、最低45億枚(1,665億ドル)という金額で、連邦準備制度が1,665億ドルの単純な純益を生み出していることを意味します(7.65億ドルの運営費)。つまり通貨生産に対する99.995%の純利益、例えるとシニョリッジを生み出しているということです。
ですが、これは持続不可能なことです。通貨の価値は膨れ上がり、価値の下落を無視して印刷を続けなければならなくなります。運用コストの予算は増やせますが、価値の減衰が考慮されていないため、通貨の「無価値化」が進みます。
仮想通貨の価値を理解するには、仮想通貨を作るためのコストを算出する必要があります。そして、ユニットが使用されるたびに減少しリサイクルするためのコストを算出します。これをデマレージと呼びます。
デマレージの計算式
新しい仮想通貨をミントするコストは、それをメモリーに書き込むコストで決まります。ビットコイン基準で、1BTCを採掘するコストを15,000ドルと見積もると、X個のTerraまたはLUNAをミントするコストは90,000ドル / hです。これを新しい変数wに代入します。
wは、つまり「メモリへの書き込みコスト」をさらに細かく分解して、鋳造することにした通貨の本質的な価値を理解する必要があります。TerraとLUNAという2つの通貨で想定し、そこから任意の為替レートを引いて "スポット価格" とし、Terraにはa、LUNAにはbを使うことにします。
LUNAをTerraに焼き戻すように、b-aを使います。つまり、いつでもTerra(a)の価値はLUNA(b)から引き出されている。
しかし、Terraは通貨として使われているため、これは完全に的確なイメージではありません。エコシステムの中でTerraを唯一の通貨として使用すると、指数関数的な効果が生まれます。TerraはTerraと交換され、1回の取引で2回使用されるのです。したがって、Terraを経由してLUNAから引き出される価値の計算式は、次のように表現するのがより正確です。
この計算式では、価値が引き出されることを示していますが、その本質的な価値b、つまりLUNAによって制限されています。すべてのユーザーが完全に撤退しない限り(つまりb = 0)価値を完全に引き出す方法はありません。
私たちのモデルは新しい資本を考慮する必要があります。これは、どんなものでも非自明時間の経過とともに、本質的な価値が0に向かう傾向がある(興味の喪失、死など)ため重要なことです。この挙動は、LunaをTerraに代入することでモデル化できます。
しかし、LUNAとLUNAの交換が行われていない場合、この図は正確ではありません。LUNAは商品であるため、同量を交換しても何の価値もありません。このアクションを完了すると「無価値スワップ」が発生し、結局は何の価値も提供しないブロックチェーンと言うだけでなくさらなる追加負荷をかけることになります。
ペニー(1ポンドの100分の1)をペニーと交換する唯一の理由は「造幣局の年号、誰が、何が表面に描かれているか、その合金成分」など、何か他の本質的な価値がそれに関連しているためです。
「b^2 - a」のアスペクトは、最初の公式アスペクトであるb - aと似ており、LUNAからTerraを経由して価値を引き出すというものです。すべてのものが等しいと仮定すると、このアスペクトは0に等しくなります。
変数b^2は、Lunaの内部での商品交換として発生します。例えば、LunavLPがLunaとビットコインで構成されている場合、主観的価値のある商品を交換することに相互に合意しているため、先程の「無価値交換」の定義に当てはまります。
また、これは新しい資本の投入を明確に表現しているわけではありません。新しい資本は、新しいTerraコインのような相関のある形のものと、新しいLUNAコインのような無相関の形でもたらされます。
新しいTerraを+a、新しいLunaを+bと表現します。しかし「Terra + Luna」のエコシステムに入った新しい資本は、どこから入ったかにかかわらず、すぐに両者と一度に相関関係が成り立ちます。
i(虚数単位)を使用し、i^2 = -1という方程式を満たすように二乗します。これは、他の無相関の経済が同様の事象をシミュレートしているためです。
i^2 = -1 を解決する前に「新しい資本」がどのように内部に入るか、つまりデマレージモデルの中核をなすTerraからのLunaの変換を定義します。
「a + bi」はTerraからLunaの価値を引き出すことを表し、商品評価の複雑さを取り込み「b^2 - a」で割ります。これは、我々の式でもTerraからLunaの価値を引き出すこと(複雑さはない)と関連しているからです。虚数単位iは、コモディティの価値を考慮するため、式の他の側面では利用されません。
また、複素共役の「a - bi」を考慮することで「z* = (a + bi)(a - bi)」と置き換えることができます。
この方程式を複素数で証明するのは「無価値」つまりは「完全な交換」を行うためです。Terra = Lunaのように、2つのものが等しく完璧に評価される場合、交換の必要がない、あるいは交換そのものが約束されれば完全に等しいということになります。
理論上、Terraではほとんど起こらないはずですが、例外的に存在する可能性はあります。もし、aとbの「価値ある / 完全な交換」が行われた場合、aとbのすべての価値が無効化されます。
この考え方は、経済における価値交換の取り消しにも通じます。これはメモリーから「書き換える」ことだと考えることができます。しかし、Terraを含む多くのエントロピー(不可逆性や不規則性を含む特殊な状態)システムに従ってチェーンから価値を書き換えることは「チェーンに書き込む行為」です。つまり、価値を書き換えないことを考慮するコストとして、チェーンに書き込む必要があります。
この考え方の核心は、まさにハイパーインフレ経済で行わなければならないことであり、デマレージの見積もりとして機能します。
展開形では次のように表現できます。
アーティキュレーションとして表現できるもの、チェーンに書き込むためのコストは、以下のような価値と同じです。
- Terraの価値を、Lunaから引き出された価値で割ったもの
- Lunaの価値を、Terraの貨幣速度で割ったもの
- Lunaの貨幣速度をLunaから引き出された価値で割った値
- Terra・Luna経済の中で、出入りする価値の量
マーケットモジュールを再度有効にすると、TerraやLunaの有無にかかわらず、2つの資産が自動的に相関されることに注意が必要です。自動マーケットメーカー(AMM)は単純なスワップ機能の性質上、価格を相関させます。このモデルは、チェーンが分岐して両方が同時に存在する場合、Terra自身を通して多様な新興経済圏を形成することができます。
デマレージ計算の実践的な活用法
Demurrageの公式は以下の通りです。
- a ≈ -1.39531
- b ≈ -1.00838
デマレージを適切に利用するためには、コイン(Terra)をコイン(Luna)に戻す「メルト」を行う必要があります。このプロセスは逆も可能です。その意味では、ミントを繰り返す必要はなく「Bullion(クラウドデータ)」を再利用すればいいのです。しかし、分散型ネットワークにポリシーメーカーがいない場合、これらの値を条件付きトリガーでハードコーディングする必要があります。
Lunaコインbを「ほぼ安定」、そして "無価値 / 完全な交換" を注意するためにTerraコインaを「デマレージ計算式のルート値を満たさない」と見なすと、どちらかを他で割った派生比率でその値がどちらかに近づいたときに、自動的にBurnすることができます。
- Terraの自動BURN @ a ≈ 0.722692(a / b)「デマレージ比率: 52.22842%」
- 自動LunaBURN@b≒1.383714(b / a)「デマレージ比率:191.466628%」
これは、以下のことを提案するためです。
- デマレージ比率を満たした場合、TerraをLunaに自動変換
- Lunaがデマレージ比率を満たした場合、自動的にTerraに変換
つまり、Terraがデマレージ比率(~52%)で商品価値を占め始めた場合、Lunaに変換する必要があります。そして、デマレージ比率(~191.50%)でLunaがTerraの担保価値を占め始めた場合は、Terraにコンバートする必要があります。
【現在の例】
- Terra = 0.024
- Luna=0.000125
【スワップレート】
- Terra <> Luna = 192
- Luna <> Terra = 0.005208
このように「Terra <> Luna」と「Luna <> Terra」の換算は、他方のデマレージ比率とほぼ等しく、この例ではTerraは単にLunaに近いと言えます。
ここで、ビットコインのような無相関の第3の通貨を想定してみます。
- Terra = 0.024
- Luna = 0.000125
- ビットコイン = 27,800
スワップレートは以下の通りです。
- Terra <> Luna = 192
- Terra <> ビットコイン = 8.633094e-7(およそ0.000000863 BTC)
- Luna <> Terra = 0.005208
- Luna <> ビットコイン = 4.4964032e-9 (およそ0.000000004 BTC)
この無相関の第3の通貨を使うことで、私たちは今Burnが起こる方向と量を提供することができ、それによってプロトコルのネイティブコインプールであるTerraとLunaを担保することができるようになりました。
既存のマーケットモジュールにデマレージを実装
簡単に説明すると「Terra <> Luna」のスワップが発生するたびに、発生したデマレージFeeは自動的に第3のプール、例えば "Commodities" に送られます。Commoditiesプールには、Lunaと同様の機能を持つ、ホワイトリストされたTerraネイティブのパーティションがいくつもあり、チェーン上に存在する商品です。
デマレージ比率は上記のようにハードコードされていますが、スワップの数学として完全に自然なものです。どの通貨をスワップ対象通貨とし、デマレージFeeを徴収するかを決めるだけでよいのです。
Terraチェーンでは、ビットコインであっても商品の価値が異なるため、チェーンの検証セットで "どの商品がキングか" を決定します。例えば、LUNAがビットコインを ペグ する主要商品と決定した場合「Terra <> Luna」のスワップが発生するたびに適切な量のビットコインが購入されます。
しかし、購入できるビットコインが残っていない場合は、別の相手から調達するか「次の指標」となる商品を使用しなければなりません。つまり「ビットコインが調達できず、コモディティプールのインデックスでイーサリアムが次にある場合にイーサリアムを購入する」といった具合です。
現実で国は、コモディティプールの一部として、他のTerraのフィアット(JPTC,KRTCなど)を使用することができます。さらに、このインデックスを重み付けするためのハンドラーが ガバナンス に加えられます。
既存のマーケットモジュールにコードとしてデマレージを実装
既存の Burn Tax の何割かをコモディティに振り分けるガバナンスハンドラーを組み入れます。Terraのコードでは、これは単にRewardPolicyとTaxPolicyを別々にしたものです。そして、コミュニティプールはチェーンのネイティブコモディティの裏付け資産として機能します。Terraがフォークした場合、Terraがデノミネーション、Lunaが選択コインとなり、TerraとLunaの1次コインを独自に決定することができます。
例えば、以下のペアはTerraのフォークにより、独自の Cosmos チェーンとなることができます。
- Curve DAO:Terra(3CRV・2pool・4poolなど)、Luna(CRV)
- Convex DAO:Terra(3CRV・付随する排出物)、Luna(CVX)
- Shiba Inu DAO:Terra(ETH)、Luna(SHIBU)
- Aave DAO:Terra(GHO)、Luna(AAVE)
- GMX DAO:Terra(GLP)、Luna(GMX)
ガバナンスハンドラーを追加し、Terraのプールに入れるものとLunaのプールに入れるものをユーザーが決定できるようにします。例えば、Curve DAOとConvex DAOが同盟モジュールを利用して別々のチェーンを運営するのは面倒だと判断した場合「マージ」して以下のように運営することができます。
Convex-Curve DAO:Terra(3CRV、2pool、4pool Lunaなど)、Luna(CRV、CVX、外部排出物)
このシンプルなハンドラは、TerraをCosmosチェーンのベースラインとして利用し、DAOチェーン全体をブートストラップすることを可能にします。これは独立した主権ブロックチェーンを利用したいと考える急成長中の企業にとって非常に有益です。
相互に合意したコンセンサスレイヤー(ビットコインやイーサリアムなど)を使用している限り、これらのチェーンの バリデータ は基本的なバリデータ作業(すなわち Proof-of-Work コンセンサス)に合意することになります。
『Redefining the Market Module (“Ziggy”)』の原文はこちらTerra Classic:L1開発チーム「L1 Task Force」第2四半期の活動・予算提案|Prop 11462
この記事は、Terra Classic L1開発チーム「L1 Task Force」のメンバーであるLuncBurnArmy氏が2023年3月30日に公開した提案『Joint L1 Task Force Q2』の内容を日本語訳した記事となります。
続きを見る