블록체인/레벨 VIII · 밈코인 시대/8.2 Solana/수업 1
SPL 토큰 및 계정
모든 잔액이 키인 원장
준비물솔라나 블록 탐색기(Solscan 또는 Solana Explorer)여러 토큰을 보유하고 있는 지갑의 주소공급량과 권한 상태를 기록할 노트
호기심
- 토큰을 보유하려면 왜 별도의 계정을 만들고 자금을 충전해야 하나요?
- 두 지갑이 같은 민트의 토큰을 보유하면서도, 어떻게 각자의 잔액이 서로의 상태 업데이트를 방해하지 않을 수 있을까요?
- ‘민트 권한’ 키를 분실한 경우와 탈취당한 경우, 공급량에는 각각 어떤 일이 생길까요?
탐구
- 솔라나에서는 시스템 내의 모든 객체가 계정입니다. 계정에는 램포트(네이티브 통화인 SOL의 단위) 잔액, 임의의 데이터, 그리고 그 데이터를 어떻게 수정할 수 있는지 결정하는 소유자 프로그램이 담깁니다. 1 SOL은 10억 램포트입니다. 컨트랙트가 자체 스토리지를 갖는 이더리움과 달리, 솔라나 프로그램은 상태를 전혀 저장하지 않으며 전달받은 계정에 대해 작동할 뿐입니다.
- 이러한 분리 덕분에 극도의 병렬 처리가 가능해집니다. 만 명의 사용자가 동시에 토큰을 전송하면, 이들은 서로 다른 메모리 주소, 즉 각자의 토큰 계정과 상호작용합니다. 이 계정들은 변경 가능한 상태를 공유하지 않으므로 네트워크는 충돌 없이 이를 동시에 처리할 수 있습니다. 다만 인기 있는 거래 풀처럼 하나의 공유 계정에 활동이 몰리면 여전히 그 계정을 차례로 기다려야 합니다. 바로 이 때문에 솔라나는 혼잡에 대한 가격을 계정 단위로 매깁니다(이후 레슨에서 다룹니다).
- 토큰은 SPL Token 프로그램이 관리합니다. ‘민트(Mint)’ 계정은 토큰의 정체성, 즉 총 공급량, 소수점 정밀도, 그리고 두 가지 핵심 권한을 정의합니다. ‘민트 권한(mint authority)’은 새 토큰을 생성해 공급량을 늘릴 수 있습니다. ‘동결 권한(freeze authority)’은 특정 사용자 계정을 잠가 송금이나 수령을 막을 수 있습니다. 이러한 권한은 선택 사항이며, 많은 프로젝트가 두 권한을 모두 철회합니다. 민트 권한을 철회하면 공급량이 고정되고, 동결 권한을 철회하면 누구도 홀더를 동결할 수 없게 됩니다.
- 각 지갑은 토큰마다 별도의 ‘토큰 계정’에 보관합니다. 대부분의 사용자에게 이것은 공개 키와 민트 주소로부터 결정론적으로 도출되는 연관 토큰 계정(Associated Token Account, ATA)입니다. 이 도출 방식 덕분에 ATA 주소는 예측 가능합니다. 누가 무엇을 소유하는지 알면 체인을 조회하지 않고도 그 토큰이 어디에 있는지 계산할 수 있습니다. 이 계정은 ‘렌트 면제(rent-exempt)’ 상태가 되기에 충분한 램포트를 보유해야 하며, 이는 계정을 닫으면 환불되는 일회성 예치금입니다.
- Token-2022는 표준 SPL 토큰에 없는 선택적 기능으로 이 모델을 확장합니다. 전송 수수료를 지원하는데, 이는 각 전송 금액의 일정 비율을 설정된 최대치까지 수신자의 토큰 계정에 묶어 두었다가 지정된 권한자가 징수하는 방식입니다. 또한 스왑이나 전송 중에 사용자 정의 로직이 실행되는 ‘전송 훅(transfer hook)’도 지원합니다. 이러한 확장 기능은 복잡성을 높이지만, 이전에는 외부 미들웨어 없이 온체인에서 불가능했던 로열티 및 규정 준수 검사 메커니즘을 제공합니다.
- 토큰의 속성을 확인하려면 Solscan이나 Solana Explorer 같은 솔라나 탐색기를 여세요. 아무 민트 주소나 검색해 보세요. 화면에 총 공급량, 소수점 자릿수, 그리고 민트 권한이 아직 활성 상태인지(즉 새 토큰을 생성할 수 있는지) 아니면 철회되었는지가 표시됩니다. 동결 권한이 활성 상태라면 그 권한 보유자는 어떤 지갑의 토큰 계정이든 동결할 수 있습니다. 이 항목들을 읽으면 토큰이 단 한 개도 움직이기 전에 그 설계에 내재된 중앙화 위험을 파악할 수 있습니다.
핵심 사실
- 모든 솔라나 계정에는 램포트(1 SOL = 1,000,000,000 램포트), 데이터, 소유자 프로그램이 담겨 있습니다.
- SPL 토큰 민트 계정은 공급량, 소수점 자릿수, 민트 권한, 동결 권한을 정의합니다.
- 연관 토큰 계정(ATA)은 지갑 주소와 민트 주소로부터 결정론적으로 도출됩니다.
- 계정이 닫히지 않고 네트워크에 유지되려면 렌트 면제 잔액을 유지해야 합니다.
- Token-2022는 표준 SPL 토큰에는 없는 전송 수수료와 훅 같은 선택적 확장 기능을 도입합니다.
- 솔라나의 프로그램들은 상태를 가지지 않으며, 인자로 전달된 계정의 데이터를 수정할 뿐입니다.
연습 아홉, 여섯, 셋, 하나
9모으기최근 활동에서 토큰 민트 9개를 골라 나열하세요. 각 민트의 소수점 자릿수, 민트 권한이 활성 상태인지 철회되었는지, 동결 권한이 있는지를 적으세요.
6묶기9개를 권한 구조에 따라 6개 그룹으로 분류하세요: 동결 권한 없는 고정 공급량, 가변 공급량, 계정 동결 가능, 전송 수수료 활성, 훅 활성, 기타 설정.
3추리기6개 그룹을, 발행자가 홀더의 자산과 향후 공급량 인플레이션을 얼마나 통제할 수 있는지에 따라 서로 다른 3가지 위험 프로필로 압축하세요.
1결정화유연성이 줄어드는데도 ‘포기된(renounced)’ 민트 권한이 활성 상태의 민트 권한보다 장기 홀더에게 더 안전하다고 여겨지는 이유를 설명하는 문장을 1개 쓰세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.