일반
청구 가능한 SPL 토큰 에어드롭 생성하기
Last updated January 6, 2025
개요
Gumdrop은 청구 가능한 에어드롭을 생성할 수 있는 Solana 프로그램입니다. 토큰을 지갑에 직접 보내는 직접 에어드롭과 달리, Gumdrop은 사용자가 적극적으로 할당량을 청구해야 하는 청구 메커니즘을 생성합니다. 이 접근 방식에는 여러 가지 이점이 있습니다:
- 청구하는 사용자에게만 토큰을 전송하고 청구자가 트랜잭션 비용을 부담하게 하여 비용을 절감합니다
- 다양한 방법을 통한 사용자 신원 확인을 허용합니다
- 배포 방법(지갑, 이메일, SMS, Discord)에 유연성을 제공합니다
- 청구되지 않은 토큰을 회수할 수 있는 기능과 함께 시간 제한 청구를 가능하게 합니다
이 가이드는 Gumdrop을 사용하여 청구 가능한 SPL 토큰 에어드롭을 생성하는 방법을 보여줍니다.
작동 원리
- Gumdrop을 생성할 때 배포 목록에서 머클 트리가 생성됩니다
- 머클 루트가 Gumdrop 프로그램의 일부로 온체인에 저장됩니다
- 각 수신자는 트리에서의 위치에서 파생된 고유한 머클 증명을 받습니다
- 청구할 때 증명이 온체인 루트와 대조하여 확인되어 다음을 보장합니다:
- 청구자가 원래 배포 목록에 있음
- 올바른 양의 토큰을 청구하고 있음
- 이전에 청구하지 않았음
전제조건
- Node.js 14
- Solana CLI 도구 설치
- SPL 토큰과 Solana 블록체인에 대한 기본 지식
- 트랜잭션 수수료를 위한 자금이 있는 지갑
필수 도구
Gumdrop CLI를 설치하세요:
git clone https://github.com/metaplex-foundation/gumdrop
yarn install
SPL 토큰 생성
먼저 배포될 SPL 토큰을 생성하세요. 우리 가이드를 따르거나 sol-tools.io와 같은 도구를 사용할 수 있습니다.
토큰 양
전체 배포 목록을 커버할 수 있는 충분한 토큰과 테스트를 위한 여분을 발행했는지 확인하세요.
배포 방법
사용자에게 증명을 배포하기 위해 Gumdrop은 여러 배포 방법을 지원합니다. 지갑 기반 배포는 다음과 같은 이유로 권장됩니다:
- 더 나은 신뢰성
- 더 간단한 구현
- 외부 서비스에 대한 의존성 없음
- 직접 지갑 확인
지갑 배포의 경우 다음 중 하나를 수행해야 합니다:
- 이미 사용 가능한 Discord 봇 중 하나를 사용하여 필요한 증명 데이터가 포함된 청구 URL을 사용자에게 보냅니다. 또는:
- 지갑 주소별로 인덱싱된 데이터베이스에 청구 데이터를 저장합니다
- 사용자가 지갑을 연결할 때 청구 데이터를 가져오는 프론트엔드를 생성합니다
- 청구 데이터를 사용하여 온체인 청구 트랜잭션을 실행합니다
다른 배포 방법들:
- AWS SES를 통한 이메일
- AWS SNS를 통한 SMS
- Discord API를 통한 Discord
배포 목록 설정
SPL 토큰을 생성한 후 배포 목록을 생성해야 합니다. 이 목록은 누가 토큰을 청구할 수 있는지와 그 양을 정의합니다. 이 데이터는 다음을 위해 사용됩니다:
- 각 수신자를 위한 고유한 청구 증명 생성
- 확인을 위해 루트가 온체인에 저장되는 머클 트리 생성
- 나열된 수신자만이 정확한 할당량을 청구할 수 있도록 보장
배포 목록이 포함된 JSON 파일을 생성하세요:
[
{
"handle": "8SoWVrwJ6vPa3rcdNBkhznR54yJ6iQqPSmgcXVGnwtEu",
"amount": 10000000
},
{
"handle": "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
"amount": 5000000
}
]
토큰 양
양은 소수점 없이 지정해야 합니다. 예를 들어, 6개의 소수점을 가진 민트의 10개 토큰을 드롭하려면 10000000 (10 * 10^6)을 지정하세요.
handle은 다음이 될 수 있습니다:
- 직접 배포를 위한 지갑 주소 권장
- AWS SES 배포를 위한 이메일 주소
- AWS SNS 배포를 위한 전화번호
- Discord 배포를 위한 Discord 사용자 ID
Gumdrop 생성
이전에 다운로드하고 설치한 Gumdrop CLI를 사용하여 에어드롭을 생성하세요. 명령어는 다음과 같습니다:
ts-node gumdrop-cli.ts create \
-e devnet \
--keypair <KEYPAIR_PATH> \
--distribution-list <PATH_TO_JSON> \
--claim-integration transfer \
--transfer-mint <TOKEN_MINT> \
--distribution-method <METHOD>
Gumdrop 키페어
CLI는 키페어가 포함된 .log 폴더를 생성합니다. Gumdrop 계정을 닫고 청구되지 않은 토큰을 회수하는 데 필요하므로 저장하세요.
청구 인터페이스 호스팅
사용자는 토큰을 청구하기 위한 프론트엔드 인터페이스가 필요합니다. 다음 중 하나를 선택할 수 있습니다:
https://gumdrop.metaplex.com의 호스팅된 버전 사용자체 인터페이스 호스팅 권장. Gumdrop 프론트엔드를 시작점으로 사용하고 필요에 맞게 사용자 정의할 수 있습니다. 예를 들어, 연결된 지갑을 기반으로 사용자의 청구 데이터를 자동으로 채워 사용자 경험을 대폭 향상시킬 수 있습니다.
출시 전:
- 작은 배포 목록으로 데브넷에서 테스트
- 청구 URL과 증명이 올바르게 작동하는지 확인
- 종료 프로세스 테스트
Gumdrop 종료
에어드롭 기간이 끝난 후 청구되지 않은 토큰을 회수하세요:
ts-node gumdrop-cli.ts close \
-e devnet \
--base <GUMDROP_KEYPAIR> \
--keypair <AUTHORITY_KEYPAIR> \
--claim-integration transfer \
--transfer-mint <TOKEN_MINT>
결론
Gumdrop은 청구 기반 메커니즘을 통해 SPL 토큰을 배포하는 강력하고 유연한 방법을 제공합니다. 이 접근 방식은 기존 에어드롭에 비해 여러 가지 장점을 제공합니다:
- 비용 효율성: 트랜잭션 비용은 배포자가 아닌 청구자가 지불합니다
- 제어된 배포: 검증된 수신자만이 할당된 토큰을 청구할 수 있습니다
- 복구 가능성: 에어드롭 기간 후 청구되지 않은 토큰을 회수할 수 있습니다
- 유연성: 선호하는 채널을 통해 사용자에게 도달하는 다양한 배포 방법
Gumdrop을 구현할 때:
- 가장 신뢰할 수 있는 경험을 위해 지갑 기반 배포를 선택하세요
- 메인넷 배포 전에 데브넷에서 철저히 테스트하세요
- 더 나은 사용자 경험을 위해 커스텀 프론트엔드 구축을 고려하세요
- 나중에 종료할 수 있도록 Gumdrop 키페어를 저장하세요
이 가이드를 따라하면 사용자에게 원활한 청구 경험을 제공하면서도 제어할 수 있는 안전하고 효율적인 토큰 배포 시스템을 만들 수 있습니다.
도움이 필요하신가요?
- 지원을 위해 Discord에 참여하세요
- Metaplex Gumdrop 문서를 확인하세요
- 소스 코드를 검토하세요
