All packages

erc8004-substreams

PaulieB14
v0.3.0/6 downloads/Repository

Package ref

erc8004-substreams@v0.3.0

Run package

CLI

Run db_out from the command line.

substreams run erc8004-substreams@v0.3.0 db_out -e base
Authenticate by running substreams auth or directly on thegraph.market (see docs).

README

ERC-8004 Substreams

High-performance Substreams indexer for ERC-8004 Trustless Agents on Base.

ERC-8004

Contracts Indexed

ContractAddressEvents
IdentityRegistry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432Registered, Transfer, MetadataSet, URIUpdated
ReputationRegistry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63NewFeedback, FeedbackRevoked, ResponseAppended

Modules

ModuleTypeDescription
map_eventsmapExtracts all ERC-8004 events from both contracts
store_agentsstoreTracks agent owner, URI, and wallet state
store_feedback_countsstoreAggregate feedback/response counts per agent
store_reputationstoreRunning reputation scores per agent and tag
map_flash_eventsmapFlashblocks streaming at 200ms latency (partial blocks safe)
db_outmapProduces DatabaseChanges for PostgreSQL/ClickHouse

Quick Start

# Authenticate
substreams auth

# Build
substreams build

# Test with 1000 blocks
substreams run -s 25000000 -t +1000 map_events

# Visual debugger
substreams gui -s 25000000 -t +1000 map_events

SQL Sinks

PostgreSQL

docker compose up -d postgres
substreams-sink-sql setup "psql://erc8004:erc8004pass@localhost:5432/erc8004?sslmode=disable" ./erc8004-substreams-v0.3.0.spkg
substreams-sink-sql run "psql://erc8004:erc8004pass@localhost:5432/erc8004?sslmode=disable" ./erc8004-substreams-v0.3.0.spkg

ClickHouse

docker compose up -d clickhouse
substreams-sink-sql setup "clickhouse://default:@localhost:9000/default" ./erc8004-substreams-v0.3.0.spkg
substreams-sink-sql run "clickhouse://default:@localhost:9000/default" ./erc8004-substreams-v0.3.0.spkg

The ClickHouse schema includes 6 materialized views for real-time analytics:

  • Hourly registration stats
  • Daily feedback volume per agent
  • Per-tag feedback aggregates
  • Top agents by activity
  • Client activity leaderboard
  • Hourly protocol metrics

Database Tables

  • agents — Agent identities (owner, URI, wallet)
  • agent_metadata — Key-value metadata per agent
  • agent_transfers — Transfer history
  • feedbacks — All feedback entries with scores and tags
  • responses — Feedback responses
  • identity_events — Raw IdentityRegistry event log
  • reputation_events — Raw ReputationRegistry event log

Make Targets

make build              # Build WASM + spkg
make run                # Test run (1000 blocks)
make gui                # Visual debugger
make docker-up          # Start Postgres + ClickHouse + Grafana
make all-postgres       # Full setup: build + setup + run PostgreSQL sink
make all-clickhouse     # Full setup: build + setup + run ClickHouse sink

Flashblocks (200ms Streaming)

Stream ERC-8004 events with 200ms latency using Base Flashblocks:

# Stream live with partial blocks
substreams run -e https://base-mainnet.streamingfast.io map_flash_events -s -1 --partial-blocks

# Visual debugger with Flashblocks
substreams gui -e https://base-mainnet.streamingfast.io map_flash_events -s -1 --partial-blocks

# Webhook sink for real-time notifications
substreams sink webhook --partial-blocks -e https://base-mainnet.streamingfast.io http://your-webhook.com ./erc8004-substreams-v0.3.0.spkg -s -1

The map_flash_events module only processes transactionTraces — no block-level aggregation — so it's safe for partial blocks. You get each ERC-8004 event as soon as it's sequenced by the Base sequencer, rather than waiting for full block confirmation.

Links

Modules

Execution graph

6 modules
map

map_events

Extracts all ERC-8004 events from IdentityRegistry and ReputationRegistry contracts on Base. Covers agent registrations, transfers, metadata changes, feedback, revocations, and responses.

from #41663783
map

map_flash_events

Flashblocks-compatible module for 200ms streaming on Base. Only processes transactionTraces — no block-level aggregation. Safe for partial blocks. Use with --partial-blocks flag: substreams run -e https://base-mainnet.streamingfast.io map_flash_events -s -1 --partial-blocks

from #41663783
store

store_agents

Tracks current agent state: owner address, URI, and wallet. Key format: agent:{agentId} → owner|uri|wallet

from #41663783

Store value

string

Update policy

set

store

store_feedback_counts

Tracks total feedback count, active (non-revoked) count, and response count per agent. Keys: feedback_total:{agentId}, feedback_active:{agentId}, responses:{agentId}

from #41663783

Store value

int64

Update policy

add

store

store_reputation

Maintains running reputation score aggregates per agent. Key: rep:{agentId} → sum_value|count|avg Also per-tag: rep:{agentId}:{tag1} → sum_value|count|avg

from #41663783

Store value

string

Update policy

set