Skip to main content
getAccountInfo RPC 메소드는 Solana 블록체인을 쿼리하는 데 기본적인 도구입니다. 특정 계정 공개 키와 관련된 모든 저장된 정보를 검색할 수 있습니다. 여기에는 계정의 lamport 잔액, 소유 프로그램, 실행 가능 여부 및 저장된 데이터가 포함됩니다.

일반적인 사용 사례

  • SOL 잔액 확인: 모든 계정의 기본 SOL 잔액을 확인합니다.
  • 계정 존재 여부 확인: 주어진 공개 키로 초기화된 계정이 있는지 확인합니다(예: lamport 또는 데이터가 있는지).
  • 프로그램 계정 검사: 프로그램의 소유인 계정 내에 저장된 데이터를 검색하여 프로그램 상태를 이해하는 데 중요합니다.
  • 계정 소유자 식별: 계정을 소유한 프로그램이 무엇인지 확인합니다. 이를 통해 계정 데이터를 해석하는 방법이나 시스템 소유 계정인지 여부를 결정할 수 있습니다.
  • 계정이 실행 가능한지 확인: 계정이 배포된 프로그램을 포함하는지 식별합니다.

매개변수

  1. publicKey (string, required): 쿼리할 계정의 base-58로 인코딩된 공개 키입니다.
  2. config (object, optional): 다음 필드를 포함하는 설정 객체:
    • commitment (string, optional): 쿼리에 사용할 커밋 수준을 지정합니다. 기본값은 finalized입니다.
      • finalized: 노드는 클러스터 과반수가 최대 잠금을 달성한 것으로 확인된 가장 최근의 블록을 쿼리합니다.
      • confirmed: 노드는 클러스터 과반수가 투표한 가장 최근의 블록을 쿼리합니다.
      • processed: 노드는 가장 최근의 블록을 쿼리합니다. 이 블록이 완전하지 않을 수 있습니다.
    • encoding (string, optional): 계정 데이터의 인코딩을 지정합니다. 기본값은 base64입니다.
      • base58 (느림)
      • base64
      • base64+zstd (데이터가 압축된 경우)
      • jsonParsed: 계정 데이터가 알려진 프로그램 상태일 경우(예: 토큰 계정, 스테이크 계정), 노드는 이를 JSON 구조로 구문 분석하려고 시도합니다. 일반적인 프로그램 계정의 경우 보통 base64의 이진 데이터로 돌아갑니다.
    • dataSlice (object, optional): 특정 슬라이스로 반환 계정 데이터를 제한합니다. base58, base64 또는 base64+zstd 인코딩에 대해서만 사용 가능합니다.
      • offset (number): 계정 데이터 시작에서 슬라이스를 시작할 바이트 수입니다.
      • length (number): 반환할 바이트 수입니다.
    • minContextSlot (number, optional): 요청이 평가될 수 있는 최소 슬롯입니다.

응답

계정을 찾으면 result 필드에 두 가지 주요 속성을 포함하는 객체가 있습니다.
  • context (object): 요청에 대한 메타데이터를 포함합니다.
    • slot (number): 정보가 검색된 슬롯입니다.
    • apiVersion (string, optional): RPC API 버전입니다.
  • value (object | null): 계정이 존재하지 않으면 null이 됩니다. 그렇지 않으면 다음을 포함하는 객체입니다.
    • lamports (number): 계정에 의해 소유된 lamports의 수 (1 SOL = 1,000,000,000 lamports).
    • owner (string): 이 계정을 소유한 프로그램의 base-58 인코딩된 공개 키입니다.
    • data (array | object | string): 계정에 저장된 데이터입니다. 요청에서 사용된 encoding 매개 변수에 따라 형식이 달라집니다.
      • 기본값인 base64, base58, base64+zstd에 대해서는 일반적으로 배열 [encoded_string, encoding_format], 예: ["string_data", "base64"]입니다.
      • jsonParsed의 경우, 데이터가 RPC 노드에서 구문 분석 가능한 경우(예를 들어 SPL 토큰 계정), JSON 객체일 수 있습니다. 그렇지 않으면 표준 레이아웃으로 인식되지 않는 경우 ["", "base64"] 또는 유사한 것으로 기본 설정될 수 있습니다.
    • executable (boolean): 계정에 프로그램이 포함되어 있으면 true, 그렇지 않으면 false입니다.
    • rentEpoch (number): 이 계정이 다음 에포크에서 임대료를 지불할 시점입니다.
    • space (number, optional): 데이터 길이를 바이트 단위로 나타냅니다. (참고: 공식 Solana 문서에는 space가 나와 있고 일부 RPC 공급자는 이를 포함할 수 있습니다.) 계정 데이터에 대한 자세한 내용은 계정 데이터 및 역직렬화에 대한 자세한 안내를 참조하십시오.
계정을 찾을 수 없는 경우, 결과의 value 필드는 null가 됩니다.

예제: 계정 정보 가져오기

메인넷에서 Serum Program V3 ID (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin)에 대한 정보를 가져와 보겠습니다. 참고: 아래 예제에서 YOUR_API_KEY을 실제 Helius API 키로 교체하십시오.

개발자 팁

  • 성능: 여러 계정을 자주 확인해야 하는 애플리케이션의 경우 getMultipleAccounts를 사용하여 요청을 일괄 처리하고 왕복 횟수를 줄이십시오.
  • 데이터 역직렬화: data 필드는 소유 프로그램의 데이터 구조에 따라 자주 역직렬화가 필요합니다. 프로그램에 특화된 도구와 라이브러리 (예: 토큰 계정의 SPL 토큰 라이브러리)가 보통 필요합니다. 우리의 계정 데이터 역직렬화 블로그 포스트가 유용한 기술과 예제를 제공합니다.
  • 요금 제한: 많은 수의 계정을 쿼리하거나 자주 요청할 때는 RPC 노드 요금 제한을 주의하십시오.
  • 비용 관리: getAccountInfo는 일반적으로 저비용 쿼리지만 빈번한 폴링은 비용을 증가시킬 수 있습니다. 쿼리 패턴을 최적화하십시오.
  • jsonParsed를 현명하게 사용하십시오: jsonParsed는 편리할 수 있지만 모든 계정 유형을 지원하지 않을 수 있으며 프로그램이 데이터 구조를 업데이트하면 출력이 변경될 수 있습니다. 중요한 애플리케이션의 경우, 이진 데이터를 알려진 레이아웃으로 파싱하는 것이 더 안정적입니다.
  • dataSlice를 고려하십시오: 계정 데이터의 일부분만 필요하다면, dataSlice를 사용하여 전송되는 데이터 양을 줄이고 쿼리 비용을 잠재적으로 낮추십시오.

관련 메서드

getMultipleAccounts

성능 향상을 위해 단일 요청으로 여러 계정을 일괄 가져오기

getBalance

전체 계정 세부 정보 없이 SOL 잔액만 가져오기