Solana 블록체인 기반 NFT 몬스터 수집·육성 플랫폼.
Anchor 스마트 컨트랙트 설계부터 프론트엔드 지갑 연동까지 풀스택으로 개발한 개인 프로젝트입니다.
| 영역 | 스택 |
|---|---|
| Smart Contract | Rust, Anchor 0.32.1, anchor-spl 0.32.1, mpl-token-metadata 5.1.1 |
| Frontend | Next.js (Pages Router), TypeScript |
| Blockchain | Solana (Devnet) |
| Storage | Pinata (IPFS) |
관리자: init_collection → init_reward_token
유저: mint_monster → claim_reward → level_up → (반복) → transfer / burn
총 7개의 Instruction을 설계·구현하고 Devnet에 배포했습니다.
| # | Instruction | 설명 | 권한 |
|---|---|---|---|
| 1 | init_collection |
Collection NFT 생성 (Metaplex Certified Collection) | 관리자 |
| 2 | init_reward_token |
SMON 토큰 Mint 생성, PDA에 Mint Authority 위임 | 관리자 |
| 3 | mint_monster |
몬스터 NFT 발행 + MonsterState PDA 초기화, IPFS 메타데이터 연동 | 유저 |
| 4 | claim_reward |
NFT 보유 확인 → 시간 기반 토큰 발행 (CPI) | 유저 |
| 5 | level_up |
토큰 burn → 레벨/경험치 업데이트 | 유저 |
| 6 | burn_monster |
NFT 소각 → 레벨 비례 토큰 보상 → PDA close (rent 회수) | 유저 |
| 7 | transfer_monster |
NFT 전송 + PDA owner 업데이트 | 유저 |
- PDA 기반 계정 구조 설계 — 싱글톤(
ProjectConfig), per-NFT(MonsterState), 글로벌 권한(RewardTokenAuthority) 패턴 적용 - Metaplex CPI 연동 — metadata / master_edition을 UncheckedAccount로 선언, Metaplex CPI 시점에 유효성 검증 위임
- SPL Token 보상 시스템 — Mint Authority를 PDA로 위임하여 프로그램 내 토큰 발행·분배
- 토큰 이코노미 — 시간 기반 리워드, 레벨 비례 비용/보상 설계
| PDA | Seed | 역할 |
|---|---|---|
MonsterState |
["monster", nft_mint] |
NFT 1개당 1개, 레벨·경험치·소유자 저장 |
RewardTokenAuthority |
["reward_authority"] |
SMON 토큰 Mint Authority |
ProjectConfig |
["config"] |
전역 설정 (관리자, 컬렉션, 리워드 토큰) |
커스텀 훅 기반으로 각 Instruction별 트랜잭션 로직을 분리했습니다.
| Hook | 역할 |
|---|---|
useMintMonster |
몬스터 NFT 발행 트랜잭션 |
useMyMonsters |
보유 몬스터 목록 조회 |
useLevelUp |
레벨업 트랜잭션 |
useClaimReward |
보상 토큰 Claim 트랜잭션 |
각 훅은 대응하는 컴포넌트 + .module.css와 함께 구성되어 있습니다.
- Program ID:
AoNegzH2FQjijiDxEU8gsM8RLVeByKEdvcE86AvFAa9i - Network: Solana Devnet
- Rust & Cargo
- Solana CLI
- Anchor CLI 0.32.1
- Node.js 18+
- Phantom Wallet (브라우저 확장)
yarn install
anchor build
anchor deploy --provider.cluster devnet
cd app && yarn devNote: 빌드 시
platform-tools v1.48→v1.43디렉토리 복사가 필요할 수 있습니다.
Solanaブロックチェーン上でNFTモンスターを収集・育成するプラットフォームです。
Anchorスマートコントラクトの設計からフロントエンドのウォレット連携まで、フルスタックで開発した個人プロジェクトです。
| 領域 | スタック |
|---|---|
| Smart Contract | Rust, Anchor 0.32.1, anchor-spl, mpl-token-metadata |
| Frontend | Next.js (Pages Router), TypeScript |
| Blockchain | Solana (Devnet) |
| Storage | Pinata (IPFS) |
管理者: init_collection → init_reward_token
ユーザー: mint_monster → claim_reward → level_up → (繰り返し) → transfer / burn
- 7つのInstruction — コレクション初期化、モンスターMint、レベルアップ、報酬トークンClaim、バーン、転送
- PDAベースのアカウント設計 — シングルトン(
ProjectConfig)・per-NFT(MonsterState)・グローバル権限(RewardTokenAuthority)パターン - Metaplex CPI連携 — metadata / master_editionをCPI時にMetaplexプログラムへ検証委任
- SPLトークン報酬システム — Mint AuthorityをPDAに委任し、プログラム内でトークン発行・分配
- トークンエコノミー — 時間ベースのリワード、レベル比例のコスト・報酬設計
| PDA | Seed | 役割 |
|---|---|---|
MonsterState |
["monster", nft_mint] |
NFT1つにつき1つ、レベル・経験値・所有者を保存 |
RewardTokenAuthority |
["reward_authority"] |
SMONトークンのMint Authority |
ProjectConfig |
["config"] |
グローバル設定(管理者、コレクション、報酬トークン情報) |
Next.js + TypeScriptで構築。useMintMonster、useLevelUp、useClaimReward等のカスタムフックでトランザクションロジックを分離し、各フックに対応するコンポーネントと.module.cssで構成しています。
- Program ID:
AoNegzH2FQjijiDxEU8gsM8RLVeByKEdvcE86AvFAa9i - Network: Solana Devnet