--- id: wiki-2026-0508-play-and-earn title: Play and Earn category: 10_Wiki/Topics status: verified canonical_id: self aliases: [P&E, Play to Earn 진화, Sustainable Play-and-Earn] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [monetization, web3, tokenomics, game-economy, play-and-earn] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: solidity framework: hardhat --- # Play and Earn ## 매 한 줄 > **"매 fun-first, earning은 byproduct"**. 매 2021-2022 P2E 붕괴 (Axie Infinity death spiral) 의 lesson 으로 emerge 한 hybrid model — 매 game 의 핵심은 entertainment, token reward 는 retention sweetener. 매 2026 sustainable Web3 game 의 dominant frame. ## 매 핵심 ### 매 P2E vs P&E - **P2E (2021)**: 매 earning 이 primary motivation. 매 grinding farm. 매 mercenary players → token dump → economy collapse. - **P&E (2024+)**: 매 fun 이 primary. 매 token 은 long-term retention reward. 매 player base 의 50%+ 가 non-earners 이어도 ok. - **결정적 차이**: 매 game 의 token 없으면 still fun? P&E = yes, P2E = no. ### 매 economic design pillars - **Sink/Faucet ratio**: 매 token issuance ≤ token burn (장기 deflationary 또는 stable). - **Non-token utility**: 매 cosmetics, social, competitive ranking → 매 non-earner motivation. - **Soulbound progression**: 매 character XP / achievement 는 non-transferable → grinder farm 차단. - **Skill gate**: 매 earning rate 가 player skill 에 비례 → bot resistance. ### 매 응용 1. Pixels (Ronin) — 매 farming-sim 으로 daily active 600k+ 유지 (2025). 2. Off the Grid (Avalanche) — 매 Battle royale, AAA quality, optional NFT. 3. Illuvium — 매 auto-battler + open world, token earning은 ranked play 에 한정. ## 💻 패턴 ### Reward emission curve (deflationary) ```solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; contract PlayAndEarnReward { uint256 public constant INITIAL_DAILY_EMISSION = 100_000 ether; uint256 public constant HALVING_PERIOD = 180 days; uint256 public immutable startTime; constructor() { startTime = block.timestamp; } function currentDailyEmission() public view returns (uint256) { uint256 halvings = (block.timestamp - startTime) / HALVING_PERIOD; if (halvings >= 10) return 0; return INITIAL_DAILY_EMISSION >> halvings; } } ``` ### Skill-gated earning ```typescript function earnedTokens(matchResult: MatchResult): number { const base = matchResult.won ? 10 : 2; const skillMultiplier = Math.min(matchResult.mmr / 1500, 3.0); const dailyCapRemaining = getDailyCapRemaining(matchResult.userId); return Math.min(base * skillMultiplier, dailyCapRemaining); } ``` ### Soulbound progression ```solidity contract SoulboundXP is ERC721 { function _update(address to, uint256 tokenId, address auth) internal override returns (address) { address from = _ownerOf(tokenId); require(from == address(0) || to == address(0), "Soulbound: non-transferable"); return super._update(to, tokenId, auth); } } ``` ### Sink: cosmetic burn ```typescript async function craftCosmetic(userId: string, cosmeticId: string) { const cost = COSMETIC_COSTS[cosmeticId]; await burnTokens(userId, cost); await mintCosmetic(userId, cosmeticId); await emitTelemetry({ type: 'sink_burn', amount: cost, source: 'cosmetic' }); } ``` ### Non-token leaderboard ```typescript interface SeasonReward { rank: number; cosmetic: string; // soulbound tokenBonus?: number; // top 10% only title: string; // permanent } ``` ### Anti-bot detection ```python def is_likely_bot(user_session) -> float: signals = { 'click_variance': click_timing_variance(user_session), 'movement_entropy': mouse_path_entropy(user_session), 'session_regularity': cron_like_score(user_session.history), } return weighted_sigmoid(signals) ``` ### Emission throttle (treasury-controlled) ```solidity function adjustEmission(uint256 newDaily) external onlyDAO { require(newDaily <= currentDailyEmission() * 110 / 100, "Max +10%/epoch"); require(newDaily >= currentDailyEmission() * 90 / 100, "Max -10%/epoch"); dailyEmission = newDaily; emit EmissionAdjusted(newDaily, treasuryRunwayDays()); } ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Casual mobile audience | Token-optional (P&E) | | Hardcore competitive | Skill-gated earning | | F2P with whales | 매 hybrid IAP + token reward | | Pure speculation play | 매 avoid — P2E 함정 | **기본값**: 매 P&E + skill-gate + soulbound progression. ## 🔗 Graph - 변형: [[Free-to-Play]] - Adjacent: [[LiveOps]] ## 🤖 LLM 활용 **언제**: 매 Web3 game economy design 시 — 매 sustainable token model 이 필요할 때. **언제 X**: 매 traditional F2P (token 없이) — overkill. ## ❌ 안티패턴 - **Pure P2E**: 매 earning 이 fun 의 substitute. 매 mercenary churn → death spiral. - **Unlimited token mint**: 매 inflation. 매 Axie SLP 의 답습. - **Transferable XP**: 매 grinder farm. 매 Ronin botting outbreak. - **No sink**: 매 token velocity 0. 매 price collapse. ## 🧪 검증 / 중복 - Verified (Sky Mavis post-mortem 2023, Ronin Network reports 2024-2025). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — P&E vs P2E 구분, sustainable design pillars 추가 |