メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Raydium の全プログラムには、少なくとも 1 つの特権ロールがあります。プログラムをアップグレードしたり、新しいコンフィグを作成したり、プロトコル手数料を引き出したりできるキーです。これらのロールが行える操作を最小化し(さらに遅延付きマルチシグで保護する)ことが、管理者キーが侵害された場合の主要な防衛策です。このページでは各ロールとその実際の保護方法をまとめています。

プログラム別ロール一覧

AMM v4

ロール権限アドレス実行できること
プログラムアップグレードSquads マルチシグ(3/4)新しいプログラムバイトコードのデプロイ
プール管理者Treasury マルチシグ(3/5)プールのステータス切替、既存プールの手数料更新

CPMM

ロール権限アドレス実行できること
プログラムアップグレードSquads マルチシグ(3/4)新しいプログラムバイトコードのデプロイ
AmmConfig 管理者Treasury マルチシグ(3/5)新規 AmmConfig(手数料ティア)の作成、既存の切替
プール作成手数料の受取先Treasury マルチシグ(3/5)プール作成時の一回限りの手数料の受取

CLMM

ロール権限アドレス実行できること
プログラムアップグレードSquads マルチシグ(3/4)新しいプログラムバイトコードのデプロイ
AmmConfig 管理者Treasury マルチシグ(3/5)AmmConfig の作成・変更
DynamicFeeConfig 管理者Treasury マルチシグ(3/5)CreateDynamicFeeConfig / UpdateDynamicFeeConfigCreateCustomizablePool 呼び出しが選択できる動的手数料ティアの調整
limit_order_admin(プログラム全体)オフチェーンの運用ホットウォレット(マルチシグではない)オーナーに代わってリミットオーダーを決済・クローズする。キーパーキーはプログラム全体で単一の定数(メインネットとデブネットで異なる値)であり、SettleLimitOrder / CloseLimitOrder では signer == limit_order.owner || signer == limit_order_admin::ID でチェックされる。出力は常に元のオーナーの ATA に送られる。キーパーは資金のリダイレクト、オーダーの変更、新規オーダーの発行はできない。
limit_order_admin は意図的に権限を絞った運用ロールです。オフチェーンのキーパーが、オーナーがオンラインでなくても約定済みオーダーをスイープできるように設けられています。キーパーキーはホット(キーパー VM 上に存在)であり、上記のマルチシグとは独立してローテーションされます。キーパー権限が行える操作は具体的に以下のみです。
  • SettleLimitOrder — オーダーの指値価格で、約定済み出力をオーナーの ATA に送付する。
  • CloseLimitOrder — 完全決済済みオーダーのアカウントをクローズしてレントを回収する(レントはオーダーオーナーに送られる)。
OpenLimitOrderIncreaseLimitOrderDecreaseLimitOrder の呼び出し、プールフィールドの変更、その他の命令への署名はできません。これらの制約は命令の Accounts 構造体内のシードおよび has_one 制約によってオンチェーンで強制されます。キーパーが侵害された場合、最悪でもキーパーが利用不能になる(オーダーはオーナー自身が決済するまで保留状態になる)か、正当に約定可能なオーダーを順序外で決済・クローズするにとどまります。オーナーがすでに承認した送先以外にユーザー資金を移動させることはできません。

Farm v6

ロール権限アドレス実行できること
プログラムアップグレードSquads マルチシグ(3/4)新しいプログラムバイトコードのデプロイ
ファーム作成者(各ファーム)ファームの作成者ウォレット報酬ボールトへの資金追加、スケジュール延長、未使用報酬の回収
個々のファームにプロトコル管理者は存在しません。各ファームの作成者は自身のファームのみを制御でき、その権限は制限されています(ユーザーのステークの引き出しや、ステーキングミントの変更はできません)。

LaunchLab

ロール権限アドレス実行できること
プログラムアップグレードSquads マルチシグ(3/4)新しいプログラムバイトコードのデプロイ
ローンチ作成者(各ローンチ)ローンチの作成者ウォレットグラデュエーション後の作成者手数料の回収、未グラデュエーションのカーブ残余の引き出し
ローンチにはカーブの変更や調達資金の差し押さえができるプロトコル管理者は存在しません。

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

Raydium のプログラムは標準的な Solana の BPF Loader v3 アップグレードメカニズムを使用しています。全プログラムのアップグレード権限は 3/4 Squads マルチシグが持ちます。 3/4 を採用している理由:1 人の署名者が侵害されても不十分な水準を確保しつつ、正当なアップグレードの調整が現実的に行える人数です。4 つの権限はそれぞれ独立したエアギャップ・コールドデバイス署名者であり、コアチームメンバーが保有しています。順次署名により同一トランザクションへの並列承認を防ぎ、トランザクションには固定の有効期限が設けられています。マルチシグの操作は Solana の STRIDE プログラム(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 の資金ではありません。

ファーム作成者の権限

Farm v6 では、作成者に以下の権限が与えられます。
  • 報酬ボールトへの資金追加(トークンの追加)
  • スケジュールの延長(終了時刻を後ろにずらす)
  • 終了時刻後に withdrawReward を呼び出して未使用ボールト残高を回収
ファーム作成者ができないこと
  • ステーキング済みユーザー LP の引き出し
  • ステーキングミントの変更
  • 排出レートの遡及的変更(setRewards による前向きの変更のみ可)
  • ユーザーのハーベストの凍結
悪意のあるファーム作成者が引き起こせる最悪の事態は、ボールトの資金が不足してファームが枯渇することです。ユーザーの元本ステークは常に安全です。

Squads マルチシグの設定

Raydium は異なるリスク面に対応するため、2 つの独立した Squads マルチシグを運用しています。いずれも Squads Protocol の UI からオンチェーンで確認できます。
マルチシグ閾値タイムロックスコープ
プログラムアップグレード3/424 時間AMM v4、CPMM、CLMM、LaunchLab、Lock、AMM Routing、Stable Swap、およびレガシーの Farm/Staking プログラムに対する新しいプログラムバイトコードのデプロイを唯一担当する権限。app.squads.so/.../FytDr…ceZQK で確認可能。
Treasury3/5なしTreasury 資産、プロトコル収益、運営経費。現時点では AmmConfig の作成、プロトコル手数料のスイープ、プールパラメータの設定など、Raydium の限定的なプログラム管理権限も保有。v3.squads.so/dashboard/RVha…dHdtYz09 で確認可能。
アップグレードマルチシグの運用特性:
  • 24 時間タイムロック。すべてのトランザクションに適用。本日承認されたアップグレードは 24 時間後以降にしか実行されないため、ユーザーは対応する時間があります。
  • エアギャップ・コールドデバイス署名。 コールドデバイスはネットワークカードが物理的に取り外されており、ハードウェアウォレットのみに接続し、別のホットデバイスから QR コードでトランザクションデータを読み取ります。
  • 順次署名。 1 台のコールドデバイスがトランザクションを生成・署名して初めて、次のコールドデバイスが署名プロセスを開始できます。これにより同一トランザクションへの競合・並列署名を防ぎます。
  • トランザクション有効期限。 すべてのトランザクションに固定の有効期限が設定されており、古いトランザクションは自動的に無効になります。
  • TOTP + 物理キーの強制。 トランザクション起動とオンチェーンブロードキャストに使用するホットデバイスで適用。
  • パブリックトランザクションキュー。 Squads UI で保留中のアップグレードを誰でも監視できます。
Treasury マルチシグにはタイムロックがありません。そのスコープは限定的であり、AmmConfig の作成や手数料のスイープなどのルーティン操作は同日中に実行する必要があるためです。Treasury マルチシグは上記のプログラム別テーブルに記載された限定的なプログラム管理権限も保有しており、これは暫定的な取り決めとしてプロジェクトのセキュリティパートナーとともに定期的にレビューされます。

オンチェーンでの権限確認

プログラムの現在のアップグレード権限を確認する最もシンプルな方法:
solana program show <PROGRAM_ID>
出力には以下が含まれます:
Program Id:          CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F
Owner:               BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: <ProgramDataPDA>
Authority:           <EXPECTED_MULTISIG_ADDRESS>
Last Deployed In Slot: <slot>
Data Length: <n> bytes
Authority が期待される Squads マルチシグアドレスでない場合、何らかの問題があります。Raydium は期待される権限アドレスを reference/program-addresses で公開しています。 AmmConfig / プール管理者ロールについては、オンチェーンアカウントを取得してデコードしてください:
const config = await raydium.cpmm.getAmmConfig(configPda);
console.log("AmmConfig admin:", config.admin.toBase58());
// Expected: 3/5 treasury multisig.

権限変更の履歴

日付プログラム変更内容
2022-12AMM v4インシデント後、アップグレード権限をシングルシグから 3/4 マルチシグに移行
2023-02全プログラムすべての運用ロールを 3/5 Treasury マルチシグに統一
2023-11CLMM露出を減らすため、報酬専用操作用の第二マルチシグを追加
2024-05CPMM初日からマルチシグ権限でデプロイ

ユーザー側の考慮事項

ユーザー・LP・インテグレーターとして何をすべきか:
  1. 大きな配分を行う前にアップグレード権限を確認する。 公式ドキュメントに記載されたマルチシグと一致しているか確認してください。
  2. マルチシグのアクティビティを監視する。 Squads UI では保留中のトランザクションを確認できます。スケジュールされたアップグレードには 24 時間の猶予があるため、変更に同意できない場合はポジションを解消する時間があります。
  3. タイムロックを考慮した解約戦略。 オートコンパウンダーを運用している場合、解約パスが変更中の命令を必要としないことを確認してください。
  4. プログラムの不変性を前提にしない。 Raydium の全プログラムはアップグレード可能です。それを前提に計画を立ててください。

インテグレーター向けの注意点

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

アップグレード権限や管理者マルチシグアドレスをコードにハードコードしていて後でローテーションされると、検証が失敗します。reference/program-addresses から実行時に取得するか、定期的に更新してください。

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

新しい AmmConfig はいつでも作成される可能性があります。アグリゲーター・ルーターはコンフィグリスト全体を定期的に再取得してください(1 時間ごとで十分です)。

3. ファーム作成者による攻撃ベクター

信頼性の低いファームに入金する場合、作成者がファームを早期に終了して報酬ボールトを回収する可能性があります(ユーザーがまだステークしていない場合)。一度ユーザーがステークすると、プログラムによって按分権利が強制されます。回収できるのは合理的な終了後の残余分のみです。

関連リンク

参考リソース: