Solana Token Extensions 설명
Web2에서는 전송 수수료를 부과하기 위해 미들웨어가 필요합니다. Solana는 간단한 플래그(flag)를 사용합니다.
저는 6일 동안 4개의 토큰을 만들었습니다. 이 과정을 통해 Solana가 신원(identity), 수수료, 그리고 제한 사항을 어떻게 처리하는지 배웠습니다. 제가 발견한 내용은 다음과 같습니다.
기본 민트 (The Basic Mint) 기본 토큰은 단순한 주소일 뿐입니다. 이름이나 심볼이 없습니다. 지갑으로 토큰을 직접 받을 수 없습니다. 각 토큰 유형마다 별도의 토큰 계정(token account)이 필요합니다. 민트를 공장이라고 생각하고, 토큰 계정을 여러분의 바구니라고 생각하세요.
메타데이터를 통한 신원 확인 (Identity with Metadata) 메타데이터가 없는 토큰은 그저 무작위 텍스트 문자열일 뿐입니다. 기존 Token Program은 메타데이터를 위해 별도의 계정을 필요로 합니다. Token Extensions Program (Token-2022)은 이를 변경했습니다. 이름, 심볼, URI를 민트에 직접 저장합니다. 하나의 민트가 모든 것을 처리합니다. 추가 계정이 필요하지 않습니다.
전송 수수료 (Transfer Fees)
Web2에서 수수료를 부과하는 것은 어렵습니다. 사용자가 이를 우회하지 못하도록 로직을 구축해야 합니다.
Solana에서는 transfer-fee-basis-points 플래그를 사용합니다.
토큰에 2%의 수수료를 설정했습니다. 100개의 토큰을 보냈을 때, 수신자는 98개만 받았습니다.
프로토콜이 2개의 토큰을 자동으로 차감했습니다.
수수료 로직은 민트에 존재합니다. 모든 전송은 이 규칙을 따릅니다. 추가 코드가 필요하지 않습니다.
소울바운드 토큰 (Soulbound Tokens) 어떤 토큰은 이동해서는 안 됩니다. 인증서나 신원 배지 용도로 사용하세요. Token-2022 프로그램에는 양도 불가능(non-transferable) 확장 기능이 있습니다. 양도 불가능한 토큰을 다른 지갑으로 보내려고 시도했습니다. 블록체인이 즉시 이를 거부했습니다. 프로토콜이 규칙을 강제했습니다. 어떤 미들웨어나 관리자 권한으로도 이를 변경할 수 없었습니다. 보유자는 토큰을 소각(burn)할 수는 있지만, 타인에게 보낼 수는 없습니다.
요약 (My Takeaway) 프로토콜은 사용자의 의도를 알 필요 없이 규칙을 강제합니다. 트랜잭션을 왜 보내는지 상관하지 않습니다. 오직 트랜잭션이 민트 규칙을 따르는지만 확인합니다.
저는 다음 단계로 토큰 구축에서 프로그램 구축으로 넘어가려 합니다.
Optional learning community: https://t.me/GyaanSetuAi