To answer your question directly, no, we’re not using the shared ERC-8004 registry at
0x8004A169FB4a3325136EB29fA0ceB6D2e539a432. We’ve been running a separate factory
pattern and the contracts weren’t verified yet. They are now.
Factory (deploys one registry per collection):
0xc2bb6502a7d8ee3cdb2f96508d6cdf426aa2858f
https://etherscan.io/address/0xc2bb6502a7d8ee3cdb2f96508d6cdf426aa2858f#code
Deployed registries:
-
PIXEL GOBLINS AGENTz:
0xe0454dFA17a57a84c3E0E2DBFdA5318CBBE91e2c
https://etherscan.io/address/0xe0454dfa17a57a84c3e0e2dbfda5318cbbe91e2c#code -
Goblinarinos Agents:
0xe61F5a6783AE09949B9a1b6821b68f89C0d7bB2D
https://etherscan.io/address/0xe61f5a6783ae09949b9a1b6821b68f89c0d7bb2d#code -
Sproto Gremlins Agents:
0x608520f2725C312092cC837a05a5A1c504AB26f4
https://etherscan.io/address/0x608520f2725c312092cc837a05a5a1c504ab26f4#code
The structural binding is in AgentIdentityRegistry: boundCollection is set as an
immutable in the constructor and never changes. The factory’s deployRegistry() enforces
one registry per collection address — registryOf[sourceCollection] must be zero before
a new one can be deployed.
The AgentBound event and bindingOf() / tokenToAgentId() interface you’ve landed on
maps cleanly onto this pattern. We’d emit AgentBound from registerWithSource() — the
binding is established atomically at that point and is irrevocable by construction.