Skip to main content
getTokenAccountsByDelegate RPC 메서드는 특정 공개 키를 위임자로 승인한 모든 SPL 토큰 계정을 검색합니다. 위임자는 지정된 양에 따라 토큰 계정에서 토큰 전송 또는 소각과 같은 특정 작업을 수행할 수 있는 권한을 가지고 있습니다. 이 메서드는 위임된 권한을 관리하거나 특정 키가 대신 조치를 취할 수 있는 토큰 계정을 발견해야 하는 서비스에 유용합니다.

일반적인 사용 사례

  • 위임된 자산 나열: 특정 지갑이나 프로그램이 위임자 권한을 부여받은 모든 토큰 계정을 표시합니다.
  • 자동화된 토큰 관리: 사용자를 대신하여 작업을 수행하는 서비스(예: 자동 마켓 메이커, 토큰화된 보상을 관리하는 스테이킹 프로토콜)는 이를 사용하여 상호작용할 수 있는 계정을 찾을 수 있습니다.
  • 위임 감사: 특정 주소에 위임된 권한이 있는 계정을 검토합니다.
  • 위임 취소: 위임자 권한을 취소해야 하는 토큰 계정을 식별(단, 취소 자체는 별도의 거래임)합니다.

요청 매개변수

  1. delegatePubkey (string, 필수): 관련된 토큰 계정을 찾으려는 위임자 계정의 base-58로 인코딩된 공개 키입니다.
  2. filter (object, 필수): 계정을 필터링하기 위해 mint 또는 programId 중 하나를 반드시 지정해야 하는 JSON 객체:
    • mint (string): 특정 토큰 민트의 base-58로 인코딩된 공개 키입니다. 제공할 경우, 쿼리는 이 특정 토큰 유형의 토큰 계정만 반환하며, 이는 delegatePubkey에 위임됩니다.
    • programId (string): 계정을 소유한 토큰 프로그램의 base-58로 인코딩된 공개 키입니다. 일반적으로 표준 SPL 토큰 프로그램(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) 또는 토큰-2022 프로그램(TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb)일 것입니다.
  3. options (object, 선택적): 다음과 같은 공통 필드를 포함하는 선택적 구성 객체:
    • commitment (string, 선택적): 커밋 수준을 지정합니다.
    • encoding (string, 선택적): 계정 데이터의 인코딩. "jsonParsed"을 강력히 추천하며 이는 사람이 읽을 수 있는 계정 정보를 반환합니다. 기타 옵션은 "base64", "base64+zstd" 등이 있습니다. 지정되지 않으면 기본값은 "base64"입니다.
    • dataSlice (object, 선택적): 계정 데이터의 특정 슬라이스만 검색할 수 있습니다. offset (usize) 및 length (usize) 필드가 포함됩니다. 이는 base58, base64 또는 base64+zstd 인코딩에만 적용됩니다.
    • minContextSlot (u64, 선택적): 요청이 평가될 수 있는 최소 슬롯입니다.

응답 구조

JSON-RPC 응답의 result.value 필드는 객체의 배열입니다. 각 객체는 filter 기준과 일치하며 delegatePubkey를 위임자로 가진 토큰 계정을 나타냅니다. 배열의 각 객체는 다음 두 필드를 가집니다:
  • pubkey (string): 토큰 계정 자체의 base-58로 인코딩된 공개 키입니다.
  • account (object): 토큰 계정에 대한 자세한 정보를 포함하는 객체:
    • lamports (u64): 토큰 계정의 램포트 잔액(렌트 면제용).
    • owner (string): 이 계정을 소유한 프로그램의 공개 키(예: 토큰 프로그램).
    • data: 계정 데이터. "jsonParsed" 인코딩이 사용되는 경우, 이는 program 필드(예: "spl-token") 및 구조화된 정보를 포함한 parsed 필드를 가진 객체가 됩니다:
      • parsed.info: 다음 세부 정보를 가진 객체:
        • mint (string): 토큰의 민트 주소.
        • owner (string): 토큰 계정의 소유자(위임자 아님).
        • tokenAmount (object): 이 계정의 총 토큰 잔액(amount, decimals, uiAmount, uiAmountString).
        • delegate (string): 위임자의 공개 키(요청의 delegatePubkey와 일치해야 함).
        • delegatedAmount (object): 위임자가 관리할 수 있도록 승인된 토큰 양(amount, decimals, uiAmount, uiAmountString).
        • isNative (boolean): 계정이 래핑된 SOL을 보유하고 있는지 여부.
        • state (string): 토큰 계정의 상태(예: "initialized").
      • parsed.type (string): 계정 유형(예: "account").
    • executable (boolean): 계정이 실행 가능한지 여부.
    • rentEpoch (u64): 이 계정이 다음에 렌트를 낼 시기.
    • space (u64, jsonParsed이 사용되지 않은 경우): 원시 계정 데이터 길이(바이트 단위).
응답 예시 (jsonParsed 인코딩 사용):

코드 예제

개발자 팁

  • 필터 요구사항: 필터 매개변수에 mint 또는 programId 중 하나를 반드시 제공해야 합니다. 이러한 필터 없이 모든 토큰 유형의 위임된 계정을 쿼리할 수 없습니다.
  • 인코딩: "jsonParsed"encoding 옵션으로 사용하는 것은 데이터를 더 쉽게 처리할 수 있도록 강력히 추천됩니다. 이는 이진 계정 데이터를 구조화된 JSON 형식으로 디코딩합니다.
  • 성능: programId를 사용하여 쿼리하는 것은 mint를 사용하여 쿼리하는 것보다 리소스를 더 많이 소모할 수 있으며, 특히 위임자가 여러 다른 토큰 유형에 대해 권한을 갖고 있는 경우 그렇습니다. 일부 RPC 제공자는 이 메서드에 대해 더 엄격한 속도 제한을 가질 수 있습니다.
  • 위임된 양: 응답의 delegatedAmount는 현재 위임자가 사용할 수 있도록 승인된 최대 토큰 수를 나타냅니다. 이는 계정의 총 tokenAmount보다 적을 수 있습니다.
  • 위임 취소: 이 메서드는 정보만 검색합니다. 위임을 취소하려면 토큰 계정의 소유자가 SPL 토큰 프로그램에 Revoke 명령을 보내야 합니다.
이 가이드는 승인된 위임자를 기반으로 SPL 토큰 계정을 찾는 getTokenAccountsByDelegate 사용에 대한 포괄적인 개요를 제공합니다.