Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
모든 Raydium 프로그램은 최소한 하나의 특권 역할을 가지고 있습니다. 프로그램을 업그레이드하거나, 새로운 설정을 만들거나, 프로토콜 수수료를 인출할 수 있는 키입니다. 이러한 역할이 할 수 있는 일을 최소화하고 지연이 있는 멀티시그 뒤에 배치하는 것이 손상된 관리자에 대한 주요 방어입니다. 이 페이지는 역할과 실제로 어떻게 보호되는지를 정리합니다.

프로그램별 역할

AMM v4

CPMM

생성자 수수료 수집은 특권 역할을 도입하지 않습니다. CollectCreatorFeePermissionless는 모든 지불자를 허용하고, 수령자 소유자를 PoolState.pool_creator로 제한하며, 두 목적지를 모두 해당 생성자의 정규 ATA로 제한합니다. 호출자는 누락된 ATA에 자금을 제공하고 스윕을 트리거할 수 있지만 수수료를 리디렉션할 수 없습니다.

CLMM

Permission PDA를 보유하면 해당 권한이 CreatePermissionedPool을 호출할 수 있습니다. 이미 정규 풀이 있는 쌍에 대해 추가 풀을 생성하며, 각각은 고유한 seed_index 파생 주소에 있습니다. 권한은 풀 생성에만 범위가 지정됩니다. 자금을 이동하거나, 수수료를 변경하거나, 기존 풀을 건드릴 수 없습니다. 이를 취소하면 (ClosePermissionPda) 권한이 추가 풀을 생성하지 못하지만 이미 생성된 풀은 그대로 유지됩니다. limit_order_admin은 의도적으로 좁은 운영 역할입니다. 오프체인 키퍼가 주문 소유자가 온라인 상태일 필요 없이 채워진 주문을 스윕할 수 있도록 존재합니다. 키퍼 키는 핫 (키퍼 VM에 있음)이며 위의 멀티시그와 독립적으로 회전됩니다. 구체적으로, 키퍼 권한은 다음으로 제한됩니다:
  • SettleLimitOrder — 주문의 채워진 출력을 주문의 제한 가격에서 소유자의 ATA로 푸시합니다.
  • CloseLimitOrder — 완전히 정산된 주문의 계정을 종료하여 렌트를 회수합니다 (렌트는 주문 소유자에게 갑니다).
OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder를 호출하거나, 풀 필드를 변경하거나, 다른 명령어에 서명할 수 없습니다. 이러한 확인은 명령어의 Accounts 구조에서 시드 및 has_one 제약 조건으로 온체인에서 적용됩니다. 손상된 키퍼는 최악의 경우 사용 불가능 (주문은 소유자가 직접 정산할 때까지 주차됨) 하거나 합법적으로 채워질 수 있는 주문을 순서대로 정산/종료할 수 있습니다. 소유자가 이미 승인한 곳 이외의 다른 곳으로 사용자 자금을 이동할 수 없습니다.

Farm v6

개별 팜에는 프로토콜 관리자가 없습니다. 각 팜의 생성자는 자신의 팜만 제어하며, 생성자의 권한은 제한됩니다 (사용자 스테이크를 압수할 수 없음, 스테이킹 민트를 변경할 수 없음).

LaunchLab

플랫폼 관리자 허용 목록은 자체 제한적입니다. 해당 플랫폼 아래의 런칭이 사용할 수 있는 GlobalConfig 계정을 제한합니다. 다른 플랫폼이나 기존 런칭 자금에 대한 권한을 부여하지 않습니다. 정규 위임된 권한 주소는 reference/program-addresses에 있습니다.

프로그램 업그레이드 권한

Raydium의 프로그램은 표준 Solana BPF Loader v3 업그레이드 메커니즘을 사용합니다. 모든 프로그램의 업그레이드 권한은 3/4 Squads 멀티시그입니다. 왜 3/4인가: 단일 손상이 불충분할 정도로 충분한 서명자; 합법적인 업그레이드를 조정하기에 충분히 적은 수. 4명의 권한자는 독립적이며, 핵심 팀 멤버가 보유한 에어갭 콜드 디바이스 서명자입니다. 순차 서명은 동일한 거래에 대한 병렬 승인을 방지합니다. 거래는 고정 만료 기간을 가집니다. 멀티시그 작업은 **Solana의 STRIDE 프로그램 (Asymmetric Research)**과의 파트너십으로 주기적으로 검토됩니다.

업그레이드 권한 제거

Raydium은 어떤 프로그램의 업그레이드 권한도 null로 설정하지 않았습니다. 프로토콜은 프로그램이 업그레이드 가능해야 한다는 원칙 하에 운영됩니다 (버그 패치, Token-2022 같은 확장 추가, 통합 드리프트 수정). 트레이드오프: 사용자는 3/4 멀티시그가 잘 검토된 업그레이드만 배포할 것이라고 신뢰합니다. 불변 대안을 원하는 사용자의 경우, 더 오래된 AMM v4 프로그램은 마지막 감사 이후 안정적입니다. 18개월 동안 업그레이드가 없습니다. 권한이 여전히 존재하지만 해당 코드 경로는 사실상 동결되어 있습니다.

AmmConfig 권한

각 새로운 AmmConfig 생성은 허가됩니다. 3/5 treasury 멀티시그가 새로운 수수료 계층과 틱 간격을 승인합니다. 기존 풀은 PDA로 AmmConfig를 참조합니다. 풀의 수수료 계층은 AmmConfig가 말하는 것입니다. 관리자가 기존 AmmConfig를 변경할 수 있나요? 기술적으로 그렇습니다. updateAmmConfig는 관리자가 호출할 수 있습니다. 실제로는 배포된 AmmConfigs의 수정을 피합니다. 해당 설정을 사용하는 모든 풀의 경제학을 조용히 변경하기 때문입니다. 프로토콜 정책은 변경 사항에 대해 새로운 AmmConfig를 생성하고 마이그레이션하는 것입니다. 관리자가 설정을 통해 프로토콜 수수료를 도용할 수 있나요? 아니요. AmmConfig는 수수료 매개변수를 포함하지만 프로토콜 수수료 수령자는 포함하지 않습니다. 그것은 풀당 별도의 불변 주소입니다.

프로토콜 수수료 청구

스왑 수수료의 일부 (일반적으로 설정에 따라 25 bps 스왑 수수료의 3–12 bps)는 프로토콜 수수료 금고에 누적됩니다. 멀티시그는 이러한 누적된 수수료를 인출할 수 있습니다. 사용자는 이로 인해 LP 잔액이 변경되는 것을 절대 보지 않습니다. 이것은 프로토콜의 사전 할당된 몫이지, LP 돈이 아닙니다.

팜 생성자 권한

Farms v6은 생성자에게 다음 권한을 제공합니다:
  • 보상 금고에 자금 조달 (더 많은 토큰 추가).
  • 일정 연장 (종료 시간을 나중으로 푸시).
  • 종료 시간 후 withdrawReward 호출하여 미사용 금고 잔액 회수.
팜 생성자는 할 수 없습니다:
  • 스테이크된 사용자 LP 인출.
  • 스테이킹 민트 변경.
  • 배출 비율을 소급하여 변경 (전방향만 setRewards를 통해).
  • 사용자 수확 동결.
악의적인 팜 생성자는 최악의 경우 금고에 자금을 부족하게 하여 팜이 고갈되도록 할 수 있습니다. 사용자의 원금 스테이크는 항상 안전합니다.

Squads 멀티시그 구성

Raydium은 서로 다른 위험 표면을 위해 두 개의 별도 Squads 멀티시그를 운영합니다. 둘 다 Squads Protocol UI를 통해 온체인에서 검사할 수 있습니다. 업그레이드 멀티시그의 운영 속성:
  • 24시간 타임락 모든 거래에. 오늘 승인된 업그레이드는 24시간 이전에 실행되지 않으며, 사용자가 대응할 시간을 제공합니다.
  • 에어갭 콜드 디바이스 서명. 콜드 디바이스는 네트워크 카드가 물리적으로 제거되어 있으며, 하드웨어 지갑에만 연결되고 별도의 핫 디바이스에서 QR 코드를 통해 거래 데이터를 읽습니다.
  • 순차 서명. 한 콜드 디바이스가 거래를 생성하고 서명한 후에만 다음 콜드 디바이스가 서명 프로세스를 시작할 수 있습니다. 동일한 거래에 대한 충돌하거나 병렬 서명을 방지합니다.
  • 거래 만료. 모든 거래는 고정 만료 기간을 가지므로 오래된 거래는 자동으로 무효화됩니다.
  • TOTP + 물리적 키 적용 거래 시작 및 온체인 브로드캐스트에 사용되는 핫 디바이스에서.
  • 공개 거래 큐. 누구나 Squads UI에서 보류 중인 업그레이드를 모니터링할 수 있습니다.
Treasury 멀티시그는 타임락이 없습니다. 범위가 더 좁고 일상적인 작업 (AmmConfigs 생성, 수수료 스윕)은 같은 날에 도착해야 합니다. Treasury 멀티시그는 또한 위의 프로그램별 테이블에 나열된 제한된 프로그램 관리자 권한을 보유합니다. 이것은 임시 배치이며 프로젝트의 보안 파트너와 주기적으로 검토됩니다.

온체인에서 권한 확인

프로그램의 현재 업그레이드 권한을 확인하는 가장 간단한 방법:
출력에는 다음이 포함됩니다:
Authority가 예상된 Squads 멀티시그 주소가 아니면 뭔가 잘못되었습니다. Raydium은 예상된 권한 주소를 reference/program-addresses에 게시합니다. AmmConfig / 풀 관리자 역할의 경우, 온체인 계정을 가져오고 디코딩합니다:

역사적 권한 변경

사용자 측 고려 사항

사용자/LP/통합자로서 무엇을 해야 하나요?
  1. 대규모 할당 전에 업그레이드 권한을 확인하세요. 문서화된 멀티시그와 일치하는지 확인합니다.
  2. 멀티시그 활동을 모니터링하세요. Squads UI는 보류 중인 거래를 표시합니다. 예정된 업그레이드는 변경에 동의하지 않으면 해제할 24시간을 제공합니다.
  3. 타임락 인식 상환 전략. 자동 컴파운더를 실행 중이면, 변경 중인 명령어를 요구하지 않는 해제 경로가 있는지 확인하세요.
  4. 프로그램 불변성을 가정하지 마세요. 모든 Raydium 프로그램은 업그레이드될 수 있습니다. 이를 계획하세요.

통합자를 위한 함정

1. 권한 주소 캐싱

업그레이드 권한이나 관리자 멀티시그 주소를 코드에 하드코딩하고 나중에 회전하면, 확인이 실패합니다. reference/program-addresses에서 런타임에 가져오거나 주기적으로 새로 고칩니다.

2. AmmConfigs가 안정적이라고 가정

새로운 AmmConfig는 언제든지 생성될 수 있습니다. 집계자/라우터는 전체 설정 목록을 주기적으로 (시간당 한 번이면 괜찮음) 다시 가져와야 합니다.

3. 팜 생성자 그리프 벡터

낮은 평판의 팜에 입금하는 경우, 생성자는 팜을 조기에 종료하고 보상 금고를 회수할 수 있습니다 (사용자가 아직 스테이크하지 않았다고 가정). 사용자가 스테이크한 후에는 비례 배분 자격이 프로그램에 의해 적용됩니다. 회수는 합리적인 종료 후 남은 것만 얻습니다.

포인터

출처: