이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
렌트는 수수료가 아니라 환불 가능한 보증금입니다. SIMD-0437은 모든 계정이 보유해야 하는 보증금을 5단계에 걸쳐 인하합니다. 각 단계 이전에 생성된 계정은 자신이 자금을 받은 잔액을 유지하므로, 각 단계마다 초과 자금이 발생합니다. SPL Token과 Token-2022 프로그램은 계정을 닫거나 토큰 잔액을 건드리지 않고
WithdrawExcessLamports를 통해 그 차이를 반환할 수 있습니다. 아무것도 만료되지 않습니다. 초과분은 이동하기로 선택할 때까지 자신의 계정에 그대로 있습니다.렌트가 실제로 무엇인지
Solana의 모든 계정은 차지하는 공간 크기에 따라 정해진 SOL 보증금을 보유합니다. 이는 소비되지 않으며, 계정이 닫힐 때 전액 반환됩니다. 공식은 다음과 같습니다:ACCOUNT_STORAGE_OVERHEAD는 페이로드와 관계없이 모든 계정이 지불하는 고정 128바이트입니다. lamports_per_byte는 SIMD-0437이 변경하는 네트워크 전체 상수입니다.
표준 165바이트 SPL 토큰 계정은 따라서 항상 (128 + 165) × 6,960 = 2,039,280 램포트의 비용이 들었습니다. 이는 지갑이 관련 토큰 계정을 열 때마다 차감되는 약 0.00203928 SOL입니다.
SIMD-0437이 변경하는 것
SIMD-0437은lamports_per_byte를 6,960에서 696으로 줄입니다. 이는 90% 감소이며, 5개의 별도 기능 게이트를 통해 롤아웃되어 검증자가 상태 증가 효과를 한 번에 하나씩 흡수할 수 있습니다.
단계 1은 2026년 9월 3일 메인넷에서 활성화되었습니다. 단계 2는 같은 날 테스트넷에 도달했으며 2026년 중순 메인넷에 예상됩니다. 단계 3~5는 2026년 11월경 예상되는 Agave 4.4를 위해 보류 중입니다. 일정은 변경될 수 있습니다. 재단은 상태 증가가 잘못되면 롤아웃을 일시 중지할 것이라고 밝혔으므로, 클러스터에서 라이브 값을 읽고 하드코딩하지 마세요.
SIMD-0437은 SIMD-0194에 따라 달라집니다. SIMD-0194는 렌트 면제 임계값을 폐기하여 “기능 활성화 시 렌트 매개변수를 설정할 때 불필요한 부동소수점 연산을 피합니다”. 실제로
Rent 시스바는 이제 lamports_per_byte_year = 6,333과 exemption_threshold = 1.0을 전달하며, 6,960을 생성한 이전의 3,480 × 2 분할 대신입니다. 이 두 필드를 직접 곱하지 마세요. getMinimumBalanceForRentExemption을 호출하고 클러스터가 답하도록 하세요.기존 계정이 너무 많이 보유하는 이유
상수를 낮추면 계정이 필요로 하는 것이 변합니다. 계정이 가진 것은 변하지 않습니다. 6,960 램포트/바이트로 자금을 받은 계정은 단계 1이 활성화된 후에도 그 잔액을 유지하므로, 초과 자금은:293 × (6,960 − 6,333) = 183,711 램포트, 즉 계정당 약 0.000184 SOL입니다. 확장을 포함하는 Token-2022 계정은 더 크므로 비례적으로 더 많이 보유합니다. 182바이트 계정은 310 × 627 = 194,370 램포트만큼 초과 자금이 있습니다.
개별적으로는 무시할 수 있는 양입니다. 수년에 걸쳐 수백 개의 토큰과 상호작용한 지갑은 이의 의미 있는 배수를 보유하고 있으며, 단계 5까지 각 165바이트 계정은 최소값 위에 1,835,352 램포트(약 0.00184 SOL)를 보유합니다.
어떤 계정이 반환할 수 있는지
프로그램 소유 계정의 초과 램포트는 해당 프로그램에서만 이동할 수 있습니다. 계정을 닫지 않고 렌트를 회수할 수 있는지 여부는 전적으로 어떤 프로그램이 소유하는지에 따라 달라집니다.SPL Token과 Token-2022
둘 다
WithdrawExcessLamports를 노출합니다. 계정은 열린 상태로 유지되고, 토큰 잔액을 유지하며, 단순히 현재 최소값으로 떨어집니다.그 외 모든 것
동등한 명령어가 없습니다. 렌트는 계정이 닫힐 때만 해제됩니다. 이는 자체 전제 조건이 있는 파괴적인 작업이며, 렌트 스윕이 아닙니다.
래핑된 SOL 계정은 유일한 토큰 프로그램 예외입니다. 이들의 램포트 잔액 은 토큰 잔액이므로, 두 프로그램 모두
TokenError::NativeNotSupported로 거부합니다. 두 프로그램 모두 대신 UnwrapLamports(판별자 45)를 노출합니다. 이는 spl-token-interface에서 WithdrawExcessLamports와 함께 있으므로, 레거시 프로그램도 Token-2022뿐만 아니라 이를 가지고 있습니다. @solana/spl-token은 0.4.15부터 createUnwrapLamportsInstruction을 제공합니다. 일반 렌트 스윕에서 네이티브 계정을 건너뛰고 의도적으로 처리하세요. 이를 안전하게 수행하는 패턴은 Raydium 자체 프로그램이 사용하는 것입니다. 아래 참조.
WithdrawExcessLamports 명령어
두 토큰 프로그램의 명령어 열거형에서 판별자 38입니다. spl-token-interface에서:
- 금액을 받지 않습니다. 프로그램이
source.lamports − rent.minimum_balance(source.data_len())을 직접 계산하므로, 계정을 현재 최소값 아래로 가져갈 수 없으며, 나중의 단계가 활성화되면서도 올바르게 유지됩니다. - 아무것도 닫지 않습니다. 계정은 데이터, 소유자, 토큰 잔액을 유지합니다.
- 멱등성입니다. 이미 최소값에 있는 계정에 대해 실행하면 0 램포트를 이동하고 성공합니다.
명령어 구축
@solana/spl-token은 이에 대한 빌더를 내보내지 않습니다. 0.4.15 기준으로 열거형 항목은 여전히 주석 처리되어 있습니다 — 그리고 업스트림은 식별자를 “al”이 더 붙은 WithdrawalExcessLamports로 표기하므로 그 이름으로 grep하세요:
programId를 전달하세요. SPL Token과 Token-2022 명령어는 트랜잭션을 공유할 수 있지만, 각각은 소스 계정을 소유한 프로그램으로 주소 지정되어야 합니다.
메인넷에서 측정한 결과, 명령어는 SPL Token 프로그램에서 270 컴퓨트 유닛, Token-2022에서 1,414 컴퓨트 유닛의 비용이 듭니다. 어느 쪽이든 무시할 수 있습니다. 실제 제약은 컴퓨트가 아니라 트랜잭션 크기입니다.
회수 가능한 계정 찾기
하드코딩된 비율에서 초과분을 도출하지 마세요. 클러스터에 각 계정이 지금 필요로 하는 것을 물어보세요. 그러면 같은 코드가 5단계 모두를 통해 계속 작동합니다:getMinimumBalanceForRentExemption(0)은 유용한 부채널입니다. 정확히 128 × lamports_per_byte를 반환하므로, 128로 나누면 Rent 시스바를 파싱하지 않고도 클러스터가 어느 롤아웃 단계에 있는지 알 수 있습니다.
배치: 한 트랜잭션에 몇 개가 들어가나요
각WithdrawExcessLamports 명령어는 하나의 고유한 쓰기 가능 계정 키(컴파일된 메시지에서 32바이트)와 약 7바이트의 명령어 인코딩을 기여합니다. 목적지, 권한, 수수료 지불자는 모두 같은 지갑이므로, 그들 사이에 하나의 키만 비용이 듭니다.
1,232바이트 트랜잭션 제한에 대해, 컴퓨트 예산 명령어와 블록해시를 계산하면 대략 25개의 명령어가 들어갑니다. 트랜잭션당 20개가 안전한 작동 수이며, Raydium 자체 구현이 사용하는 것입니다. 116개의 회수 가능한 계정이 있는 지갑은 따라서 6개의 트랜잭션으로 스윕하며, 각각 5,000 램포트의 기본 수수료가 있습니다.
경제학을 주목하세요. 수수료는 계정당이 아니라 트랜잭션당 청구됩니다. 더 적은 계정을 회수해도 비용이 덜 들지 않으므로, 부분 스윕은 추가 왕복을 정당화하기 위해 거의 가치가 없습니다.
Raydium을 통한 회수
raydium.io/reclaim-rent 페이지는 연결된 지갑의 SPL Token과 Token-2022 계정을 스캔하고, 프로그램별로 분할된 총액을 표시하며, 배치 트랜잭션에서 모든 것을 스윕합니다. 스캔은 읽기 전용입니다. 모든 렌트 회수를 누를 때까지 서명이 없습니다. 페이지는 의도적으로 토큰 계정만 다룹니다. 렌트를 닫아야만 해제할 수 있는 계정 유형은 사용 불가능으로 나열되지 않고 제외됩니다. 계정을 닫는 것은 다른 파괴적인 작업이기 때문입니다.SDK 데모에서 회수
버전 배너. 이 데모는 Solana mainnet-beta에 대해
@raydium-io/raydium-sdk-v2@0.2.64-alpha를 대상으로 하며, 2026년 9월에 검증되었습니다. raydium-sdk-V2-demo 저장소 자체는 현재 0.2.62-alpha를 설치하며, 둘은 여기서 상호 교환 가능합니다. WithdrawExcessLamports는 손으로 인코딩되며 SDK 버전과 무관합니다. SDK는 트랜잭션 구축과 배치에만 사용됩니다.raydium-sdk-V2-demo/src/rent의 두 스크립트:
reclaimRent.ts는 트랜잭션당 20개 계정으로 배치하고 모든 배치를 한 번에 서명합니다:
simulateTransaction을 accounts.addresses와 함께 사용하면 실행 후 램포트 잔액이 반환되며, 이는 산술이 클러스터가 실제로 수행할 것과 일치하는지 확인하는 가장 저렴한 방법입니다.
Raydium 프로그램이 자신의 측에서 스윕하는 것
지갑은 감소가 램포트를 해제하는 유일한 장소가 아닙니다. 모든 풀도 렌트를 보유합니다. 볼트, LP 민트, 그리고 모두 이전 비율로 자금을 받은 프로그램 소유 상태 계정입니다. 그 렌트는 프로토콜에 속하며, LP에는 속하지 않습니다. 계정을 생성한 사람이 지불했으며, 풀의 준비금의 일부가 아니며, 곡선에 들어가지 않았습니다. 세 프로그램은 2026년 9월 9일에 이를 반환하기 위한 관리자 명령어를 얻었습니다:
주소는
reference/program-addresses에 있습니다. CLMM과 Stable AMM은 그 릴리스의 일부가 아니었습니다.
이것은 LP나 거래자에게 영향을 주지 않습니다. 이 명령어는 램포트만 이동합니다. 토큰 잔액, 계정 데이터, 소유자, 풀 상태, LP 공급, 수수료 카운터, 곡선은 모두 건드리지 않으며, 그 중 어느 것도 계정을 닫을 수 없습니다. 스윕 전후의 스왑 견적은 동일합니다. 사용자 측 작업, 옵트인, 마감일이 없습니다.
각 프로그램이 처리하는 세 가지 계정 형태
모두 소스 계정의 소유자에 대한 동일한 디스패치를 따릅니다:- 프로그램 권한 PDA가 소유한 토큰 계정 또는 민트 — 프로그램은 토큰 프로그램의
WithdrawExcessLamports(판별자 38)를 CPI하며, 해당 PDA로 서명합니다. - 래핑된 SOL 볼트 —
WithdrawExcessLamports는 네이티브 계정을 거부하므로, 프로그램은 먼저SyncNative를 수행합니다(기부된 초과분을 래핑된amount로 접습니다). 래핑된 금액이 정확히 얼마나 증가했는지 측정하고, 그 델타에 대해UnwrapLamports를 수행한 다음, 래핑된 잔액이 동기화 전 값으로 돌아갔는지 확인합니다. 그 확인이 실패하면 전체 명령어는LamportsCalculateError로 되돌립니다. 이것이 SOL 측 풀 볼트가 스윕을 통해 전체 유동성을 유지하는 이유입니다. - 프로그램 소유 상태 계정 —
AmmInfo,PoolState,AmmConfig,ObservationState,PlatformConfig등. 프로그램은 자신의 계정을 직접 차감할 수 있으므로, CPI 없이 잔액을rent.minimum_balance(data_len)으로 이동합니다.
이 경로는 크레이트 버전이 아니라 배포된 토큰 프로그램에 따라 달라집니다. 세 프로그램 모두 토큰 명령어를 손으로 인코딩합니다.
WithdrawExcessLamports의 경우 단일 38 바이트, UnwrapLamports의 경우 45 플러스 COption<u64>. 그리고 소스 계정을 소유한 토큰 프로그램으로 보냅니다. 두 명령어 모두 현재 메인넷 SPL Token과 Token-2022 프로그램에 존재합니다. 이전 번들 SPL Token 빌드를 실행하는 로컬 검증자 또는 테스트 하네스는 이를 구현하지 않으며, 스윕은 Raydium 프로그램의 어떤 것도 아닌 알 수 없는 판별자에서 실패합니다. 메인넷 복제 토큰 프로그램에 대해 이 경로를 테스트하세요.여전히 제자리에서 회수할 수 없는 것
CLMM 포지션의 렌트는 이 모든 것에 의해 변경되지 않습니다. 위의 표가 말하듯이 포지션이 닫힐 때 돌아옵니다. LaunchLab 기본 민트도 마찬가지입니다. 초기화 명령어는 공급을 민트하는 같은 호출에서MintTokens를 취소하므로, 어떤 키도 그 민트에 대해 WithdrawExcessLamports에 서명할 수 없으며 그 렌트는 설계상 고착됩니다.
지금 회수할지 기다릴지
둘 다 괜찮으며, 어느 쪽이든 차이는 작습니다:- 초과분은 어디로도 가지 않습니다. 자신의 계정에 그대로 있습니다. 아무것도 만료되지 않고, 아무것도 스윕되지 않으며, 마감일이 없습니다.
- 기다리면 복합됩니다. 각 단계는 같은 계정에서 더 많이 해제하며, 단계 5 이후의 한 번의 스윕은 오늘 한 번의 스윕과 같은 수수료가 듭니다.
- 지금 회수해도 나중 단계를 포기하지 않습니다. 오늘 스윕한 계정은 단순히 현재 최소값에 있습니다. 다음 단계는 다시 초과 자금이 되고 다시 스윕할 수 있습니다.
추가 읽기
SIMD-0437
제안 자체 — 5개의 기능 게이트와 감소를 단계적으로 진행하는 근거입니다.
감소된 렌트
Solana의 롤아웃 페이지: 현재 단계, 일정, 새 계정에 대한 변경 사항입니다.
렌트 감소: 데이터 기반 분석
경제학과 단계적 롤아웃이 관리하도록 설계된 상태 증가 위험입니다.
계정 모델
Solana 계정이 어떻게 자금을 받고, 소유되고, 닫히는지 — 위의 모든 것에 대한 배경입니다.

