Skip to content

CONTRACT: NFT Badge Contract #29

@PoulavBhowmick03

Description

@PoulavBhowmick03

Title: Achievement-Based NFT Rewards
Description
Create ERC721 contract for minting achievement badges.

Acceptance Criteria:

  • Mints NFTs for:
    • Top 3 finishes
    • Season-long achievements
    • Special events
  • Stores metadata on IPFS
  • Allows badge upgrades

Technical Details:

#[starknet::contract]
mod NFTRewards {
    use starknet::ContractAddress;

    #[storage]
    struct Storage {
        // ERC721 state
        _name: felt252,
        _symbol: felt252,
        _owners: LegacyMap<u64, ContractAddress>,
        _token_uris: LegacyMap<u64, felt252>
    }

    #[external(v0)]
    fn mint_achievement(
        ref self: ContractState,
        to: ContractAddress,
        achievement_type: u8,
        metadata_cid: felt252
    ) {
        assert(get_caller_address() == self.minter.read(), 'Unauthorized');
        let token_id = self._next_id.read();
        self._mint(to, token_id);
        self._token_uris.write(token_id, metadata_cid);
    }
}

Notes:

  • Implement ERC721 metadata extension
  • Add achievement tier system
  • Test batch minting

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions