Solana의 associated token account란?
작성자 Petar Todorov
Solana Account Model은 모든 온체인 데이터를 정리하고 저장하며, Associated Token Accounts(ATA)는 이 모델의 핵심 구성 요소 중 하나입니다. 이 글에서는 ATA가 무엇인지, 어떻게 작동하는지, 그리고 직접 Associated Token Account를 생성하는 방법을 설명합니다.
Associated Token Account란 무엇인가?
Associated Token Account는 Solana Associated Token Account Program을 통해 생성되며, 특정 토큰과 그 잔액, 소유자에 대한 정보를 담고 있습니다. 이는 Program Derived Address의 한 변형입니다.
각 용어의 의미는 다음과 같습니다:
- Associated Token Account - 토큰과 연결된 계정(Solana Token Program을 떠올리면 됩니다)
- Program Derived Address - Solana Program, 여기서는 Associated Token Account Program으로부터 "파생"(생성)된 주소
Associated Token Account와 이들 간의 전송은 어떻게 작동하는가?
Associated Token Account 간 전송은 계정 간에 직접 이루어지며, 지갑 주소를 통해 간접적으로도 이루어집니다.
토큰 계정은 Ethereum의 ERC-20 토큰과 동등하지만 근본적인 차이가 있습니다: Ethereum 스마트 컨트랙트는 자신의 상태와 코드를 소유하지만, Solana의 토큰 계정은 코드만을 담고 있으며 그 상태(예: 토큰 잔액)는 해당 토큰의 각 소유자를 위해 생성된 Associated Token Account로 "내보냅니다".
지금까지 배운 내용을 정리하기 위해 USDC를 간단히 살펴보겠습니다:
- Solana의 USDC는 토큰 계정입니다
- 토큰 계정은 System Program에 의해 생성되지만, SPL Token Program에 의해 Token mint로 초기화됩니다
- USDC 토큰이 초기화되면, 사용자는 전송을 시작할 수 있습니다
- USDC 토큰을 보유한 사용자는 Associated Token Account Program(ATP)을 통해 생성된 Associated Token Account를 가지고 있습니다
- 두 사람 간의 USDC 교환은 각 사용자의 ATA 간에 이루어집니다

USDC 전송은 Solana nodes에서 사용자의 ATA 간에 직접 이루어지며, 지갑 주소를 통해 간접적으로 이루어집니다. 이러한 전송은 동일한 token mint seed로 ATA가 생성된 사용자들 간에만 이루어져야 합니다.
Associated Token Account Program이란 무엇인가?
Solana Program Library의 일부인 Associated Token Account Program은 모든 ATA의 상위 프로그램으로, 사용자의 지갑을 그가 권한을 가진 ATA들에 매핑합니다. 또한 ATA Program은 사용자가 다른 사용자에게 토큰을 보내려 할 때, 수신자가 해당 토큰에 대한 ATA를 가지고 있지 않더라도 토큰을 받을 수 있도록 보장합니다. 이 경우 스마트 컨트랙트가 RPC node에서 실행되는 동안 프로그램이 자동으로 ATA 계정을 생성합니다.
Associated Token Account Program의 소스 코드는 Rust로 작성되어 있으며 GitHub에서 확인할 수 있습니다.
TypeScript에서 ATA가 내부적으로 어떻게 생성되는지 살펴보겠습니다:

Associated Token Account Program은 어떻게 작동하는가?
ATA program 내부에서 일어나는 일은 다음과 같습니다:
1. 상수들의 ID 가져오기
먼저 `TOKEN_PROGRAM_ID`과 `SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID` 상수를 가져옵니다. 프로그램 ID는 프로그램 주소를 나타내는 다른 표현입니다.
2. findAssociatedTokenAddress 함수 가져오기
다음으로 `findAssociatedTokenAddress` 함수를 진행하며, 이 함수는 새로 생성된 ATA의 주소가 될 publicKey를 반환합니다.
3. findProgramAddress 메서드 호출
함수 본문에서 `findProgramAddress` 메서드가 호출되며 다음 두 개의 인자가 전달됩니다:
- Seed 배열
- SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID
ATA는 Program Derived Address(PDA)의 한 형태이므로, 프로그램에 인자를 전달하여 계정을 생성할 수 있습니다. PDA를 생성할 때는 seed를 인자로 전달하며, 이 경우 다음과 같습니다:
- wallet_address - ATA 내 자금을 소유하게 될 계정의 주소(authority)
- token_program_id - SPL Token Program의 프로그램 ID
- token_mint_address - ATA에 저장될 Token 계정의 주소
Associated Token Account Program의 ID는 SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID입니다.
Associated Token Account 생성 방법
Associated Token Account를 생성하는 것은 Solana의 spl-token-cli를 사용해 create-token을 호출하는 것만큼 간단합니다. ATA를 생성한다는 것은 그것이 "연결"될 토큰이 이미 존재한다는 것을 전제로 합니다.

이 코드는 `create-account` 명령을 호출하며, 이 명령은 `<TOKEN_MINT_ADDRESS>`를 인자로 받습니다.
Associated Token Account를 생성하려면 다음 네 단계를 따라야 합니다:
- SOL 전송 - System Program이 ATA를 초기화하고 rent-exempt 상태로 만듭니다
- 여유 공간 생성 - System Program이 ATA를 위한 여유 공간을 할당합니다.
- 소유권 이전 - System Program이 계정의 소유권을 SPL Associated Token Account Program으로 이전합니다
- 계정 초기화 - 계정 초기화 과정을 마무리하며 토큰 주소, 새로 생성된 ATA 주소, 그리고 그 소유자를 설정합니다
소유자(owner)와 권한(authority)의 차이는 무엇인가?
Owner는 ATA를 제어하는 Solana 프로그램의 유형이고, authority는 owner 프로그램에 트랜잭션을 전송하여 authority를 대신해 ATA의 데이터를 변경하는 계정(지갑)입니다.
Associated Token Account의 비용은 얼마인가?
기본적으로 Associated Token Account는 생성 시 rent-exempt 상태로 표시되어야 하므로, 계정이 보유해야 하는 최소 금액은 0.00203928 SOL 이상이어야 합니다. System Program이 이 SOL을 ATA로 전송하며, 이는 트랜잭션을 시작하는 계정에서 차감됩니다.
이 초기 비용을 제외하면, 이후의 상호작용은 Solana의 일반 트랜잭션 비용보다 더 들지 않습니다.
Associated Token Account 확인 방법
Phantom과 같은 클라이언트를 통해 Associated Token Account를 확인할 수 있으며, 이러한 클라이언트는 사용자 지갑이 권한을 가진 모든 ATA를 자동으로 도출합니다. 또한 블록체인은 공개되어 있으므로 Solscan.io와 같은 익스플로러를 통해서도 이 정보에 접근할 수 있습니다.
확인하고자 하는 지갑의 주소를 붙여넣으면 해당 ATA들이 Token Accounts 아래에 표시됩니다:

Associated Token Account를 기존 계정에 연결할 수 있는가?
Associated Token Account를 기존 계정에 연결하는 것은 기본적으로 내부에서 자동으로 이루어집니다. ATA가 생성되는 방식 때문에 프로그램이나 클라이언트는 각 계정의 seed를 쉽게 확인할 수 있습니다. 이는 다음에 대한 '연결고리'로 볼 수 있습니다:
- ATA에 대한 권한을 가진 지갑
- Token 계정의 주소(즉, ATA가 보유한 토큰 유형)
Alchemy로 Solana 앱 구축하기
Associated Token Account에 대해 배우는 것은 완전한 Solana 개발자가 되기 위한 첫걸음 중 하나입니다. Solana node와 RPC provider 선택에 대해 익힌 후에는, 사용하기 쉬운 Solana API를 활용해 첫 dApp 구축을 빠르게 시작할 수 있습니다.
자주 묻는 질문
Solana에서 Associated Token Account(ATA)란 무엇인가?
Associated Token Account는 Solana Associated Token Account Program을 통해 생성되며, 특정 토큰과 그 잔액, 소유자에 대한 정보를 담고 있습니다. 이는 사용자의 지갑을 특정 토큰에 매핑하는 Program Derived Address의 한 변형입니다.
ATA는 일반 토큰 계정과 어떻게 다른가?
Solana의 토큰 계정은 코드만을 담고 있으며, 그 상태를 해당 토큰의 각 소유자를 위해 생성된 Associated Token Account로 "내보냅니다". ATA는 지갑과 특정 token mint 모두에 연결된 결정론적으로 도출된 주소입니다.
Associated Token Account Program이란 무엇인가?
Associated Token Account Program은 Solana Program Library의 일부로, 사용자의 지갑을 그가 권한을 가진 ATA들에 매핑합니다. 이 프로그램은 사용자가 해당 토큰에 대한 ATA가 없는 수신자에게 토큰을 보낼 때 자동으로 ATA 계정을 생성합니다.
Associated Token Account를 생성하는 데 비용이 얼마나 드는가?
ATA는 생성 시 rent-exempt 상태여야 하며, 최소 0.00203928 SOL의 잔액이 필요합니다. 이 금액은 트랜잭션을 시작하는 계정에서 전송되며, 지속적인 rent 요건을 충당합니다.
ATA 주소를 도출하는 데 어떤 seed가 사용되는가?
ATA 주소는 세 가지 seed, 즉 지갑 주소(authority), token program ID, token mint 주소를 사용해 도출됩니다. 이들은 Associated Token Account Program에 전달되어 결정론적 주소를 생성하는 데 사용됩니다.
Associated Token Account는 어떻게 생성하는가?
spl-token-cli를 사용해 `create-account` 명령을 token mint 주소를 인자로 호출하여 ATA를 생성할 수 있습니다. 이 과정은 SOL 전송, 공간 생성, 소유권 이전, 계정 초기화를 포함합니다.
내 Associated Token Account는 어떻게 확인하는가?
Phantom과 같은 지갑을 통해 자신의 지갑이 권한을 가진 모든 ATA를 자동으로 확인하거나, Solscan.io와 같은 블록체인 익스플로러에서 지갑 주소를 검색하여 Token Accounts 섹션을 확인할 수 있습니다.
ATA가 없는 사람에게 토큰을 보내면 어떻게 되는가?
Associated Token Account Program은 전송 중 수신자의 ATA가 존재하지 않으면 자동으로 생성하며, 새 ATA를 위한 rent-exempt SOL 금액을 발신자의 계정에서 차감합니다.
관련 개요
Solana2026년 7월 27일
Solana 노드: 밸리데이터, RPC 노드, 셀프 호스팅
Solana 노드란 무엇인지, 밸리데이터와 RPC 노드, 보조 데이터 시스템은 어떻게 다른지, 그리고 언제 셀프 호스팅을 하고 언제 프로바이더를 써야 하는지 설명합니다.
Solana2026년 7월 22일
Solana 아카이브 데이터: 전체 블록 및 트랜잭션 기록을 조회하는 방법
Solana 아카이브 데이터 설명: 노드가 기록을 정리(prune)하는 이유, 아카이브 액세스가 필요한 RPC 메서드, 그리고 전체 블록 및 트랜잭션 기록을 대규모로 조회하는 방법.
Solana2026년 5월 28일
Solana Agent Kit vs GOAT vs ElizaOS: 어떤 프레임워크를 사용해야 할까?
Solana Agent Kit, GOAT, ElizaOS 비교: Solana 네이티브 심층 지원, 멀티체인 확장성, 완전한 에이전트 런타임 중 선택. 코드 예제와 결정 프레임워크 제공.

블록체인 매직을 만드세요
Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.