※この記事は、元Terra RebelsのメンバーであるEdward Kim氏(@edk208)が2022年12月17日に公開した記事『No Money, Mo’ Problems?』の内容を日本語訳した記事となります。
2023年に向けて:Edward Kim氏の考え
激動の2022年も終わりに近づいて来ましたので、私たちの現在と、新しい年に私たちが進むべき道についていくつか考えを共有したいと思います。まず何よりも「私たちは数カ月前よりもずっと自立・安定した立場にある」と思います。以前は、崖っぷちに立たされているような感じで、突風が吹けば倒れてしまいそうな状態でした。現在も私たちのポケットはまだ空っぽのままで一文無しの状態かもしれませんが、状況は変化しつつあります。
最近の提案は、コミュニティプールに直接的に多くの資金をもたらすため、または、Terra Classicチェーンに価値を取り戻すことを目的としています。そしてオラクルプールもあるでしょう。ディペグ 時のスワップでもたらされた予想外の利益が復興のための救いとなったのです。
ステーキング報酬の仕組み
しかし、問題はないのでしょうか?オラクルプールの資金が尽きるタイミングが迫っているのではないでしょうか?そこで、まずは ステーキング 委任者と バリデータ がどのように報酬を得るのかを見てましょう。ステーキング報酬の計算式は以下の通りです。
「ステーキング報酬 = オラクル + ガス代 + インフレ」
現時点では文字通り、オラクル配布によるステーキング報酬が99%、ガス代が1%、インフレによる報酬が0%となっています。これらの変数(オラクル・ガス代・インフレ)の背後にある仕組みを調べてみると、実は私たちは自分が考えている以上にお金と選択肢を持っているかもしれないということが分かると思います。
オラクルプールについて
イノベーション、開発、進歩における緊急性は、このブロックチェーンという分野においては非常に重要なことです。オープンソースで開発することによって、コードの正しさを検証することができ、開発者はプロジェクトの競争力を維持するためにイノベーションを起こすことを求められます。それが、私がこの技術に惹かれ、この分野で開発を続けている理由です。
オラクルプールについては、別の危機感から議論や開発に拍車がかかっていますが、オラクルプールの状況は私たちが考えるほど悲惨なものではないかもしれません。LUNC(Terra Luna Classic)コミュニティでよく目にするのは、「オラクルプールの資金が尽きたらチェーンが消滅する」「この先2年でオラクルプールが尽きる」というものです。
これは下記のオラクルパラメーターからきていると考えられます。
# Oracle Distribution Algorithm
# totalPeriodRewards = RewardPool x (votePeriod /rewardDistributionWindow)
votePeriod = 5 ## 5 ブロックごとにオラクル報酬を配布
rewardDistributionWindow = 9400000 ## 9.4M ブロック、または 652 日 (~1.7 年)
r = votePeriod/rewardDistributionWindow
numVotesPerDay = 14400 /投票期間
このコードで注意すべき主なパラメータは「rewardDistributionWindow」です。これは、投票期間ごとのオラクル分配率が 〜 1.7年のスパンで計算されるべきであるというものです。そのため、もしプールから一定 / 線形の分配があった場合はその時間内で枯渇してしまうことになります。
投票期間中に計算される報酬は以下の通りです。
ここでの「dist_t1」は最初のタイムステップで「pool」はオラクルプールのサイズ、そして「r」は次のようにして計算されるパーセント分布です。
基本的に5ブロック毎(~30秒毎)に0.000531%のオラクルが分散しています。ここで、認識すべきことは「分散は一定ではない」ということです。プールのサイズは投票期間ごとに減少し続けます。そのため、次のタイムステップでの分布はより小さいプールサイズの0.000531%の分散を計算していることになります。5ブロック後(t = 2)の分布は、時間「t = 1」での以前の分布の影響を受けて減少したプールになります。
より正確には代入といくつかの代数によって、
そして、この展開を次の時間ステップである「t = 3」まで続けることができる。
これを単純化すると
そして、以下はプール変数を分配する計算式です。
それからもう1回「t = 4」まで行ってパターンを認識します。
今、あなたの記憶を深く掘ってみてください。高校の数学で習った係数のパターンに見覚えがあるかもしれません。パスカルの三角形 (1,-2,1) (1,-3,3,-1) の交互級数のパターンで、その係数は二項定理によって「t = n」の一般の場合で解くことができます。
この二項係数の和の展開は、より単純な多項式表現の閉形式解と等価となります。
以上のことから、将来の任意のタイムステップ / 時点におけるオラクルプールからの分配量を「n」で表すと計算できることになります。
これを具体的な数字で表してみましょう。12月13日現在、オラクルプールには約2,720億LUNCと9億3,500万USTCがあります。他の少ないステーブルコインは全て計算に含めていません。オラクルプールの現状を見たい方は こちら を参考にしてみて下さい。
# Starting point, Dec 13,2022 lunc = 272764796913 ## 272 B lunc, around $45M USD ust = 935235498 ## 935 M ustc, around $23M USD staked = 894076663267 ## 894 B lunc totalSupply = 6872832823412 ## 6.87 T lunc
上記の分布を10年間かけてデータを入れていくと以下のようなグラフになります。初年度の早い段階でかなりの急降下があり、時間が経つにつれて先細りになっています。実際、報酬アルゴリズムは徐々にゼロに近づいていきますが、コミュニティ内でオラクルプールが尽きる時期と言われている"2年"を過ぎても報酬の払い出しが続いていることが分かります。
この解答を検証したい方は、この分布を計算するために使用した以下のコードを確認してみてください。
# Solve binomial equation and the analytical solution def solveReward(t,r): sum1 = 0 for i in range(t+1): sum1 = sum1 + ((-1)**(i))*comb(t,i)*Decimal((r**(i+1))) return sum1 def solveRewardAna(t,r): return r*(1-r)**t
# Verification of Distribution via 3 methods, numerical, binomial expansion, and closed form r = votePeriod/rewardDistributionWindow n = 1000 binom = lunc*solveReward(n,r) analytic = lunc*solveRewardAna(n,r) print(totalLuncRewards[n]) # Numerical solution print(binom) # Binomial expansion print(analytic) # Analytic closed form solution 145010.50414723594 145010.5041472357588397052805 145010.50414724177
現在、オラクルプールからのLUNCの配布はすべてのバリデータで30秒ごとに合計約145kを配布していますが、今から1年後は30秒ごとに合計約82kに減少する計算となります。それから2年後、3年後、5年後、10年後と続けていくと、それぞれ47k、27k、8.8k、541となります。
しかし、これはステーキング報酬とリターンの点ではどうなのでしょうか?これは利回りの競争力を維持するのに十分と言えるのでしょうか?この計算では「ステーク金額」「LUNC / USTCのスワップ価格」「オラクルプール額の増加なし」「複利計算なし」などいくつかの要素が同じままであると仮定する必要があります。
#すべてが同じままであると仮定します(賭け金、オラクルの増加なし、複利なし、スワップLUNC USTレートなど) oneYear = int(numVotesPerDay * 365)oneYearLunc = sum(totalLuncRewards [ 0:oneYear])0 :oneYear]) ### スワップレートpLunc = 0.000165 pUst = 0.025 swapRate = pUst/pLunc oneYearStake = oneYearLunc/ staked oneYearStakeUst = (oneYearLunc + (oneYearUst*swapRate))/ staked print (oneYearStake) print (oneYearStakeUst) 0.130603713 0.1985492125845048
全ステークに分配される金額(8,940億)を考えると、初年度(2023 〜 2024年)のオラクルプールの利回りはLUNCだけで「13.06%」と予想できますが、スワップされたUSTCを含めると「19.85%」になります。そして、自動複利運用で若干利回りが改善される可能性があります。
他にも利回りのパーセンテージが出回っていますが、プールサイズの減少を考慮していない可能性があると考えています。例えばプールサイズを一定とした場合、報告されている利回りはLUNCのみで「17.04%」、LUNC + スワップ付きUSTCで「25.90%」となりますが、現実には高すぎると感じています。
2024 〜 2025年は「約 7.47%」のLUNC利回りが期待でき、2025 〜 2026年はオラクルプールが少しずつ減少し、その他の要素が同じであれば再び「4.27%」のLUNC利回りにまで低下することが予想されます。(USTCスワップはここまで予測するのは非常に難しいため含まれていない)
アクティブバリデータセットに対して委任をより均等に配分することができる限り、これは2年後に起こるオラクルプールの枯渇という最悪の事態が発生しないことを示しています。
ガス代について
このように、利回りは数年先までかなりの競争力を持った状態が続きますが、時間が経つにつれてその魅力は確実に失われていきます。この問題を解決するには、ステーキング金額の総額に含まれる他の変数に対処する必要があります。1つの解決策は「取引にかかるガス代に取り組むこと」です。
現在、過去1週間の1ブロックあたりのトランザクション(非オラクル投票)の平均は約2.09で、2022年5月のディペグ以前は、1ブロックあたり平均40 ~ 50トランザクションでした。詳しいトランザクションのデータは以下の通りです。
チャート履歴を見ると、オラクルトのランザクションもカウントしていないことが分かります。このことから、トランザクション数の20倍から25倍が期待できる上限であることが感じられます。
さらに、過去1週間のTerra Classicチェーンからのデータで計算したところ、約56万7,000LUNCのガス代が収集され、ガス代の倍率は5.665となりました。これは、1週間あたり約320万LUNCがガス代として徴収され、その半分がステーキング報酬に、半分がコミュニティプールに送られる計算となります。
ですが、興味深いことにガス代の分配の計算とコミュニティプールに送られる実際の金額は一致しないため、13倍近く低い設定となっているような気がします。「FeeCollectorModule」を見るとTerraSwapなどのスマートコントラクトから実際のガス代よりもはるかに多くの追加入金を受け取っており、報酬の一部をコミュニティプールに送るバリデータ(Luna Station 88など)もあるようです。
このようなことから、この後の計算は基本的に下限値であり、実際のリターンはもっと大きくなる可能性があります。そして、これはLUNCのハイパーインフレの副産物と言えますが、今現在、私たちのガス代はどのブロックチェーンよりも低い部類に入ります。
ガス代を他の主要チェーン(Luna v2、Juno、LTCなど)と同程度のレベルまで引き上げれば、将来枯渇していくオラクルプールに対抗できるかもしれません。それ実際、Terra Classicチェーンは手数料は非常に低く、ガス代を60倍にしたとしても、基本的な送信トランザクションは「1ペニー($ 0.009)」以下にとどまるでしょう。
現在のボリュームを分析すると、ガス代1ペニーにつき0.47%APRが上昇します(実際は0.94%ですが、この半分がコミュニティプールに送金される)。暴落前のボリュームが今の20 〜 25倍だったことを考えると、特にLuna v2(現LUNA)との技術的な調整の後、来年末までにボリュームを5倍にするのが妥当な目標だと思います。
基本的にデータが示しているのは、もし取引件数を5倍にすることができ、コミュニティがガス代を1取引あたり0.009に引き上げることを決定した場合、初年度移行のステーキング利回りは13%ではなく16%になり、その50%がオラクルプールへ送金されることになります。もしプールがシニョレッジ(鋳造した通貨の額面と原価の差額)によって十分に資本化されていれば、すべてのガス代をステーキング報酬に振り分けることができ、翌年のLUNC利回りは19%になります。
インフレ率について
最後に説明するのは、ステーキング報酬の計算式の最後の項である「インフレ」です。本来、ミント(鋳造)時に徴収されるものですが、現在のインフレ率は0%で、ステーキング報酬には全く寄与していません。つまり、Terra Classicでは、年間インフレ率を7%に設定されているLuna v2で見られるようなブロックごとのパーセントミントは行われないということです。
この0%インフレはBurn(バーン)を助けるものですが、コミュニティが将来的に再検討できるオプションの部分です。例えば、ステーキング報酬が低くなりすぎた場合やユーティリティ(実用性)の発展に重きを置く場合は、ユーザーやプロジェクトにコスト負担を強いるのではなく、Terra Classicチェーンがより魅力的になるように適度なインフレの%を導入することが可能です。
復活に向けた資本化計画:L1開発
現時点で、多くの人がオラクルプールの資本化に取り組んでいますが、これは非常に重要なことです。しかし、この記事の主な目的は「ガス代」「インフレ」「投票権の分散化」にも焦点を当てて委任数を増やし、高品質のバリデータを引き付けることができるということを強調するためです。また、ブロックごとに処理されるトランザクションの数を増やし、ユーティリティを引きつけることに注力することで、報酬の減少を打ち消すこともできます。
そして、おそらくトランザクションを増やし、ユーティリティを高める最良の方法は、Luna v2やCosmosのエコシステムと技術的に同等にすることです。ここからは、L1 の現状を概説し、同等レベルにするのために必要ないくつかのステップを提案したいと思います。
現状まとめ
L1の状態について、Terra Classicチェーンの現状をまとめたものです。これらの項目は、古いチェーンに残っていたものと、ディペグ以降に加えられたいくつかの改良点です。多くのコアアップグレードが必要であり、アップグレードによってさまざまな影響を受ける可能性があるために、特に注意が必要です。
- SDK v0.44.5-パッチ + LUNCパッチによるオラクル対応
- Tendermint v0.34.14 + オラクルパッチ
- 巨大で計算不可のアーカイブノードのサイズ(>8 tbと推測)
- 重大な変更を伴う多数の既知の以前の未知の状態遷移
- 契約のセキュリティアップデート
- 特別なSDKタイプの更新
- 新しいアーカイブノード(製造可能かどうかは不明)
- Wasmd v0.16.6
- オラクルフィーダー「sha256」の修正
- dockerツールのアップグレード
- ICSパッチ
- IBCチャンネルを再有効化
- ABSキーパー (ベータ版)
- Terra Classic規定(ベータ版)
完了させるべき必要なL1変更の概要
- SDK v0.45.11(+)※オラクルをサポートするLUNCパッチ付き
- Tendermint v0.34.21 (理想的には 0.37) ※オラクルパッチ付き(tendermintの優先順位の変更に注意)
- Cosmwasm v1.0.0 (+)
- Classicの代替となるLocalTerra
- cosmos sdk upgrade handlersの評価と開発(バージョンマッピング「UpgradeHandlers」)
- アップグレード手順の作成と文書化(ソフトウェアアップグレードの提案)
- 0.16.6でのL2 wasmコントラクトの影響評価とレポート
- 新しいジェネシス作成の評価とレポート(現在、jsonファイルが4GBを超えると新しいジェネシスを生成できない)
- オンチェーン免税のためのインキュベータホワイトリスト機能(理想はガバナンス提案)
アップグレードプロセスの概要
- 上記L1アップデートによるアップグレードチェーン(バンプまたは新ジェネシスのどちらか)
- バリデータ、CEX(中央集権取引所)との調整
- ソフトウェアアップグレードの提案を利用する(可能であれば構築して今後利用する)
- チェーン上のL2スマートコントラクトを特定して連絡を取る
- L2 dAppsに移行手順 / ドキュメントを提供する
L1サポートとメンテナンスの追加要件
- Luna v2へのIBCチャンネルを作成
- LCD / FCD v0.45.1 (+) との互換性を評価 ※「mantlemint」が機能しない可能性があることに注意が必要
- LCDとFCDのエンドポイントへのコミュニティ / パブリックアクセスを提供 ※自身のノードを走らせることを奨励
- genesis.jsonの公開とaddrbook.jsonの更新
- LUNCチェーンとLUNAチェーンの中継の確立と維持
Interchain Stationに対する互換性の提案
Terra Classicチェーンを TFL(Terraform Labs)が提供する新しいウォレットアプリケーション「Interchain Station」と互換性を持たせるためには、上記の全てに加え、bech32の「prefix(アドレス名の頭の部分)」を "terra "から "terrac"にアップグレードする必要があります。ですが、残念ながらこれは非常に複雑なL1ソリューションであり、今後数ヶ月(または数年)以内に実現する可能性は低いでしょう。
とはいえ、TFLはブロックチェーンレベルでの変更に頼らず、ウォレットレベルでの問題を調査し、解決しようと考えています。TFLのソフトウェアはすべてオープンソースなので、Terra ClassicチェーンもInterchain Stationウォレットをフォークし、ウォレットレベルで「bech32問題」に対する独自のソリューションを開発、そして複数のソリューションをTFLに提示することに開発リソースを向けることを提案したいと思います。
私たちは、外部からのサポートを受動的に待つのではなく、相互運用性に対して積極的にアプローチすることができます。今言えることは、これを「どうやって」「いつ」「誰が」実現することができるかを考えることが、私が現在運営している「Terra Grants Foundation のプログラムの最優先事項でありこれを実現するために努力している」ということです。
よいお年をお迎えください。
『No Money, Mo' Problems?』の原文はこちら