GameFi & Play-to-Earn
Game economies, NFT integration, tokenomics, and blockchain gaming.
Overview
GameFi combines gaming with DeFi and NFTs.
Game Economy
Architecture Diagram
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Game Economy ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Players ā Earn tokens/NFTs ā
ā Trade ā Marketplace ā
ā Stake ā Yield generation ā
ā Govern ā DAO voting ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
In-Game Token
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
contract GameToken is ERC20, AccessControl {
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
constructor() ERC20("GameToken", "GAME") {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(MINTER_ROLE, msg.sender);
}
function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {
_mint(to, amount);
}
}
Game NFT
contract GameItem is ERC721 {
uint256 private _tokenIdCounter;
mapping(uint256 => uint256) public itemLevel;
function mintItem(address player, uint256 level) public returns (uint256) {
uint256 tokenId = _tokenIdCounter;
_tokenIdCounter++;
_safeMint(player, tokenId);
itemLevel[tokenId] = level;
return tokenId;
}
function upgradeItem(uint256 tokenId) public {
require(ownerOf(tokenId) == msg.sender);
itemLevel[tokenId]++;
}
}
Tokenomics
| Component | Allocation |
|---|---|
| Play-to-Earn | 40% |
| Team | 20% |
| Treasury | 20% |
| Investors | 10% |
| Marketing | 10% |
Best Practices
- Sustainable economics ā Balance inflation/deflation
- Fun first ā Gameplay over earnings
- Anti-cheat ā Prevent exploits
- Community ā Player engagement
Practice
Design a simple play-to-earn game economy.