ETHDO.ME
Makerspace NFT Concept

Implementation & Documentation
By Wiggles,
January 2025
Version: 1.0

1. Introduction

I am pleased to share my proposal for implementing and documenting the ETHDO.ME Makerspace NFT Contract for ETHDenver 2025. My plan focuses on using a single smart contract—based on the ERC-1155 token standard— to manage a wide range of token types. By unifying both fungible “points” and various unique NFTs into a single contract address, I aim to streamline the user experience and simplify deployment, making it more efficient to administer and track.

2. Disclaimer

  • Not Financial Advice: This document is for educational and informational purposes only. It does not constitute legal, financial, or any other professional advice.
  • Security: All code is subject to audit before production deployment.
  • Ownership & IP: Modifications or distributions of the code must comply with the MIT license.
  • Dynamic Content: Token IDs, supply, minting rules, and metadata hosting may change to adapt to evolving needs.

3. Overview of the Concept

Purpose

The ETHDO.ME Makerspace at ETHDenver 2025 aims to:

  • Reward Engagement: Provide a fun, gamified points system for event participants.
  • Celebrate Milestones: Award distinct NFT badges for completing missions, quests, daily achievements, sponsorships, and more.
  • Allow Flexible Growth: Create a structure that can effortlessly scale or introduce new tokens, sponsor NFTs, and bonus missions at any point.

Why a Single Contract?

By leveraging ERC-1155, I can manage everything—both fungible and non-fungible tokens—under one verified contract. This simplifies:

  • Deployment & Maintenance: Only one contract to update and verify.
  • User Experience: All tokens live within a single, consistent “collection” for participants.

4. Benefits of ERC-1155

  • Multi-Token Standard: Supports fungible, semi-fungible, and non-fungible tokens from one contract.
  • Gas Efficiency: Batch operations like mintBatch and safeBatchTransferFrom help reduce costs.
  • Unified Contract: Potentially unlimited token types (IDs) with differing supply constraints, all in a single contract.

5. Token Types for ETHDO.ME

The following tokens will be created and managed within this single ERC-1155 contract:

  1. Points Token (Fungible, ID=0)
    Unlimited supply, representing each participant’s cumulative points.
  2. Co-Creator NFT
    For staff, volunteers, mentors, sponsors, donors, and performers.
  3. ETHDO.ME NFT (General Participation)
    A collectible NFT for anyone who participates in the event.
  4. Daily Winner NFTs
    Awarded each day to the top 3 participants (by their points balance).
  5. ETHDO.ME Champion NFTs
    Awarded at the conclusion of the event to the top 3 participants overall.
  6. Maker Mission NFTs (8 Types)
    Each mission has a unique token ID; one NFT minted upon mission completion.
  7. Quest NFTs (8 Unique, Repeatable)
    Each quest has a unique ID; participants can earn multiples if the quest is repeatable.
  8. Joy of Giving NFT
    A special badge for donors.
  9. Chain Reaction Game Show NFTs
    For 1st, 2nd, and 3rd place winners in a live, Ethereum-themed game.
  10. Secret Weapon NFT
    A rare recognition bestowed by mentors for exceptional skill or creativity.
  11. Future Tokens
    Reserved for potential expansions, new sponsor NFTs, or other creative additions during or after ETHDenver 2025.

6. Contract Structure & Deployment

6.1. Code Foundation

I plan to build on the OpenZeppelin libraries for security and reliability:

  • @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol
  • @openzeppelin/contracts/access/Ownable.sol

The contract will inherit from ERC1155Supply to track total supply per token ID and Ownable to ensure only authorized addresses can mint or burn.

6.2. Key Variables

  • POINTS_TOKEN_ID = 0
  • currentTokenId = 1 (increments as new token types are created)

6.3. Deployment

  1. Set Base URI: In the constructor, define baseURI = "https://ethdo.me/metadata/{id}.json".
  2. Verify the Contract: Verify on Etherscan (or similar) for transparency.
  3. Transfer Ownership: Optionally move ownership to a multisig or suitable address for security.

7. Minting During ETHDenver 2025

7.1. Points (ID=0)

Mint via mintPoints(user, amount) or mint(user, 0, amount). Used as the primary scoring mechanism. Unlimited supply.

7.2. Co-Creator NFT

Reserve a specific token ID (e.g. 1) for co-creators. To distribute, call mint(coCreatorAddress, 1, 1) exactly once per co-creator.

7.3. ETHDO.ME NFT

Could be ID 2. Mint one to each participant upon registration or their first completed activity:

mint(participant, 2, 1);
    

7.4. Daily Winner NFTs

Each day, pick the top 3 participants by balanceOf(player, 0). Options:

  • Use one ID each for 1st, 2nd, and 3rd place, or
  • Create new token IDs daily for dynamic distribution.

7.5. ETHDO.ME Champion NFTs

Awarded at the event’s end to the final top 3 overall. Use a single ID minted to three winners or separate IDs for 1st/2nd/3rd.

7.6. Maker Mission NFTs (8 Types)

Assign IDs (e.g., 10–17) for eight distinct missions. Mint exactly one NFT upon completion for each participant (prevent duplicates if only one attempt is allowed).

7.7. Quest NFTs (Repeatable)

Another set of 8 IDs (e.g., 18–25). Participants can earn multiple copies when they replay the quest. Each attempt triggers mint(user, questId, 1).

7.8. Joy of Giving NFT

For donors. Reserve an ID (e.g., 30). Upon donation, mint(donor, 30, 1).

7.9. Chain Reaction Game Show NFTs

1st, 2nd, and 3rd place distributed similarly to Daily Winner NFTs. Assign unique IDs or reuse existing ones.

7.10. Secret Weapon NFT

A special, rare NFT minted at mentors’ discretion for outstanding skill or creativity. Could be a single ID or multiple IDs for unique versions.

7.11. Future Expansion

New sponsor badges, special quests, or side missions can be introduced by creating new token IDs as needed.

8. Metadata & User Experience

8.1. Storing Metadata

Default Approach: baseURI = "https://ethdo.me/metadata/{id}.json". Wallets/marketplaces replace {id} with the token ID in hex.

IPFS Option: setURI("ipfs://QmHash/{id}.json") for decentralized hosting.

8.2. Viewing in Wallets

ERC-1155 is supported by major marketplaces and wallets. Points (fungible) might appear as a single collectible with a quantity.

9. Scoring & Ranking Logic

  • Off-Chain Tally: Periodically query balanceOf(player, 0) and sort by points.
  • Automated Scripts: Nightly or daily scripts can mint the Daily Winner NFTs to top 3 addresses.

10. Security & Key Management

Ownership Model: Ownable restricts mint/burn to the contract owner or authorized addresses. Role-Based Access: If multiple team members need mint privileges, consider implementing AccessControl.

11. Post-Event Possibilities

Ongoing Utility: Participants can hold or trade their NFTs, which may unlock perks (discounts, VIP access, future events). Multiple Editions: The same contract can be reused or extended for future ETHDO.ME events, ensuring continuity.

12. Conclusion

This plan, using a single ERC-1155 contract, will simplify administration of the ETHDO.ME Makerspace NFT Concept during ETHDenver 2025. It consolidates deployment, streamlines the user experience, and provides flexibility for growth and future expansions. After appropriate auditing and refinement, it should provide a seamless, secure, and enjoyable experience for all.

Note: All details are subject to change based on final event schedules, sponsor requirements, audits, and feedback.