Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Raydiumのすべてのプログラムには、少なくとも1つの特権ロール(プログラムをアップグレードしたり、新しい設定を作成したり、プロトコル手数料を引き出したりできるキー)があります。これらのロールが実行できることを最小化し、遅延を伴うマルチシグの背後に配置することが、侵害された管理者に対する主要な防御です。このページでは、ロールとそれらが実際にどのように保護されているかをカタログ化しています。

プログラム別のロール

AMM v4

CPMM

クリエーター手数料の収集は特権ロールを導入しません。CollectCreatorFeePermissionlessは任意のペイヤーを受け入れ、受取人オーナーをPoolState.pool_creatorに制限し、両方の宛先をそのクリエーターの正規ATAに制限します。呼び出し元は不足しているATAに資金を提供し、スイープをトリガーできますが、手数料をリダイレクトすることはできません。

CLMM

Permission PDAを保有する権限はCreatePermissionedPoolを呼び出すことができます — 既に正規のプールを持つペアに対して追加のプールを作成し、各々は異なるseed_index派生アドレスにあります。権限はプール作成のみにスコープされます。資金を移動したり、手数料を変更したり、既存のプールに触れることはできません。それを失効させる(ClosePermissionPda)と、権限はさらなるプール作成を停止しますが、既に作成されたプールは変わりません。 limit_order_adminは意図的に狭い運用ロールです。オフチェーンキーパーが注文の所有者がオンラインである必要なく、満たされたオーダーをスイープできるようにするために存在します。キーパーキーはホット(キーパーVM上に存在)で、上記のマルチシグとは独立して回転します。具体的には、キーパー権限は以下に限定されます:
  • SettleLimitOrder — 満たされたオーダーの出力を所有者の ATAにオーダーのリミット価格で押し出します。
  • CloseLimitOrder — 完全に決済されたオーダーのアカウントをクローズしてレント回収(レントは注文所有者に行く)。
OpenLimitOrderIncreaseLimitOrderDecreaseLimitOrderを呼び出したり、プールフィールドを変更したり、他の命令に署名することはできません — これらのチェックはオンチェーンで命令のAccounts構造体のシードとhas_one制約によって強制されます。侵害されたキーパーは最悪の場合、利用不可(オーダーは所有者が自分で決済するまで駐車)または正当に満たされたオーダーを順序外で決済することができます。ユーザー資金を所有者が既に認可した場所以外に移動することはできません。

Farm v6

個別のファームにはプロトコル管理者がいません — 各ファームのクリエーターはそのファームのみを制御し、クリエーターの権限は制限されています(ユーザーステークを没収できない、ステーキングミントを変更できない)。

LaunchLab

プラットフォーム管理者の許可リストは自己制限的です。そのプラットフォーム下のローンチが使用できるGlobalConfigアカウントを制限します。他のプラットフォームまたは既存のローンチ資金に対する権限を付与しません。正規の委譲権限アドレスはreference/program-addressesに存在します。

プログラムアップグレード権限

Raydiumのプログラムは標準的なSolana BPF Loader v3アップグレードメカニズムを使用します。すべてのプログラムのアップグレード権限は3/4 Squadsマルチシグです。 なぜ3/4か:単一の侵害が不十分なほど十分なサイナー、正当なアップグレードの調整が扱いやすいほど十分に少ないサイナー。4つの権限は独立した、エアギャップされたコールドデバイスサイナーで、コアチームメンバーによって保有されています。順序付きサイニングは同じトランザクションの並列承認を防ぎます。トランザクションは固定の有効期限ウィンドウを持ちます。マルチシグ操作は**Solanaの STRIDE Program(Asymmetric Research)**とのパートナーシップで定期的にレビューされます。

アップグレード権限の削除

Raydiumはどのプログラムのアップグレード権限もnullに設定していません。プロトコルはプログラムがアップグレード可能である必要があるという原則の下で動作します(バグをパッチ、Token-2022のような拡張機能を追加、統合ドリフトを修正するため)。トレードオフ:ユーザーは3/4マルチシグが十分にレビューされたアップグレードのみをデプロイすることを信頼します。 不変の代替案を望むユーザーのために、古いAMM v4プログラムは最後の監査以来安定しています。18ヶ月間ゼロアップグレード。そのコードパスは権限がまだ存在していても事実上凍結されています。

AmmConfig権限

各新しいAmmConfig作成は許可されています — 3/5 treasury マルチシグが新しい手数料ティアとティック間隔を認可します。既存のプールはPDAでそのAmmConfigを参照します。プールの手数料ティアはAmmConfigが言うことです。 管理者は既存のAmmConfigを変更できますか? はい、技術的には。updateAmmConfigは管理者によって呼び出し可能です。実際には、デプロイされたAmmConfigの変更は、そのコンフィグを使用するすべてのプールの経済学を静かに変更するため、回避されます。プロトコルポリシーは、変更のために新しいAmmConfigを作成し、移行することです。 管理者はコンフィグ経由でプロトコル手数料を盗むことができますか? いいえ — AmmConfigには手数料パラメータが含まれていますが、プロトコル手数料受取人は含まれていません。それはプールごとの別の不変アドレスです。

プロトコル手数料請求

スワップ手数料の一部(通常、25 bpsスワップ手数料の3~12 bps、設定によって異なる)がプロトコル手数料ボルトに蓄積されます。マルチシグはこれらの蓄積された手数料を引き出すことができます。ユーザーはこれからLP残高の変更を見ることはありません — それはプロトコルの事前割り当てシェア、LP資金ではありません。

ファームクリエーター権限

Farms v6はクリエーターに以下の権限を与えます:
  • リワードボルトに資金を提供(より多くのトークンを追加)。
  • スケジュールを延長(終了時刻を後に押す)。
  • 終了時刻後にwithdrawRewardを呼び出して、未使用のボルト残高を回収。
ファームクリエーターはできません
  • ステークされたユーザーLPを引き出す。
  • ステーキングミントを変更する。
  • 排出レートを遡及的に変更(setRewards経由の前向きのみ)。
  • ユーザーハーベストをフリーズする。
悪意のあるファームクリエーターは最悪の場合、ボルトに資金を不足させてファームが枯渇するようにすることができます。ユーザーのプリンシパルステークは常に安全です。

Squadsマルチシグ設定

Raydiumは異なるリスク表面のために2つの別々のSquadsマルチシグを操作します。両方ともSquads Protocol UIを介してチェーン上で検査できます。 アップグレードマルチシグの運用プロパティ:
  • 24時間タイムロック任意のトランザクション上。今日承認されたアップグレードは24時間以前に実行されず、ユーザーが対応する時間を与えます。
  • エアギャップされたコールドデバイスサイニング。 コールドデバイスはネットワークカードが物理的に削除されています。ハードウェアウォレットにのみ接続し、別のホットデバイスからQRコード経由でトランザクションデータを読み取ります。
  • 順序付きサイニング。 1つのコールドデバイスがトランザクションを生成して署名した後にのみ、次のコールドデバイスはそのサイニングプロセスを開始できます — 同じトランザクションの競合または並列署名を防ぎます。
  • トランザクション有効期限。 すべてのトランザクションは固定の有効期限ウィンドウを持つため、古いトランザクションは自動的に無効化されます。
  • TOTP +物理キー強制トランザクション開始とオンチェーン放送に使用されるホットデバイス上。
  • 公開トランザクションキュー。 誰でもSquads UIで保留中のアップグレードを監視できます。
Treasury マルチシグにはタイムロックがありません — そのスコープはより狭く、ルーチン操作(AmmConfigの作成、手数料のスイープ)は同日に着地する必要があります。Treasury マルチシグはまた、上記のプログラムごとのテーブルにリストされている限定的なプログラム管理者権限を保有しています。これは暫定的な取り決めであり、プロジェクトのセキュリティパートナーと定期的にレビューされます。

チェーン上の権限を検証

プログラムの現在のアップグレード権限を検証する最も簡単な方法:
出力には以下が含まれます:
Authorityが予想されるSquadsマルチシグアドレスでない場合、何か問題があります。Raydiumは予想される権限アドレスをreference/program-addressesで公開しています。 AmmConfig / プール管理者ロールの場合、オンチェーンアカウントをフェッチしてデコード:

歴史的な権限変更

ユーザー側の考慮事項

ユーザー/LP/インテグレーターとしてあなたは何をすべきですか?
  1. 大規模な割り当ての前にアップグレード権限を確認。 ドキュメント化されたマルチシグと一致することを確認。
  2. マルチシグアクティビティを監視。 Squads UIは保留中のトランザクションを表示します。スケジュールされたアップグレードは変更に同意しない場合、アンワインドする24時間を与えます。
  3. タイムロック対応の償却戦略。 オートコンパウンダーを実行している場合、アンワインドパスが変更されている命令を必要としないことを確認。
  4. プログラムの不変性を仮定しないでください。 すべてのRaydiumプログラムはアップグレード可能です。それに対して計画してください。

インテグレーターの落とし穴

1. 権限アドレスのキャッシング

アップグレード権限または管理者マルチシグアドレスをコードにハードコードし、後で回転した場合、検証が失敗します。reference/program-addressesから実行時にフェッチするか、定期的にリフレッシュしてください。

2. AmmConfigが安定していると仮定

新しいAmmConfigはいつでも作成できます。アグリゲーター/ルーターは定期的に(1時間ごとで問題ない)完全な設定リストを再フェッチする必要があります。

3. ファームクリエーターの悲しみベクトル

低評判のファームに預金している場合、クリエーターはファームを早期に終了し、リワードボルトを回収できます(ユーザーがまだステークしていないと仮定)。ユーザーがステークした後、比例配分の権利はプログラムによって強制されます。回収は合理的な終了後の残りのみを取得します。

ポインター

ソース: