> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# getMinimumBalanceForRentExemption 사용 방법

> getMinimumBalanceForRentExemption 사용 사례, 코드 예시, 요청 매개변수, 응답 구조 및 팁을 배웁니다.

[`getMinimumBalanceForRentExemption`](https://www.helius.dev/docs/api-reference/rpc/http/getminimumbalanceforrentexemption) RPC 메소드는 특정 데이터 크기의 계정이 렌트 면제를 받기 위해 필요한 최소 lamport 잔액을 계산할 수 있게 해줍니다.

Solana에서는 계정이 시간이 지남에 따라 저장 비용을 충당하기 위해 최소 잔액을 유지해야 하며, 이를 렌트라고 합니다. 2년 치의 렌트 비용과 동등한 잔액을 보유한 계정은 "렌트 면제"로 간주되며 [렌트](https://www.helius.dev/blog/solana-executive-overview)에 의해 잔액이 소진되지 않습니다.

## 일반적인 사용 사례

* **계정 생성:** 새 계정을 생성하기 전에(예: 새 토큰 계정, 프로그램으로부터 파생된 주소 또는 사용자 정의 데이터 저장) 이를 사용하여 처음부터 렌트 면제를 받기 위해 할당해야 하는 lamport를 확인합니다. 이는 잔액이 너무 낮아져도 계정이 가비지 수집되지 않도록 합니다.
* **동적 계정 크기 조정:** 사용자의 애플리케이션이 데이터 크기가 커질 수 있는 계정을 처리하는 경우, 렌트 면제를 유지하기 위해 추가적인 lamport가 필요한지 주기적으로 확인할 수 있습니다.
* **비용 추정:** 다양한 크기의 프로그램 배포 또는 데이터 계정 생성과 관련된 SOL 비용을 추정합니다.
* **지갑 및 SDK 통합:** 지갑과 SDK는 새로운 계정에 적절히 자금을 제공하기 위해 이를 사용합니다.

## 요청 매개변수

1. **`dataLength`** (`usize`, 필수): 계정 데이터의 길이를 바이트 단위로 제공합니다. 이는 렌트 면제를 받기 위한 최소 요건을 결정하는 주요 요소입니다.
   * 예시: `165` (표준 SPL 토큰 계정의 경우).

2. **`commitment`** (`object`, 선택 사항): 쿼리에 대한 [커밋 수준](https://www.helius.dev/blog/solana-commitment-levels)을 지정합니다. 생략하면, RPC 노드의 기본 커밋 수준이 사용됩니다.
   * 필드:
     * `commitment` (문자열): 예시로 `"finalized"`, `"confirmed"`, 또는 `"processed"`가 있습니다.

## 응답 구조

JSON-RPC 응답의 `result` 필드는 지정된 `dataLength`가 있는 계정이 렌트 면제를 받기 위해 필요한 최소 lamports 수를 나타내는 `u64` (unsigned 64-bit 정수)입니다.

## 예시

### 1. 표준 토큰 계정에 대한 렌트 면제 받기 (165 바이트)

이 예시는 전형적인 SPL 토큰 계정(데이터 크기가 165 바이트인)이 렌트 면제를 받기 위해 필요한 최소 잔액을 쿼리합니다.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getMinimumBalanceForRentExemption",
      "params": [
        165
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchMinimumBalanceForRentExemption() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const dataLength = 165; // Data length for a typical SPL token account

    try {
      const lamports = await connection.getMinimumBalanceForRentExemption(dataLength);
      console.log(`Minimum lamports for rent exemption (data length ${dataLength} bytes): ${lamports} SOL: (${lamports / 1_000_000_000})`);
    } catch (error) {
      console.error(`Error fetching minimum balance for rent exemption for data length ${dataLength}:`, error);
    }
  }

  fetchMinimumBalanceForRentExemption();
  ```
</CodeGroup>

### 2. 0 바이트 계정에 대한 렌트 면제 받기

데이터가 없는 계정의 기본 렌트 면제를 보여주며, 이는 종종 모든 계정에 대한 절대 최소값입니다.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getMinimumBalanceForRentExemption",
      "params": [
        0
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchMinimumBalanceForZeroByteAccount() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const dataLength = 0;

    try {
      const lamports = await connection.getMinimumBalanceForRentExemption(dataLength);
      console.log(`Minimum lamports for rent exemption (data length ${dataLength} bytes): ${lamports} SOL: (${lamports / 1_000_000_000})`);
    } catch (error) {
      console.error(`Error fetching minimum balance for rent exemption for data length ${dataLength}:`, error);
    }
  }

  fetchMinimumBalanceForZeroByteAccount();
  ```
</CodeGroup>

## 개발자 팁

* **렌트는 데이터 크기에 따라 다릅니다:** 계정 데이터가 클수록 렌트 면제 최소값이 높아집니다.
* **네트워크 매개변수:** 렌트의 기본 비용(lamport per byte-year)은 클러스터 투표를 통해 이론적으로 변경될 수 있는 네트워크 매개변수입니다. 이는 드물지만, `getMinimumBalanceForRentExemption` 메소드는 항상 클러스터의 상태에 기반한 현재 값을 반환합니다.
* **Lamports 대 SOL:** 응답은 lamports로 제공됩니다. 1 SOL = 1,000,000,000 lamports라는 것을 기억하세요.
* **장기적인 지속성을 위해 필수적임:** 계정을 렌트 면제 상태로 유지하는 것은 Solana 블록체인에서 데이터의 장기적인 지속성을 위해 중요합니다.

이 가이드는 Solana 애플리케이션에서 계정 렌트를 효과적으로 관리하기 위해 `getMinimumBalanceForRentExemption` RPC 메소드를 이해하고 사용하는 데 도움을 줍니다.
