Sponsor-by-sponsor evidence for ETHDenver 2026 bounty submissions.
ERC-4337 smart contract wallet deployed to Base (chain ID 8453). Four Solidity modules handle account abstraction, policy enforcement, agent-driven governance, and provenance recording.
| Artefact | Location |
|---|---|
| AgentSafeWallet.sol | packages/contracts/src/AgentSafeWallet.sol |
| AgentSafeAccount (ERC-4337) | packages/contracts/src/account/ |
| PolicyEngine.sol | packages/contracts/src/PolicyEngine.sol |
| GovernanceExecutor.sol | packages/contracts/src/GovernanceExecutor.sol |
| ProvenanceRegistry | packages/contracts/src/provenance/ |
| Deploy script | packages/contracts/script/Deploy.s.sol |
| Foundry tests | packages/contracts/test/ |
| Chain config (shared) | packages/shared/src/constants/chains.ts |
cd packages/contracts
# Build contracts
forge build
# Run contract tests
forge test -vvv
# Check compilation output
ls out/- Dashboard (
/dashboard): Shows Base chain ID and contract addresses - Integrations (
/integrations): Base section with deployed addresses and chain ID badge
SwarmGuard agents call Base via QuickNode RPC for real-time block data, transaction simulation, and mempool monitoring. The backend detects whether a QuickNode endpoint is configured and falls back to public RPC.
| Artefact | Location |
|---|---|
| RPC service | apps/backend/src/services/rpc/ |
| Chain constants (RPC URLs) | packages/shared/src/constants/chains.ts |
| Health endpoint | GET /health → integrations.quicknode |
| Backend env example | apps/backend/.env.example (QUICKNODE_RPC_URL) |
# Check backend health — look for "quicknode" section
curl http://localhost:4000/health | jq '.integrations.quicknode'
# Expected output (live mode):
# { "mode": "live", "blockNumber": 12345678 }
# Expected output (disabled):
# { "mode": "disabled" }- Integrations (
/integrations): QuickNode section with Live/Disabled badge, block number display (when live), and raw health JSON
Kite AI powers the governance proposal summariser and the scam detection NLP pipeline. When a Kite API key is present, the system calls Kite AI for document summarisation. Without a key, a local stub returns structured risk analysis using keyword extraction.
| Artefact | Location |
|---|---|
| Kite AI service | apps/backend/src/services/agents/ |
| Scam Detector agent | apps/backend/src/agents/scamDetector.ts |
| Governance recommend endpoint | POST /api/governance/recommend |
| Health endpoint | GET /health → integrations.kiteAi |
# Check Kite AI status
curl http://localhost:4000/health | jq '.integrations.kiteAi'
# Test governance recommendation (uses Kite for summarisation)
curl -X POST http://localhost:4000/api/governance/recommend \
-H 'Content-Type: application/json' \
-d '{"proposalId": "prop-001"}' | jq
# Expected: VoteIntent with recommendation, confidence, reasons, policyChecks- Integrations (
/integrations): Kite AI section with "Run Kite Summary Test" button - Governance (
/governance): "Get AI Recommendation" button on each proposal card
GovernanceSafe ingests DAO proposals via Snapshot-like API, parses them for risk signals (treasury impact, governance power shifts, urgency flags), and produces AI-guided vote recommendations with human veto.
| Artefact | Location |
|---|---|
| Proposal service | apps/backend/src/governance/proposals.ts |
| Mock proposals | apps/backend/src/governance/mockProposals.json |
| Governance routes | apps/backend/src/routes/governance.ts |
| Governance runner | apps/backend/src/orchestrator/governanceRunner.ts |
| GovernanceExecutor.sol | packages/contracts/src/GovernanceExecutor.sol |
| Governance V2 schemas | packages/shared/src/schemas/governanceV2.ts |
# List proposals
curl http://localhost:4000/api/governance/proposals | jq '.[0]'
# Get AI recommendation for a proposal
curl -X POST http://localhost:4000/api/governance/recommend \
-H 'Content-Type: application/json' \
-d '{"proposalId": "prop-001"}' | jq
# Expected: { recommendation, confidence, reasons, policyChecks }- Governance (
/governance): Proposal cards with risk analysis - Governance (
/governance): VoteIntent display with policy checks - Governance (
/governance): Human veto + auto-vote toggle
Architecture prepared for storing provenance receipts (swarm consensus decisions) on 0g decentralised storage. Currently a stub — the ProvenanceRegistry records hashes on-chain, and 0g integration would store the full receipt payload off-chain.
| Artefact | Location |
|---|---|
| ProvenanceRegistry.sol | packages/contracts/src/provenance/ |
| Log storage service | apps/backend/src/storage/logStore.ts |
| Integrations page | apps/web/src/app/integrations/page.tsx → 0g section |
Stub / planned. On-chain hashes are recorded; full 0g blob storage is the next milestone post-hackathon.
# Start backend first, then run:
pnpm healthcheck
# Validates all 6 API endpoints against Zod schemas
# Exit code 0 = all pass, non-zero = failurespnpm install
pnpm build # Compiles shared + contracts + web + backend
pnpm lint # ESLint across all packages
pnpm test # Runs test scripts (includes build)┌─────────────┐ ┌─────────────────────────────┐
│ Next.js UI │◄──►│ Express Backend (port 4000) │
│ (port 3000) │ │ │
│ /dashboard │ │ ┌─────────────────────┐ │
│ /defense │ │ │ SwarmGuard Agents │ │
│ /governance │ │ │ Sentinel, ScamDet, │ │
│ /policy │ │ │ MEV, Liquidation │ │
│ /integrns │ │ └────────┬────────────┘ │
└─────────────┘ │ │ │
│ ┌────────▼────────────┐ │
│ │ Coordinator Agent │ │
│ │ (Consensus Engine) │ │
│ └────────┬────────────┘ │
│ │ │
│ ┌────────▼────────────┐ │
│ │ Governance Runner │ │
│ │ (Proposal → Vote) │ │
│ └─────────────────────┘ │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Base (ERC-4337) Contracts │
│ AgentSafeAccount │
│ PolicyEngine │
│ GovernanceExecutor │
│ ProvenanceRegistry │
└───────────────────────────────┘
- Dashboard with swarm status
- Defense page: suspicious tx evaluation with agent reports
- Defense page: consensus BLOCK_TX result
- Governance page: proposal cards loaded
- Governance page: AI recommendation with policy checks
- Governance page: human veto applied
- Integrations page: all sponsor sections with badges
- Integrations page: raw health/status JSON expanded
- Terminal:
pnpm healthcheckall green - Terminal:
forge test -vvvall passing