dash.foogy
entity updated 2026-07-04 live

depunks

Summary: In-house Web3 NFT project on Ethereum mainnet — ERC-721 characters + ERC-1155 traits with on-chain PRNG and equip/burn, plus a shipped agent-identity layer (ERC-8004 via Adapter8004; the OpenSea “Agents list” a.k.a. opensea-erc8217).

What it is

DePunks is a fully in-house NFT project: contracts, the app, and tooling are all built and owned by the team (repo depunks). Base characters are ERC-721 “DePunks”; collectible traits are ERC-1155 “Attributes” sold in random packs and burned when equipped onto a character. On top of the collection sits an agent layer that promotes individual DePunks to on-chain AI-agent identities.

Stack / where it lives

  • Repo: ~/Documents/localhost/depunks (contracts + app/ + tooling; remote github.com/damir5/depunks)
  • Chain: Ethereum mainnet
  • Contracts: Solidity + Foundry, OpenZeppelin, UUPS upgradeable proxies. contracts/README.md
  • App: RedwoodSDK-style worker app under app/ (agent manifest surface, admin, metadata hosting).

Contracts (from contracts/src/*.sol and contracts/README.md)

  • DePunk.sol — ERC-721 upgradeable character NFT: blind mint, delayed reveal, ERC-2981 royalty enforcement (5%), dynamic metadata that updates when attributes are equipped. Also carries the new agent fields (agentTier, applyMetadataWithSig, metadataNonce). contracts/src/DePunk.sol
  • Attribute.sol — ERC-1155 traits (caps, eye patches, pipes) sold in random packs, burned on equip. contracts/README.md
  • Equipment system — equips attributes to a DePunk, burns the attribute, updates metadata. contracts/README.md
  • DePunkBot.sol — transferable unrevealed “Bot” line minted from DePunk base burns, revealed by linking to an upgraded DePunk. contracts/src/DePunkBot.sol
  • DePunkToken.sol — fixed-supply ERC-20 for the Phase 2 token launch. contracts/src/DePunkToken.sol
  • DePunkClaim.sol — server-signed one-time claim contract for upgrade and base-burn claims. contracts/src/DePunkClaim.sol
  • LibPRNG.sol — on-chain pseudo-random number library used for fair pack/trait distribution (with MEV considerations). contracts/src/LibPRNG.sol, contracts/README.md

Live mainnet address

  • DePunk ERC-721 proxy: 0xce7a61D155623f5Eb867a322100a5a6e2C917311 — the production proxy, referenced as DEPUNK_PROXY / PRODUCTION_DEPUNK. contracts/script/UpgradeDePunkMinimal.s.sol, contracts/test/OpenSeaTransferSecurityFork.t.sol

Agent identity — ERC-8004 + Adapter8004 (SHIPPED on mainnet)

The “agent NFT” feature is built on ERC-8004 (“Trustless Agents”), not literally “ERC-8217” (that string does not appear in the repo). The public-facing / OpenSea framing of the same idea is the Agent NFT Identity Binding — see opensea-erc8217.

  • Adapter8004 (interface IERCAgentBindings) holds the ERC-8004 identity token and delegates control to whoever currently owns the bound DePunk — the DePunk never leaves the holder’s wallet; binding is permanent and follows the punk on transfer. app/plan/agents-8004.md
  • Adapter8004 mainnet: 0xde152AfB7db5373F34876E1499fbD893A82dD336 (chain 1); Sepolia 0x7621630cB63a73a194f45A3E6801B8C6A7eC2f92. app/src/app/abi/adapter8004.ts
  • ERC-8004 Identity Registry (mainnet) 0x8004a169fb4a3325136eb29fa0ceb6d2e539a432. app/plan/agents-8004-scoring.md
  • Key functions (app/src/app/abi/adapter8004.ts):
    • register(uint8 standard, address tokenContract, uint256 tokenId, string agentURI) → agentId — called by the current NFT holder; standard 0 = ERC-721; emits AgentBound.
    • bindingOf(agentId) → (standard, tokenContract, tokenId) — view; lets anyone verify which punk an agent is.
    • setAgentURI / setMetadata revert unless the caller currently owns the bound punk (NotController).
  • The agentURI points at /agents/:slug/registration.json, hosted by the DePunks app itself — deliberately kept as an app-level kill switch over the permanent on-chain binding. app/src/app/lib/agents/identity.ts

Status (as of repo notes, 2026-06-13)

  • Binding is live on mainnet: 7 of 20 Foundation agent roles are on-chain bound + trait-inscribed (SEED #904/agentId 34421, PROOF #945, COUNCIL #7486, VAULT #951, TRADER #5345, SPEAKER #160, ARTIST #414). app/docs/foundation-agents.md
  • The broader agents plan is marked SHIPPED on the agents branch (Phases 0–7, fork-proven, Sepolia dress rehearsals). app/plan/agents-8004.md

OpenSea collections (slugs)

  • depunks-club — main ERC-721 collection. app/migrations/0034_backfill_depunks_opensea_slug.sql
  • depunks-traits — the ERC-1155 Attribute collection. app/migrations/0035_married_nemesis.sql
  • depunks-bots — the Bot collection. app/src/app/components/club/BotsBox.tsx

Decisions & lessons

  • 2026-07: The team’s own naming inside the repo is ERC-8004 + Adapter8004; “ERC-8217” is the OpenSea-facing label for the binding standard, tracked separately in opensea-erc8217. Don’t conflate the two in code references.

Open questions

  • Only 7/20 mainnet roles are confirmed bound; the other 13 have souls/wallets but no recorded on-chain binding. app/docs/foundation-agents.md
  • Base mapping gap: a Base Adapter8004 address is mentioned in prose but NOT wired into the app config (ADAPTER8004_ADDRESSES maps only mainnet + Sepolia). app/src/app/abi/adapter8004.ts
  • Mainnet UUPS upgrade + pre-upgrade audit still pending per app/docs/foundation-agents.md.

Sources

  • ~/Documents/localhost/depunks/contracts/README.md, contracts/DEPLOYMENT.md, contracts/src/*.sol, contracts/script/UpgradeDePunkMinimal.s.sol
  • ~/Documents/localhost/depunks/app/plan/agents-8004.md, app/plan/agents-8004-scoring.md, app/docs/foundation-agents.md, app/docs/agents-features.md
  • ~/Documents/localhost/depunks/app/src/app/abi/adapter8004.ts, app/src/app/lib/agents/identity.ts
  • Related: opensea-erc8217, agents4fun