Token-2022 토큰은 같은 잔액과 기호를 보여도 민트에 켜진 확장에 따라 실제 이전 결과가 달라질 수 있다. 받기 전에는 토큰 이름보다 민트 주소와 소유 프로그램을 먼저 맞추고, TransferFeeConfig·NonTransferable·PermanentDelegate·TransferHook 같은 확장을 민트 계정에서 읽어야 한다.
Token-2022가 기존 SPL 토큰과 다른 지점
솔라나의 Token Extensions Program은 흔히 Token-2022라고 부르며, 기본 토큰 프로그램의 기능에 민트 또는 토큰 계정별 선택 기능을 더한다. 확장은 임의의 메타데이터 꼬리표가 아니라 토큰 프로그램이 직접 해석하는 상태다. 따라서 같은 수량을 보더라도 전송 과정에 수수료가 붙거나 추가 프로그램 호출이 요구될 수 있다.
가장 먼저 확인할 값은 자산 기호가 아니라 민트 주소와 그 계정을 소유한 프로그램이다. 이름과 아이콘은 여러 서비스가 붙이는 표시 정보라 복제될 수 있다. 동일한 기호의 기존 Token Program 민트와 Token-2022 민트는 서로 다른 자산이며, 지갑이 한쪽만 지원해도 잔액 표시와 전송 버튼의 동작이 달라진다.
확장 토큰은 이름보다 민트 주소, 프로그램, 권한을 먼저 읽어야 한다.
JOBCOIN 해설
전송 전에 살펴볼 네 가지 확장
TransferFeeConfig는 전송 때 계산된 금액을 목적지 토큰 계정에 withheld fee로 기록한다. 화면에서 보낸 수량과 바로 쓸 수 있는 수취 수량이 다를 수 있으며, 보류 수수료를 회수할 권한도 별도로 존재한다. 공식 문서에 따르면 다음 수수료 설정은 두 epoch 뒤 적용될 수 있으므로 현재율과 예정률을 분리해 읽는다.
PermanentDelegate는 민트 전체의 토큰 계정에 대해 전송 또는 소각을 승인할 수 있는 위임자다. 개별 보유자가 자신의 계정에서 취소할 수 있는 일반 delegate와 다르다. NonTransferable은 보유권 이전 자체를 제한하며, TransferHook은 전송마다 지정 프로그램을 호출하므로 훅 프로그램의 규칙과 가용성까지 확인 대상이 된다.
확장별로 달라지는 실제 질문
확장 목록만 발견하고 위험 여부를 한 단어로 결론 내리면 정보가 부족하다. 수수료라면 비율·상한·회수 권한을, 위임자라면 현재 주소와 변경 권한을, 훅이라면 호출 프로그램과 필요한 추가 계정을 확인해야 한다. 확장은 규제 준수나 로열티처럼 정상적인 설계에도 쓰일 수 있지만, 사용자가 기대한 자유 이전성과 다를 수 있다.
| 확장 | 잔액·전송에 미치는 영향 | 확인할 권한 |
|---|---|---|
| TransferFeeConfig | 수취 계정에 수수료가 보류될 수 있음 | 설정 변경자와 보류 수수료 회수자 |
| PermanentDelegate | 민트 수준 위임자가 전송·소각 가능 | 현재 위임자와 교체 권한 |
| NonTransferable | 일반 보유자 간 이전 제한 | 민트가 이 확장을 사용하는지 |
| TransferHook | 전송 중 외부 프로그램 규칙 실행 | 훅 프로그램 주소와 추가 계정 |
탐색기와 RPC로 확인하는 순서
탐색기에서는 검색 결과의 토큰 페이지보다 민트 계정 원문을 연다. 소유 프로그램이 Token-2022인지, 확장 목록이 무엇인지, 각 authority가 어느 주소인지 기록한다. 한 탐색기가 확장을 축약하면 RPC getAccountInfo의 파싱 결과나 다른 탐색기로 교차 확인한다. 알 수 없는 확장을 빈 값으로 간주하지 않는다.
가정 예시로 100단위를 보내는데 수수료율이 1%이고 상한이 0.5단위라면 단순 곱은 1단위지만 실제 공제는 상한에 걸릴 수 있다. 이는 교육용 계산일 뿐 실제 민트의 decimals, 현재 epoch 설정, 지갑의 표시 방식을 대신하지 않는다. 소액 시험 전송도 수수료·훅·계정 생성 비용을 포함해 결과를 기록해야 한다.
- 공식 발행 채널에서 민트 주소를 복사하고 네트워크까지 대조한다
- 민트 계정의 owner가 기존 Token Program인지 Token-2022인지 확인한다
- 활성 확장과 각 authority 주소, 현재·예정 수수료 설정을 기록한다
- 수취 지갑과 거래소가 해당 민트와 확장을 명시적으로 지원하는지 확인한다
- 지원 여부가 불명확하면 전액 대신 회수가 가능한 소액으로 시험한다
거래소 입출금 지원과 프로토콜 기능을 분리하기
온체인에서 유효한 Token-2022 전송이라고 해서 거래소가 자동 입금 처리하는 것은 아니다. 거래소의 수탁 시스템이 확장 계정 크기, 보류 수수료, 전송 훅을 지원하지 않으면 주소가 생성돼도 반영이 늦거나 입금 대상에서 제외될 수 있다. 입금 공지에는 네트워크명뿐 아니라 민트 주소와 지원 확장을 확인한다.
반대로 지갑 UI가 확장 정보를 보여 주지 않는다고 확장이 없는 것도 아니다. 표시 계층이 해석하지 못한 상태일 수 있다. 버튼 활성화 여부를 안전 판정으로 쓰지 말고 온체인 계정 상태, 공식 문서, 서비스 지원 공지를 함께 읽는 것이 핵심이다.
기록으로 남길 최소 증거
확인 결과에는 조회 시각, 클러스터, 민트 주소, 프로그램 ID, 확장 이름, 권한 주소를 함께 남긴다. 수수료나 권한은 바뀔 수 있으므로 스크린샷만 보관하기보다 원문 JSON과 거래 서명을 보존하면 나중에 조건이 달라졌을 때 비교하기 쉽다.
이 절차는 특정 토큰의 가치나 안전성을 보증하지 않는다. 확장 존재는 기술 조건이고 투자 판단은 발행자, 상환 구조, 법적 권리, 시장 유동성 등 별도의 사실을 요구한다. 실시간 상태를 확인하지 않은 예시는 실제 전송 결과로 단정하지 않는다.
자주 묻는 질문
Token-2022 토큰은 모두 전송 수수료가 있나요?
아니다. 확장은 선택 기능이다. 해당 민트에 TransferFeeConfig가 활성화됐는지와 현재 설정을 직접 확인해야 한다.
PermanentDelegate는 지갑에서 승인 취소할 수 있나요?
일반 계정 delegate와 다르게 민트 수준 권한이다. 보유자가 개별 토큰 계정에서 취소할 수 없으며 민트 설정의 권한 구조를 확인해야 한다.
탐색기에 잔액이 보이면 거래소 입금도 되나요?
온체인 잔액과 거래소 내부 반영은 별도다. 거래소가 해당 민트와 활성 확장을 지원하는지 입출금 공지에서 확인해야 한다.



