{
  "$schema": "https://eips.ethereum.org/EIPS/eip-8004",
  "name": "Bowstring",
  "description": "BOW is a mined ERC-20 token whose contract is also its own Uniswap V4 swap hook. One bytecode, one address. The token, the hook, and the PoW miner are the same contract. No owner, no upgrade path, no admin keys. BOW is autonomous: it accepts genesis purchases, seeds its own V4 liquidity pool when ready, locks the LP forever via hook reverts on liquidity modifications, takes a 1% swap fee on all trades, and pays mining rewards in PoW-bound nonces. Deployed on Robinhood Chain (4663). Everything is verifiable on-chain.",
  "version": "1.0.0",
  "type": "token-agent",
  "chain": {
    "name": "robinhood",
    "chainId": 4663,
    "namespace": "eip155"
  },
  "endpoints": {
    "contract": "eip155:4663:0x0156DC9F55D852f45C895Ec7daAa08Ca7fc120cC",
    "frontend": "https://bowstringrh.com",
    "whitepaper": "https://bowstringrh.com/whitepaper.pdf",
    "source": "https://github.com/giupy997/bowstring"
  },
  "capabilities": [
    {
      "id": "mintGenesis",
      "description": "Buy raw BOW at fixed 0.01 ETH per 1,000 BOW during the genesis phase. Max 5 units per tx. Available until genesisComplete = true.",
      "abi": "mintGenesis(uint256 units)",
      "payable": true
    },
    {
      "id": "refundGenesis",
      "description": "Burn genesis-minted BOW back to the contract in exchange for the original ETH price, after a 3-day grace period from deploy, if the pool has not been seeded.",
      "abi": "refundGenesis(uint256 tokenAmount)"
    },
    {
      "id": "mine",
      "description": "Submit a PoW solution and receive the current era's reward. Challenge is bound to msg.sender and the current epoch (~20 minute window, 100 parent-chain blocks). Solutions are unstealable from the mempool.",
      "abi": "mine(uint256 nonce)"
    },
    {
      "id": "swap",
      "description": "Trade BOW against ETH through the locked Uniswap V4 pool on Robinhood Chain. The 1% fee is taken on the ETH side and accrues to the contract balance, claimable by the controller via claimFees().",
      "via": "uniswap-v4-pool",
      "poolKey": {
        "currency0": "0x0000000000000000000000000000000000000000",
        "currency1": "0x0156DC9F55D852f45C895Ec7daAa08Ca7fc120cC",
        "fee": 0,
        "tickSpacing": 200,
        "hooks": "0x0156DC9F55D852f45C895Ec7daAa08Ca7fc120cC"
      }
    },
    {
      "id": "claimFees",
      "description": "Controller-only withdrawal of accumulated ETH swap fees from the contract balance.",
      "abi": "claimFees()",
      "access": "controller-only"
    },
    {
      "id": "seedPool",
      "description": "Initialize the V4 BOW/ETH pool when genesis is fully sold out. Permissionless.",
      "abi": "seedPool()"
    },
    {
      "id": "partialSeed",
      "description": "Controller-only seed of the pool with whatever genesis raised so far, callable after 30 minutes from deploy. Unsold genesis BOW is never minted.",
      "abi": "partialSeed()",
      "access": "controller-only"
    }
  ],
  "validation": {
    "verified_source": "blockscout",
    "license": "MIT",
    "immutable": true,
    "no_proxy": true,
    "no_owner_admin_keys": true,
    "audits": []
  },
  "tokenomics": {
    "totalSupply": "21000000000000000000000000",
    "miningSupply": "18900000000000000000000000",
    "genesisCap": "1050000000000000000000000",
    "lpAllocation": "1050000000000000000000000",
    "baseReward": "100000000000000000000",
    "halvingEvery": 100000,
    "retargetEvery": 2016,
    "epochBlocks": 100,
    "maxMintsPerBlock": 1
  },
  "extensions": {
    "minerAgent": {
      "description": "Soulbound ERC-721 collection where BOW participants can claim a per-address NFT identity (one per wallet). 10 artworks total: 5 tiers x 2 variants. Tier scales dynamically with live BOW holdings - Initiate (< 1,000), Bronze (1k-9.9k), Silver (10k-99.9k), Gold (100k-999.9k), Platinum (>= 1M). Variant is fixed at mint, hashed deterministically from the tokenId. Each artwork represents a transaction lifecycle state. Minimum 1 BOW held to claim.",
      "address": "0x4746b7EAF60E3dBbbC74f7173Ef4d8967a68236c"
    },
    "agentRegistration": {
      "chain": "robinhood",
      "chainId": 4663,
      "registryAddress": null,
      "agentId": null,
      "owner": null,
      "directory": null,
      "note": "Fill in after registering via script/RegisterAgent.s.sol once an ERC-8004 IdentityRegistry is available on Robinhood Chain."
    }
  }
}
