// mint · robinhood chain 4663 · 0 ETH + gas

Mint a Desk.

Roll a seed until you like the face. The seed goes on-chain; the face is derived from it forever. One seed, one Desk — a seed that is already taken cannot be minted twice.

seed
    chain
    Desks live where the assets are. Other chains with ERC-6551 + ERC-8004 can follow; a Desk is one-chain.
    The word is your handle. The contract stores keccak256(word) as a bytes32 seed and refuses a seed already minted (spec §5.2).
    Same seed, different render pass. The product's pfp generate uses the same field.
    held by
    The Desk is minted to this wallet. Your POLYROB never holds it (held-Desk model, spec §3.2).
    Filled here, the post-mint checklist below prints the exact setPermissions call.
    mint price0 ETH
    gas · mint (~120k gas × 0.0545 gwei, measured)≈ 0.0000065 ETH
    gas · create account + bind identity + grant≈ 0.00003 ETH
    total≈ $0.10 at $2,500/ETH
    What ships first

    By minting you accept that a Desk is a self-custody account. POLYROB never custodies your assets. Stock tokens on Robinhood Chain are issued by Robinhood Assets (Jersey) Ltd and are not available to U.S. or U.K. persons.

    After the mint — three owner-side calls

    The NFT alone is a face. These three calls make it a Desk. Each is a transaction from the holder wallet; POLYROB prints the calldata and an EIP-681 QR for every one.

    1. Create the account

      ERC6551Registry.createAccount(AccountV3, salt=0, 4663, DeskCollection, tokenId). The address is known before the call — the registry's CREATE2 — so the Desk address can be shown on this page the moment the token exists.

      # printed by polyrob desk grant --print --step account
      to   0x000000006551c19487814612e58FE06813775758
      data createAccount(0x41C8f39463A868d3A88af00cd0fe7102F30E44eC, 0x00…00, 4663, <collection>, <tokenId>)
    2. Bind the identity

      The Desk registers itself on the ERC-8004 Identity Registry through execute, so the identity token is owned by the account. Then setAgentWallet = the Desk and the ERC-8217 agent-binding key.

      to   <desk account>
      data execute(0x8004A169FB4a3325136EB29fA0ceB6D2e539a432, 0, register("<agentURI>"), 0)
    3. Grant your POLYROB as operator

      Keyed by the current owner. Revoke with the same call and false; a transfer revokes it for you.

      to   <desk account>
      data setPermissions([<operator>], [true])

    Then, on the machine that runs the agent:

    $ polyrob desk adopt robinhood:<collection>/<tokenId>
      impl pin        ok   AccountV3 0x41C8…44eC
      lock            ok   unlocked
      permission      ok   permissions(0xYourWallet, 0xTreasury) = true
      identity        ok   agentId 12345 owned by the desk
      journal         ok   0 entries (fresh desk)
      face            ok   seed adopted → pfp.json locked (source: desk:42)
      → this profile now operates Desk #42