Fan Reward Token Contract

What it does:
Issues on-chain tokens to reward fans for engagement, purchases, content promotion, or participation in creator communities.

Why it matters:
Increases fan loyalty, incentivizes engagement, and provides a transparent, tradable token that can unlock perks, access, or voting rights.

How it works:

  • Creator deploys a token contract for their fan base (ERC20 or similar standard)

  • Fans earn tokens via actions: subscribing, sharing content, attending events, or supporting projects

  • Tokens can be used for perks, exclusive content, voting in DAOs, or exchanged on marketplaces

  • Smart contract tracks balances and enforces transfer rules or lockups

  • Optionally integrates with NFT ownership for bonus rewards or gamified multipliers

  • Token distribution and history are fully transparent and auditable

  • Can integrate with subscription contracts, pay-per-view content, or fan DAOs

      // SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

/**
 * @title FanRewardToken
 * @author Nam
 * @notice ERC20 token to reward fans for engagement and participation
 */
contract FanRewardToken is ERC20, Ownable {

    constructor(string memory name, string memory symbol) ERC20(name, symbol) {}

    // -------------------- TOKEN DISTRIBUTION --------------------

    function mint(address to, uint256 amount) external onlyOwner {
        _mint(to, amount);
    }

    function burn(address from, uint256 amount) external onlyOwner {
        _burn(from, amount);
    }

    // Optional: integration with NFT ownership or subscription contracts
    // function rewardForNFT(address fan, uint256 nftId) external onlyOwner { ... }
}