토큰 생성

Solana의 민트 권한과 동결 권한이란?

민트 권한은 Solana 토큰의 공급량이 늘어날 수 있는지를, 동결 권한은 누군가 보유자의 잔액을 묶을 수 있는지를 결정합니다. 두 권한의 역할, 메타데이터와 Token-2022에 어떤 권한이 있는지, 권한 유지가 정당한 경우, 그리고 권한을 확인하고 해지하는 방법을 설명합니다.

Antonio VaganovsAntonio Vaganovs·게시 ·12분 분량
줄이 그어진 두 열쇠 사이에서 빛나는 Solana 코인. 하나는 코인을 떨어뜨리며 Mint라고 표시되어 있고, 다른 하나는 눈송이와 자물쇠와 함께 Freeze라고 표시되어 있습니다

Solana의 모든 토큰은 민트 계정에서 시작합니다. 민트 계정은 토큰 프로그램이 관리하는 작은 레코드로, 토큰 자체를 정의합니다. 이 레코드의 두 필드는 어떤 백서보다도 토큰의 안전성에 대해 많은 것을 알려 줍니다. 민트 권한(mint authority)은 새 토큰을 만들 수 있고, 동결 권한(freeze authority)은 어떤 보유자의 잔액이든 묶어 둘 수 있습니다. 토큰 스캐너, 지갑, DEX가 가장 먼저 확인하는 것이 바로 이 두 가지이며, 노련한 구매자가 가장 먼저 살펴보는 것도 이 두 가지입니다.

아래에서는 각 권한이 실제로 무엇을 할 수 있는지, 토큰에 어떤 다른 권한이 있을 수 있는지, 권한 유지가 정당한 경우와 위험 신호인 경우, 어떤 토큰이든 직접 확인하는 방법, 그리고 ChainTx.Tools Solana 토큰 생성 도구로 권한을 해지하는 방법을 다룹니다.

짧은 결론

권한보유자가 할 수 있는 일해지하면(None으로 설정)밈코인의 일반적인 선택
민트 권한언제든 원하는 양의 새 토큰 발행공급량이 영구히 고정됨해지
동결 권한이 민트의 모든 토큰 계정을 동결하고 다시 해제누구도 계정을 동결할 수 없음해지
메타데이터 업데이트 권한이름, 심볼, 로고, 링크 변경메타데이터를 변경할 수 없게 됨로고와 링크가 확정되면 해지
Token-2022 확장 기능 권한전송 수수료 변경, 누구의 토큰이든 이동·소각, 전송 훅 교체 등설정이 현재 상태로 고정됨그런 확장 기능을 피하거나, 해지할 수 있는 것은 해지

해지는 되돌릴 수 없는 일방통행입니다. Solana 문서에 따르면 권한을 None으로 설정하면 해당 역할이 영구히 제거됩니다. 생성자도, 토큰 프로그램도 이를 복구할 수 없습니다.

민트 계정에 저장되는 정보

Solana에서 토큰은 별도의 스마트 컨트랙트가 아닙니다. 기존 토큰은 모두 하나의 공용 프로그램인 SPL Token이, 새로운 토큰은 Token-2022가 처리합니다. 토큰을 고유하게 만드는 것은 민트 계정입니다. 기존 프로그램에서 민트 계정의 크기는 82바이트이며 mint_authority, supply, decimals, is_initialized 플래그, freeze_authority의 다섯 필드를 담고 있습니다(Solana 문서). 두 권한은 모두 선택 사항이라서, 필드에는 주소가 들어 있거나 비어 있습니다. Token-2022는 이 구조를 그대로 유지하고 그 뒤에 확장 기능(extensions)을 덧붙이며, 확장 기능마다 고유한 권한이 있습니다.

권한은 그저 공개 키일 뿐입니다. 그 뒤에는 일반 지갑이 있을 수도 있고, 멀티시그나 프로그램 파생 주소(PDA)가 있을 수도 있습니다. PDA는 개인 키가 없는 주소로, 특정 프로그램 하나만이 코드에 작성된 규칙에 따라 서명할 수 있습니다. 따라서 중요한 것은 권한이 존재하는지뿐 아니라 누가 그 권한을 보유하고 있는지입니다.

민트 권한: 누가 새 토큰을 만들 수 있는가

민트 권한 보유자는 MintTo를 호출해 어떤 계정에든 원하는 만큼 토큰을 만들 수 있습니다. 토큰 프로그램에는 상한이 없으므로, 권한이 존재하는 한 웹사이트에 적힌 '최대 공급량'은 아무 의미가 없습니다. 공급량은 필드가 비어 있을 때만 진정으로 고정되며, 이때 Solana Explorer는 Fixed Supply라고 표시합니다. 밈코인에서 활성화된 민트 권한은 가장 심각한 위험입니다. 소유자, 또는 소유자의 키를 훔친 누군가가 수십억 개의 토큰을 발행해 풀에 팔아 치우고, 몇 번의 트랜잭션만으로 가격을 0으로 만들 수 있습니다.

그런데도 Solana 최대 규모 토큰 중 일부는 타당한 이유로 민트 권한을 유지합니다.

  • USDC: Circle은 고객이 달러를 입금하면 새 USDC를 발행하고, 상환 시 소각합니다. 이 글을 쓰는 시점에 USDC의 민트 권한은 단일 지갑이 아니라 토큰 프로그램 자체의 2-of-4 멀티시그 계정입니다.
  • 유동성 스테이킹 토큰: JitoSOL의 민트 권한은 SPL Stake Pool 프로그램의 PDA입니다. 새 JitoSOL은 누군가 풀에 SOL을 예치할 때만 발행되며, 누구도 수동으로 발행할 수 없습니다.
  • 보상 토큰과 배출(emission) 토큰: 공개된 일정에 따라 공급량이 늘어나는 토큰으로, 이상적으로는 그 일정이 프로그램으로 강제되거나 권한이 멀티시그에 보관됩니다.

이와 대조적으로 BONK와 JUP는 모두 민트 권한이 None으로 설정되어 있어 공급량이 절대 늘어날 수 없습니다.

중요한 것은 누가 권한을 보유하는가입니다

민트 권한이 활성화되어 있다고 해서 곧 사기라는 뜻은 아니며, 해지되었다고 해서 안전이 보장되는 것도 아닙니다. 밈코인의 민트 권한을 개인 핫월렛이 보유하고 있다면 위험 신호입니다. 규제를 받는 발행사의 멀티시그나 규칙이 공개된 프로그램 PDA라면 그것은 설계상의 선택입니다.

동결 권한: 누가 보유자의 토큰을 묶을 수 있는가

동결 권한 보유자는 해당 민트의 어떤 토큰 계정에든 FreezeAccount를 호출해 동결하고, ThawAccount로 동결을 해제할 수 있습니다. 동결은 민트가 아니라 토큰 계정에 적용됩니다. 동결된 계정은 잔액을 그대로 유지하지만, 동결이 해제될 때까지 토큰을 받거나 전송하거나 소각할 수 없습니다. 동결 권한이 해지되면 그 민트의 계정은 다시는 동결될 수 없습니다.

'모든 토큰 계정'은 말 그대로 전부를 뜻합니다. 보유자의 지갑, 거래소의 입금 계정, 심지어 유동성 풀의 금고(vault)도 포함됩니다. 그래서 동결 권한은 전형적인 사기의 토대가 됩니다. 구매자는 살 수는 있지만 계정이 동결되어 팔 수 없고, 그사이 생성자가 풀의 자금을 빼 갑니다. Solflare는 활성화된 동결 권한을 사기 가능성을 보여 주는 강력한 지표로 봅니다.

정당한 용도는 규정 준수입니다. Circle은 USDC 약관에서 불법 활동과 관련된 특정 USDC 주소를 '차단'할 권리를 보유하고 있으며, Solana에서는 동결 권한이 그 수단입니다. USDC의 경우 동결 권한 역시 토큰 프로그램의 2-of-4 멀티시그가 보유합니다. USDT와 PayPal의 PYUSD도 동결 권한을 유지합니다. 규제를 받는 스테이블코인이라면 당연한 일이지만, 밈코인에는 동결 권한이 존재할 이유가 없습니다.

Token-2022에서는 Default Account State 확장 기능을 사용해 모든 새 토큰 계정이 동결된 상태로 시작하고, 동결 권한 보유자가 해제할 때까지 그대로 있게 만들 수도 있습니다.

메타데이터 업데이트 권한

지갑에 표시되는 이름, 심볼, 로고는 위에서 설명한 민트 필드에 저장되지 않습니다. 이 정보는 메타데이터에 있으며, 메타데이터에는 별도의 권한이 있습니다.

기존 SPL 토큰은 Metaplex Token Metadata 프로그램을 사용합니다. 민트 옆의 별도 계정에 이름(최대 32자), 심볼(최대 10자), 로고와 링크가 담긴 JSON 파일의 URI, 업데이트 권한(update authority), isMutable 플래그가 저장됩니다(Solana 문서). isMutable을 false로 설정하면 되돌릴 수 없습니다. Metaplex에 따르면 토큰이 한번 변경 불가 상태가 되면 업데이트할 수 없습니다.

Token-2022 토큰은 보통 두 가지 확장 기능을 사용해 메타데이터를 민트 안에 보관합니다. Metadata Pointer에는 메타데이터가 다른 주소를 가리키게 할 수 있는 권한이 있고, Token Metadata에는 필드를 변경할 수 있는 업데이트 권한이 있습니다. 이 권한을 비우면 메타데이터가 변경 불가 상태가 됩니다.

메타데이터가 변경 가능하면 소유자가 토큰 이름을 바꾸거나, 인기 토큰의 로고를 베끼거나, 웹사이트 링크를 피싱 사이트로 바꿔 놓을 수 있습니다. 스캐너는 이를 비교적 가벼운 위험으로 봅니다. RugCheck는 'Mutable metadata'를 위험(danger)이 아닌 경고(warning)로 표시하고, Phantom의 토큰 페이지는 토큰이 변경 가능한지 보여 줍니다. 하지만 트레이드오프는 분명히 있습니다. 메타데이터를 변경 불가로 만들면 로고 URL이 깨져도 다시는 고칠 수 없습니다. 먼저 JSON과 이미지를 영구 저장소에 올리고, 여러 지갑에서 제대로 표시되는지 확인하십시오.

Token-2022 확장 기능 권한

Token-2022 확장 기능은 토큰에 새로운 능력을 부여하며, 각 기능에는 고유한 권한이 따릅니다. 이 글을 쓰는 시점에 이 프로그램의 AuthorityType 목록에는 18개 항목이 있습니다. 구매자가 가장 신경 쓰는 것은 다음과 같습니다.

확장 기능권한할 수 있는 일보유자에게 미치는 위험
Transfer Fee수수료 설정 권한(fee-config authority)수수료를 최대 100%까지 변경, 변경은 2에포크 후 적용높음: 사람들이 산 뒤에 수수료를 올릴 수 있음
Transfer Fee보류 수수료 출금 권한(withdraw-withheld authority)보유자 계정에 보류된 수수료 회수단독으로는 낮음
Permanent Delegate위임자어떤 계정에서든 토큰을 전송하거나 소각, 보유자가 취소할 수 없음치명적
Transfer Hook훅 권한모든 전송마다 실행되는 훅 프로그램을 다른 것으로 교체높음: 새 코드가 전송을 막을 수 있음
Mint Close Authority종료 권한공급량이 0이 되면 민트를 닫음낮음
Metadata Pointer포인터 권한메타데이터가 다른 계정을 가리키게 함변경 가능한 메타데이터와 같음

자세한 내용은 Solana 문서의 전송 수수료와 영구 위임자 항목을 참고하십시오.

Token-2022 스테이블코인인 PayPal USD(PYUSD)가 실제 사례입니다. 이 글을 쓰는 시점에 PYUSD 민트에는 민트 권한과 동결 권한 외에도 영구 위임자, 전송 수수료 설정(수수료 0%), 프로그램이 지정되지 않은 전송 훅, 기밀 전송(Confidential Transfers), 메타데이터 포인터, 메타데이터 업데이트 권한, 민트 종료 권한이 있습니다. 규제를 받는 발행사에게 이는 의도적으로 갖춘 규정 준수 도구 모음입니다. 하지만 밈코인에 같은 목록이 있다면 위험 신호의 집합으로 읽힐 것입니다.

권한 유지가 정당한 경우

토큰 유형민트 권한동결 권한이유
밈코인, 커뮤니티 토큰해지해지보유자에게 유일한 보증은 코드뿐
법정화폐 스테이블코인(USDC, USDT)발행사의 멀티시그발행사입금 시 발행, 상환 시 소각, 제재와 법원 명령에 따른 동결
유동성 스테이킹 토큰(JitoSOL)프로그램 PDA없음SOL이 예치될 때 프로그램만 발행
보상 또는 배출 토큰일정을 공개한 프로그램 또는 멀티시그보통 없음설계상 공급량이 늘지만 예측 가능
토큰화된 실물 자산발행사발행사, 흔히 확장 기능 병행KYC, 자산 회수 등 법적 요건

프로젝트에 정말 권한이 필요하다면 브라우저 지갑이 아니라 Squads 같은 멀티시그에 보관하고, 권한이 왜 존재하며 누가 보유하는지 공개적으로 밝히고, 필요 없는 권한은 모두 해지하십시오.

스캐너, 지갑, DEX는 활성 권한을 어떻게 다루는가

  • RugCheck는 'Mint Authority still enabled'와 'Freeze Authority still enabled'를 위험(danger) 수준의 리스크로, 'Mutable metadata'를 경고로 표시합니다. 잘 알려진 스테이블코인은 별도로 처리되는 것으로 보이며, 이런 플래그 없이 표시됩니다.
  • Jupiter: Tokens API는 audit 객체를 반환하며, 그 안에서 mintAuthorityDisabled: false와 freezeAuthorityDisabled: false는 위험 요소로 표시됩니다(Jupiter 문서).
  • Phantom의 토큰 페이지는 토큰이 변경 가능한지, 추가 발행이 가능한지를 상위 보유자 비중과 함께 보여 줍니다(Phantom).
  • DEX: Meteora DLMM은 동결 가능한 민트를 심사 없이 받지 않습니다(Meteora 문서). Orca Whirlpools는 동결 권한이 있는 민트에 토큰 배지를 요구하며, 법규 준수 같은 명확한 이유가 없다면 동결 권한을 비활성화하라고 권고합니다(Orca 문서).
활성화된 동결 권한은 자신의 풀도 막을 수 있습니다

Meteora DLMM과 Orca Whirlpools에서는 아직 계정을 동결할 수 있는 민트는 심사나 배지 없이 풀을 만들 수 없습니다. 동결 권한은 풀을 만든 뒤가 아니라 만들기 전에 해지하십시오.

토큰의 권한을 직접 확인하는 방법

  1. Solscan: solscan.io/token/MINT_ADDRESS를 엽니다. 토큰 프로필 요약에 업데이트 권한, 민트 권한, 동결 권한이 나열된 Authority 필드가 있으며, 해지된 권한은 'N/A'로 표시됩니다(Solscan 가이드).
  2. Solana Explorer: 민트 권한이 없으면 공급량에 'Fixed Supply'라는 표시가 붙고, Mint Authority와 Freeze Authority 행은 권한이 설정된 경우에만 나타납니다. Token-2022 민트의 경우 Transfer Fee Authority, Permanent Delegate 같은 확장 기능 권한도 함께 표시됩니다.
  3. RugCheck: rugcheck.xyz에 민트 주소를 붙여 넣고 위에서 설명한 플래그가 있는지 확인합니다.
  4. ChainTx.Tools: 저희 Solana 토큰 생성 도구의 Set/Update Authority 탭에서 민트 주소를 붙여 넣고 Load token을 클릭합니다. 이 탭은 체인에서 민트와 Metaplex 메타데이터를 읽어, 지갑을 연결하지 않아도 현재의 민트 권한, 동결 권한, 업데이트 권한을 보여 줍니다.
USDC 민트를 불러온 ChainTx.Tools Solana 토큰 생성 도구의 Set/Update Authority 탭
Set/Update Authority 탭에 불러온 USDC: 민트 권한, 동결 권한, 메타데이터 업데이트 권한이 모두 설정되어 있습니다
플래그만 보지 말고 주소를 확인하십시오

권한이 설정되어 있다면 그 권한을 보유한 주소를 열어 보십시오. 멀티시그(USDC의 경우)나 프로그램 PDA(JitoSOL의 경우)는 출시 한 시간 전에 자금이 들어온 새 지갑과는 전혀 다른 이야기를 들려줍니다.

ChainTx.Tools에서 권한을 해지하는 방법

생성 시: Solana 토큰 생성 도구에서는 '발행 권한'(민트 권한)과 '동결 권한' 스위치가 기본적으로 꺼져 있으며, 이는 두 권한이 모두 해지된다는 뜻입니다('끄면 고정 공급', '끄면 동결 불가'). Token-2022에서는 동결 권한이 아예 설정되지 않으며, 민트 권한은 전체 공급량을 발행한 직후 같은 트랜잭션 안에서 해지됩니다. SPL 토큰도 모든 작업이 트랜잭션 하나로 처리됩니다. Pump.fun 유형으로 출시한 코인은 Pump.fun 프로그램의 설계상 두 권한이 모두 없습니다.

기존 토큰의 경우 Set/Update Authority 탭을 사용합니다.

  1. 현재 권한을 보유한 지갑을 연결합니다.
  2. 민트 주소를 붙여 넣고 Load token을 클릭합니다.
  3. 민트 권한과 동결 권한에 대해 Keep(유지), Transfer(이전, 예를 들어 멀티시그로) 또는 Revoke(해지)를 선택합니다. Metaplex 메타데이터의 경우 세 번째 옵션은 Make immutable(변경 불가로 설정)입니다.
  4. Apply changes를 클릭하고 승인합니다. 민트 권한과 동결 권한 변경은 하나의 트랜잭션으로, 메타데이터 변경은 별도의 트랜잭션으로 처리됩니다.

이 탭은 SPL Token과 Token-2022 민트를 모두 지원하지만, 연결한 지갑이 보유한 권한만 변경할 수 있습니다. 그 밖의 권한에는 'Not controlled by your wallet'이라고 표시됩니다.

탭의 한계

이 탭에서 다루는 업데이트 권한은 Metaplex의 권한입니다. 민트 안에 메타데이터가 있는 Token-2022 토큰의 경우 탭에 'No Metaplex metadata on this token'이 표시되며, 메타데이터, 메타데이터 포인터, 전송 수수료, 영구 위임자 권한은 해지할 수 없습니다. 저희 토큰 생성 도구로 만든 Token-2022 토큰은 메타데이터 업데이트 권한(전송 수수료를 활성화한 경우 수수료 관련 권한도)이 생성자의 지갑에 남습니다. 이를 해지하려면 Token-2022용 spl-token CLI를 사용해 권한 키페어로 서명하고, 예를 들어 spl-token authorize MINT_ADDRESS metadata --disable을 실행하십시오.

흔한 실수

  1. 공급량이 확정되기 전에 해지하기: 해지한 뒤에는 토큰을 단 하나도 추가할 수 없으므로 먼저 전체 수량을 발행하십시오.
  2. 해지하지 않고 '데드' 주소에 권한 넘기기: 민트를 확인하는 사람에게는 필드에 주소가 보이며, 아무도 그 주소를 통제하지 않는다는 것을 증명하기는 빈 필드를 보여 주는 것보다 훨씬 어렵습니다.
  3. Token-2022 권한 잊어버리기: 민트 권한과 동결 권한을 해지해도 수수료 설정 권한이나 영구 위임자가 여전히 활성화되어 있다면 소용이 없습니다.
  4. 권한을 해지하면 토큰이 안전하다고 믿기: 해지로 제거되는 것은 특정한 두 가지 위험뿐입니다. 잠기지 않은 유동성, 집중된 공급량, 내부자 지갑은 별도로 확인해야 합니다.

요약

민트 권한은 공급량이 늘어날 수 있는지를, 동결 권한은 누군가 보유자의 잔액을 묶을 수 있는지를, 메타데이터와 Token-2022 권한은 토큰의 정체성과 전송 규칙이 나중에 바뀔 수 있는지를 결정합니다. 밈코인의 기준은 간단합니다. 민트 권한과 동결 권한을 해지하고, 메타데이터가 확정되면 잠그고, 강력한 권한이 딸린 확장 기능은 피하는 것입니다. 스테이블코인과 유동성 스테이킹 토큰은 설계상 일부 권한을 유지하지만, 이를 멀티시그나 프로그램에 맡깁니다. 토큰을 사거나 출시하기 전에 이 필드들을 직접 확인하십시오. Solscan, RugCheck 또는 저희 Set/Update Authority 탭에서 1분이면 충분합니다.

자주 묻는 질문

+민트 권한을 해지하면 어떻게 되나요?

민트 권한 필드가 None으로 설정되어 누구도 다시는 새 토큰을 발행할 수 없으므로 공급량이 고정됩니다. 이 변경은 영구적이며 되돌릴 수 없습니다. 해지하기 전에 필요한 공급량을 모두 발행하십시오.

+해지한 권한을 복구할 수 있나요?

아니요. Solana 토큰 프로그램에는 None으로 설정된 필드에 권한을 다시 지정하는 방법이 없습니다. 바로 이 영구성 때문에 구매자와 스캐너가 해지된 권한을 신뢰합니다.

+동결 권한으로 내 토큰을 가져갈 수 있나요?

아니요, 동결 권한으로는 토큰을 옮길 수 없습니다. 토큰 계정을 동결해, 동결이 해제될 때까지 토큰을 보내거나 받거나 소각하지 못하게 할 수 있을 뿐입니다. 다른 사람의 계정에서 토큰을 옮기거나 소각하려면 Token-2022의 Permanent Delegate 확장 기능이 필요합니다.

+USDC에는 왜 아직 동결 권한이 있나요?

Circle은 규제를 받으며 USDC를 발행하고, 불법 활동, 제재, 법원 명령과 관련된 주소를 차단할 권리를 보유합니다. Solana에서는 이를 동결 권한으로 처리하며, USDC의 동결 권한은 2-of-4 멀티시그가 보유합니다. 규제를 받는 스테이블코인이라면 당연한 일이지만, 밈코인이라면 위험 신호입니다.

+변경 가능한 메타데이터는 사기의 징후인가요?

그것만으로는 아닙니다. RugCheck는 이를 위험이 아닌 경고로 표시하며, 로고나 링크를 고치기 위해 변경 가능 상태를 유지하는 팀도 있습니다. 다만 소유자가 나중에 토큰 이름을 바꾸거나 로고를 교체할 수 있으므로, 완성된 토큰이라면 메타데이터를 변경 불가로 만드는 편이 좋습니다.

+토큰의 권한이 해지되었는지 어떻게 확인하나요?

Solscan에서는 해지된 권한의 Authority 필드에 N/A가 표시되고, Solana Explorer는 민트 권한이 없으면 공급량을 Fixed Supply로 표시합니다. RugCheck는 활성화된 민트 권한과 동결 권한을 위험 수준의 리스크로 표시합니다. ChainTx.Tools Solana 토큰 생성 도구의 Set/Update Authority 탭에서도 지갑을 연결하지 않고 어떤 민트든 불러올 수 있습니다.

+ChainTx.Tools에서 Token-2022 토큰의 메타데이터 권한을 해지할 수 있나요?

현재는 불가능합니다. Set/Update Authority 탭은 SPL Token과 Token-2022 민트 모두의 민트 권한과 동결 권한, 그리고 Metaplex 메타데이터 업데이트 권한을 변경합니다. Token-2022의 네이티브 메타데이터는 spl-token CLI로 잠글 수 있습니다. 예: spl-token authorize MINT_ADDRESS metadata --disable.

토큰 생성

Solana에서 자체 토큰을 출시할 때 가장 흔한 실수

활성 상태의 권한, 위험한 Token-2022 확장 기능, SOL 몇 개만 들어 있는 풀, 잠기지 않은 LP, 번들로 확보한 공급량, 수익 약속까지. 대부분의 Solana 토큰 출시를 무너뜨리는 실수와 각각이 낳는 결과, 피하는 방법을 Raydium, Pump.fun, 온체인 분석가의 수치와 함께 정리했습니다.

· 11분 분량
솔라나

Solana의 SPL Token과 Token-2022, 무엇이 다를까?

Solana에는 기존의 SPL Token과 확장 가능한 Token-2022라는 두 가지 토큰 프로그램이 있습니다. 실제 메인넷 테스트를 바탕으로 생성 비용, 메타데이터, 확장 기능, DEX 지원을 비교하고, 새 토큰에는 어느 쪽을 선택해야 하는지 설명합니다.

· 7분 분량