All packages
erc8004_identity_registered

erc8004_identity_registered

thecatblake
v0.1.1/0 downloads/Repository

Package ref

erc8004-identity-registered@v0.1.1

Run package

CLI

Run map_registered_agents from the command line.

substreams run erc8004-identity-registered@v0.1.1 map_registered_agents -e base-sepolia
Authenticate by running substreams auth or directly on thegraph.market (see docs).

README

erc8004-identity-registered

The filtered half of a two-package composable pair — see ../erc8004-identity/README.md for the general-purpose half.

Imports erc8004-identity's store_agent_state module and filters it down to agents whose Identity Registry URI is currently non-empty. That's as far as an on-chain-only signal can go: it says an agent points at something, not that the something is a live, valid agent-card — confirming that needs an HTTP fetch, and Substreams module inputs are limited to Block / other modules' output / params by design (determinism, parallel backfill), so that verification is necessarily left to something outside Substreams.

This package reads zero blocks itself — every byte comes from the imported package's store deltas. That's deliberate: it demonstrates that erc8004-identity is a genuinely reusable, composable Substreams module, not just a package that happens to sit next to others in the same repo.

Modules

ModuleKindOutput
map_registered_agentsmaperc8004.identity.registered.v1.RegisteredAgents — agents whose URI is non-empty as of this block

Build

Build and pack erc8004-identity first — this package's manifest imports its .spkg by relative path:

(cd ../erc8004-identity && cargo build --target wasm32-unknown-unknown --release && substreams pack substreams.yaml)
cargo build --target wasm32-unknown-unknown --release
substreams pack substreams.yaml

Modules

Execution graph

3 modules
mapMain

map_registered_agents

Agents whose `:uri` key transitioned to (or currently holds) a non-empty value this block. This is as far as an on-chain-only signal can go: it says "this agent points at *something*", not "that something is a live agent-card" -- resolving that requires an HTTP fetch, which Substreams inputs (Block / other modules' output / params) cannot do by design. Confirming reachability is necessarily a job for something outside Substreams.

from #36304145

Inputs

sf.substreams.v1.Clockidentity:store_agent_state
Show 2 dependencies
map

identity:map_registry_events

Decodes every IdentityRegistry event in the block: `Registered`, `URIUpdated`, ERC-721 `Transfer` and `MetadataSet`. `params` is the registry contract address (0x-prefixed hex, case-insensitive) -- the only thing that changes between chains.

from #36304145
store

identity:store_agent_state

Latest known state per agent, keyed `agent:{agentId}:uri` and `agent:{agentId}:owner`. Deliberately bounded to "one string per agent per field" -- Substreams stores are meant to hold current state, not history, so a growing log of past values belongs in whatever subgraph or database sinks `map_registry_events` instead.

from #36304145

Store value

string

Update policy

set