본문으로 건너뛰기
0%

Solana 프로그램의 rent를 계산하는 방법

Daniel Idowu headshot

작성자 Daniel Idowu

2023년 1월 25일에 게시됨3분 읽기

Solana 블록체인에서의 프로그램 실행은 트랜잭션으로 시작됩니다. 블록체인은 트랜잭션의 디지털 원장을 네트워크 전체에 복제하고 배포하는 컴퓨터 시스템 네트워크로 구성됩니다. 체인의 각 블록은 여러 개의 트랜잭션으로 구성되며, 각 참여자의 원장은 블록체인에서 발생하는 모든 새로운 트랜잭션의 사본을 받습니다.

이 모든 데이터를 별도의 계정에 저장하는 것은 무료가 아니며 일정 비용이 발생합니다. 이 글에서는 Solana의 rent 개념과 이를 계산하는 방법에 대해 안내합니다.

Solana의 rent란 무엇인가?

Rent는 모든 Solana 계정이 블록체인에 데이터를 저장하기 위해 지불하는 수수료이며, 소액 결제에 사용되는 SOL의 최소 단위인 Lamport로 표시됩니다. Rent 수수료는 계정의 저장 공간 크기를 기준으로 계산됩니다. Rent가 높을수록 저장되는 데이터의 양이 많다는 뜻입니다.

Solana 노드 클러스터는 이 데이터를 능동적으로 유지해야 하므로, 계정과 그 데이터를 블록체인상에 계속 유지하기 위해서는 시간 및 공간 기반의 수수료가 필요합니다. 모든 Solana 계정은 rent exemption(rent 면제) 자격을 유지하고 Solana 블록체인에 계속 남아있기 위해 충분한 Lamport 잔액을 유지해야 합니다. Lamport 보유량이 적은 것으로 확인된 계정은 가비지 컬렉터에 의해 네트워크에서 제거됩니다.

Rent 수수료는 언제 징수되는가?

Rent 수수료는 일반적으로 각 epoch가 끝날 때 징수됩니다. Epoch란 리드 밸리데이터가 트랜잭션 블록을 계속 생성할 수 있는 기간을 의미합니다. Solana Explorer에는 가장 최근 epoch와 이전 epoch의 데이터가 포함되어 있습니다. Rent는 계정이 트랜잭션에 의해 참조될 때도 지불됩니다.

각 슬롯이 끝날 때, 계정이 징수한 rent 중 일부는 소각되고 나머지는 vote 계정에 지급됩니다. 계정에 rent를 충당할 만큼 충분한 자금이 없으면 해당 계정은 할당 해제되고 데이터가 삭제됩니다. 또한 신규 계정은 rent-free 상태여야 한다는 점도 기억해야 합니다.

Rent가 중요한 또 다른 이유는 네트워크의 밸리데이터가 이 상태(state)의 작업 사본을 메모리에 유지해야 하기 때문이며, 네트워크는 이러한 리소스 소비에 대해 시간 및 공간 기반의 수수료를 부과합니다. 이는 Solana의 계정이 계정 잔액(Account::lamports)과는 별개로 소유자가 제어하는 상태(Account::data)를 가질 수 있기 때문입니다.

Solana 프로그램의 rent를 계산하는 방법

Solana CLI의 Solana rent 명령을 사용하면 rent 비용을 간단하게 추정할 수 있습니다. 계정의 크기(바이트 단위)를 입력하면 바이트당 rent, epoch당 rent, 그리고 계정이 rent 면제 대상이 되기 위해 필요한 최소 금액을 확인할 수 있습니다.

Rent 규정에 따르면, 계정은 현재 epoch 또는 현재 epoch + 1의 Account::rent epoch 값을 가지며, rent는 한 epoch 기간에 대해 부과됩니다.

계정이 면제 대상 규정에 해당하는 경우, Account::rent epoch는 단순히 현재 epoch로 조정됩니다.

계정이 면제 대상이 아닌 경우, 이 계정이 지불해야 할 rent 금액을 결정하기 위해 **Rent::due()**가 사용됩니다. 이 계산은 다음 epoch와 Account::rent epoch 간의 차이를 기준으로 합니다. 다음 단계에서는 Solana 프로그램의 rent 비용을 계산하는 방법을 보여줍니다.

1단계: 새 프로그램 생성

먼저, 터미널로 이동하여 cargo를 사용해 새 폴더를 생성합니다. 이 폴더에 메인 파일이 저장됩니다.

src/main을 열고 여기의 코드 스니펫으로 교체하세요.

2단계: rent 비용 계산

파일 크기는 906바이트여야 하며, 다음을 실행하기만 하면 rent를 계산할 수 있습니다.

다음과 같이 표시됩니다.

터미널에서 Solana Rent 명령어 실행 결과
터미널에서 Solana Rent 명령어 실행 결과

마지막으로, rent 징수는 밸리데이터에게 rent를 분배하는 것과 같은 프로토콜 수준의 계정 변경에 따라 이루어지기 때문에 rent 차감에 대응하는 트랜잭션은 존재하지 않습니다.

따라서 rent 징수는 대체로 눈에 보이지 않으며, 최근 트랜잭션이나 계정 주소 접두사에 지정된 타이밍을 통해 간접적으로만 확인할 수 있습니다.

Solana 스토리지 수수료를 환급받는 방법

Solana 스토리지 수수료를 환급받기 위해, 개발자와 일반 Solana 사용자는 계정을 닫아 저장 수수료를 돌려받을 수 있습니다. Solana rent 수수료를 환급받는 가장 간단한 방법은 **Sol Incinerator**와 같은 사용자 친화적인 도구를 사용해 지갑 내 사용하지 않는 프로그램 계정을 닫는 것입니다.

결론

현재 rent 비용은 제네시스 시점에 설정되어 있지만, 향후 기반 하드웨어 스토리지의 현재 비용을 반영하여 동적으로 변경될 계획입니다. 따라서 기술이 발전하고 하드웨어 비용이 낮아짐에 따라 rent 수수료 비용도 함께 낮아질 것이라는 견해가 널리 받아들여지고 있습니다.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.