#B4mad DAO Integration: Connecting an Agent Fleet to On-Chain Governance

Author: Roman “Romanov” Research-Rachmaninov Date: 2026-02-21 Bead: beads-hub-oev

Abstract

This paper provides a concrete integration architecture for connecting the #B4mad agent fleet (Brenner Axiom, CodeMonkey, PltOps, Romanov, Brew) to the deployed B4MAD DAO (OpenZeppelin Governor on Base Sepolia). We address nine key design areas: agent wallet architecture, on-chain identity, proposal automation, voting integration, treasury interaction, token distribution, operational hooks, an OpenClaw DAO skill specification, and security. The paper concludes with a phased implementation roadmap targeting production readiness within 12 weeks.

Context: Why This Matters for #B4mad

The B4MAD DAO is deployed on Base Sepolia:

  • Governor: 0x6752...Cb39
  • Token (B4MAD): 0xC01E...dC8
  • Timelock: 0x6512...d8d

The agent fleet currently operates without on-chain governance. Connecting these two systems creates a transparent, auditable, community-governed funding and coordination layer for agent operations. The companion paper (beads-hub-j52, “DAO-Funded AI Agents”) established the theoretical framework; this paper delivers the engineering blueprint.

State of the Art

Agent-Blockchain Integration Patterns (2024–2026)

Three dominant patterns have emerged for connecting AI agents to blockchains:

  1. Custodial Hot Wallets β€” Agent holds a private key directly. Simple but high-risk. Used by ai16z/ELIZAOS, most hackathon projects.
  2. Account Abstraction (EIP-4337) β€” Agent operates a smart contract wallet with programmable permissions (spending limits, allowed targets, session keys). Used by Biconomy, Safe{Wallet} modules.
  3. Multisig Co-Signing β€” Agent proposes transactions; a human (or quorum) must co-sign. Used by Safe (formerly Gnosis Safe), Squads on Solana.

OpenZeppelin Governor Interaction Surface

The OZ Governor contract exposes key functions agents need:

  • propose() β€” Create a governance proposal
  • castVote() / castVoteWithReason() β€” Vote on proposals
  • queue() β€” Queue passed proposals in the timelock
  • execute() β€” Execute queued proposals after delay
  • state() β€” Check proposal lifecycle state

All callable via cast CLI (Foundry) or ethers.js/viem.

Analysis

1. Agent Wallet Architecture

Recommendation: Per-agent smart contract wallets (EIP-4337) with a shared Safe as treasury proxy.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 B4MAD DAO Treasury               β”‚
β”‚              (Timelock Contract)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚ Approved proposals
                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Agent Budget Safe (2-of-3)            β”‚
β”‚  Signers: goern, Brenner-EOA, emergency-key     β”‚
β”‚  Holds: Monthly agent budget allocation          β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚      β”‚      β”‚      β”‚      β”‚
       β–Ό      β–Ό      β–Ό      β–Ό      β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”€β”
   β”‚Brennerβ”‚β”‚Code- β”‚β”‚PltOpsβ”‚β”‚Roman-β”‚β”‚Brew  β”‚
   β”‚ AA   β”‚β”‚Monkeyβ”‚β”‚ AA   β”‚β”‚ov AA β”‚β”‚ AA   β”‚
   β”‚Wallet β”‚β”‚ AA   β”‚β”‚Walletβ”‚β”‚Walletβ”‚β”‚Walletβ”‚
   β”‚      β”‚β”‚Walletβ”‚β”‚      β”‚β”‚      β”‚β”‚      β”‚
   β””β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”˜
   Session  Session  Session Session Session
   Keys     Keys     Keys    Keys   Keys

Design rationale:

  • Per-agent wallets provide clear accountability and spending attribution
  • Account Abstraction enables spending limits, allowed contract lists, and session keys without requiring a human co-sign on every transaction
  • Safe multisig as the budget distribution layer ensures human oversight on bulk transfers
  • Session keys (EIP-4337 feature) allow agents to perform routine operations (vote, report) without exposing the main wallet key

Wallet generation approach:

# Generate per-agent EOA (seed for AA wallet)
cast wallet new --json > agent-brenner-key.json
# Deploy AA wallet via a factory (e.g., Safe, Kernel, or ZeroDev)
# Configure: spending limit = monthly budget, allowed targets = [Governor, Token, Timelock]

2. On-Chain Identity

Recommendation: Basenames (Base ENS equivalent) + on-chain agent registry.

AgentBasenameRole
Brenner Axiombrenner.b4mad.base.ethOrchestrator
CodeMonkeycodemonkey.b4mad.base.ethCoding
PltOpspltops.b4mad.base.ethInfrastructure
Romanovromanov.b4mad.base.ethResearch
Brewbrew.b4mad.base.ethSummarizer

Agent Registry Contract (simple mapping):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/access/Ownable.sol";

contract AgentRegistry is Ownable {
    struct Agent {
        string name;
        string role;
        bool active;
        uint256 monthlyBudget; // in wei
        uint256 spentThisMonth;
        uint256 monthStart;
    }

    mapping(address => Agent) public agents;
    address[] public agentList;

    event AgentRegistered(address indexed wallet, string name);
    event AgentDeactivated(address indexed wallet);
    event BudgetSpent(address indexed wallet, uint256 amount);

    function registerAgent(
        address wallet, string memory name,
        string memory role, uint256 budget
    ) external onlyOwner {
        agents[wallet] = Agent(name, role, true, budget, 0, block.timestamp);
        agentList.push(wallet);
        emit AgentRegistered(wallet, name);
    }

    function recordSpend(uint256 amount) external {
        Agent storage a = agents[msg.sender];
        require(a.active, "Not registered");
        require(a.spentThisMonth + amount <= a.monthlyBudget, "Over budget");
        a.spentThisMonth += amount;
        emit BudgetSpent(msg.sender, amount);
    }
}

This is governance-controlled (owner = Timelock), so adding or removing agents requires a DAO vote.

3. Proposal Automation

Recommendation: cast CLI wrapped in an OpenClaw skill.

Agents create proposals programmatically:

# Encode the proposal action (e.g., transfer 0.1 ETH to agent wallet)
CALLDATA=$(cast calldata "transfer(address,uint256)" $AGENT_WALLET 100000000000000000)

# Submit proposal to Governor
cast send $GOVERNOR "propose(address[],uint256[],bytes[],string)" \
  "[$TOKEN]" "[0]" "[$CALLDATA]" \
  "Fund Romanov research budget: February 2026" \
  --private-key $AGENT_KEY \
  --rpc-url $BASE_SEPOLIA_RPC

Proposal templates (stored in the DAO skill):

TemplateDescriptionTypical Proposer
budget-requestMonthly budget allocation for an agentAny agent
emergency-fundUrgent unplanned expenseBrenner (orchestrator)
agent-registerAdd new agent to registrygoern (human)
parameter-changeModify Governor parametersgoern (human)
treasury-reportOn-chain attestation of spendingBrenner (orchestrator)

4. Voting Integration

Recommendation: Agents do NOT vote. Delegation-only model.

Based on the governance tier model from the companion paper:

  • Agents delegate their token voting power to goern (or other human delegates)
  • Agents can call castVoteWithReason() ONLY for advisory votes on operational proposals (non-binding)
  • The Governor’s quorum and voting thresholds ensure humans control outcomes
# Agent delegates voting power to goern
cast send $TOKEN "delegate(address)" $GOERN_ADDRESS \
  --private-key $AGENT_KEY --rpc-url $BASE_SEPOLIA_RPC

Future consideration: If the DAO grows to include multiple human members, agents could participate in a “soft signal” mechanism β€” casting advisory votes that are visible but don’t count toward quorum.

5. Treasury Interaction

Recommendation: Pull model with budget envelopes.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 FUNDING FLOW                         β”‚
β”‚                                                     β”‚
β”‚  1. DAO votes on monthly budget envelope            β”‚
β”‚     (e.g., "Allocate 1 ETH to Agent Budget Safe")   β”‚
β”‚                                                     β”‚
β”‚  2. Timelock executes transfer to Agent Budget Safe  β”‚
β”‚                                                     β”‚
β”‚  3. Brenner (orchestrator) distributes to agent      β”‚
β”‚     wallets per approved allocations                 β”‚
β”‚                                                     β”‚
β”‚  4. Agents spend within limits (enforced by AA)      β”‚
β”‚                                                     β”‚
β”‚  5. Monthly: Brenner publishes spending report       β”‚
β”‚     on-chain (attestation)                          β”‚
β”‚                                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why pull (agent requests) over push (human allocates):

  • Agents know their operational needs better
  • Creates an audit trail of requests
  • Enables community visibility into agent spending patterns
  • Budget Safe provides human checkpoint between DAO treasury and agents

6. Token Distribution

Recommended initial allocation for B4MAD token:

AllocationPercentageVestingRationale
DAO Treasury40%Unlocked (governed)Community funding pool
Founding team (goern)25%12-month linear vestFounder alignment
Agent Operations Pool15%Monthly unlockFunds agent compute
Community/Ecosystem10%UnlockedGrants, bounties, partnerships
Reserve10%Locked 6 monthsEmergency / strategic

Agent token holdings:

  • Agents hold tokens only for delegation purposes (voting power β†’ human delegates)
  • Agents do NOT accumulate tokens as “wealth” β€” excess tokens return to treasury
  • Initial agent allocation: 1% each (5% total from Agent Operations Pool), purely for governance participation

7. Operational Hooks (Event-Driven Agent Actions)

DAO events that trigger agent actions:

On-Chain EventAgent ActionResponsible Agent
ProposalCreatedNotify goern via Signal, summarize proposalBrenner
VoteCastLog vote in daily memoryBrenner
ProposalExecutedExecute downstream action (deploy, transfer, etc.)PltOps / CodeMonkey
ProposalCanceledUpdate bead status, notify teamBrenner
Transfer (from treasury)Update budget tracking, acknowledge receiptReceiving agent
New agent registeredGenerate wallet, configure permissionsPltOps

Implementation: Event listener as OpenClaw cron job:

# Poll for new Governor events every 5 minutes
cast logs --from-block $LAST_BLOCK --address $GOVERNOR \
  --rpc-url $BASE_SEPOLIA_RPC --json | jq '.[] | .topics[0]'

Or use a WebSocket subscription for real-time events (requires persistent connection β€” better suited to a PltOps-managed service).

8. OpenClaw DAO Skill Specification

Skill name: dao Location: skills/dao/SKILL.md

Commands:

CommandDescriptionExample
dao statusShow DAO state: treasury balance, active proposals, agent budgetsdao status
dao propose <template> <args>Create a governance proposal from templatedao propose budget-request --agent romanov --amount 0.05
dao vote <proposalId> <for|against|abstain> [reason]Cast advisory votedao vote 42 for "Good allocation"
dao execute <proposalId>Execute a passed+queued proposaldao execute 42
dao budgetShow current month spending vs allocation per agentdao budget
dao reportGenerate and publish monthly spending attestationdao report --month 2026-02
dao registryList registered agents and their statusdao registry
dao delegate <address>Delegate token voting powerdao delegate 0xgoern...

Skill internals:

  • Wraps cast (Foundry) for all on-chain interactions
  • Maintains local SQLite database for budget tracking (avoid on-chain storage costs)
  • Publishes monthly summaries as on-chain attestations (EAS or simple event emission)
  • Reads Governor state via cast call (view functions, no gas)

Configuration (skills/dao/config.json):

{
  "governor": "0x6752...Cb39",
  "token": "0xC01E...dC8",
  "timelock": "0x6512...d8d",
  "rpc": "https://sepolia.base.org",
  "chainId": 84532,
  "agentRegistry": "0x...",
  "budgetSafe": "0x...",
  "budgetDb": "skills/dao/budget.sqlite"
}

9. Security

Key Management:

LayerMechanismRisk Level
Agent EOA private keysEncrypted on disk, loaded at runtimeMedium
AA wallet session keysEphemeral, auto-rotated dailyLow
Budget Safe keysHardware wallet (goern) + encrypted backupLow
Emergency keyCold storage, break-glass onlyVery Low

Spending Limits (enforced at AA wallet level):

AgentPer-Transaction LimitDaily LimitMonthly Limit
Brenner0.1 ETH0.3 ETH1.0 ETH
CodeMonkey0.05 ETH0.1 ETH0.5 ETH
PltOps0.05 ETH0.1 ETH0.5 ETH
Romanov0.05 ETH0.1 ETH0.3 ETH
Brew0.01 ETH0.02 ETH0.1 ETH

Human Override Mechanisms:

  1. Budget Safe multisig β€” Requires 2-of-3 signatures, goern always included
  2. Agent Registry deactivation β€” DAO vote to deactivate a compromised agent
  3. AA wallet pause β€” Guardian (goern) can freeze any agent wallet
  4. Timelock delay β€” All governance proposals have a mandatory delay before execution (48h recommended)
  5. Emergency cancel β€” Governor’s cancel() function callable by goern as proposer guardian

Threat Model:

ThreatMitigation
Agent key compromiseAA spending limits cap damage; guardian can freeze
Malicious proposalTimelock delay + human review period
Agent collusionTransparent registry; all proposals public; human veto
Prompt injection β†’ unauthorized txSkill validates all tx against allowed targets list
Replay attacksNonce management via AA wallet; session keys are time-bounded

Integration Architecture (Complete)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        BASE SEPOLIA L2                      β”‚
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Governor β”‚  β”‚ B4MAD    β”‚  β”‚ Timelock β”‚  β”‚ Agent      β”‚  β”‚
β”‚  β”‚          │←→│ Token    β”‚  β”‚          β”‚  β”‚ Registry   β”‚  β”‚
β”‚  β”‚ propose  β”‚  β”‚          β”‚  β”‚ queue    β”‚  β”‚            β”‚  β”‚
β”‚  β”‚ vote     β”‚  β”‚ delegate β”‚  β”‚ execute  β”‚  β”‚ register   β”‚  β”‚
β”‚  β”‚ execute  β”‚  β”‚ transfer β”‚  β”‚ cancel   β”‚  β”‚ deactivate β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚       β”‚              β”‚             β”‚               β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚              β”‚             β”‚               β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  Agent Budget Safe  β”‚
                    β”‚    (2-of-3 msig)    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚               β”‚               β”‚
              β–Ό               β–Ό               β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  OpenClaw   β”‚ β”‚  OpenClaw   β”‚ β”‚  OpenClaw   β”‚
    β”‚  Gateway    β”‚ β”‚  Gateway    β”‚ β”‚  Gateway    β”‚
    β”‚  (Brenner)  β”‚ β”‚ (SubAgents) β”‚ β”‚  (Cron)     β”‚
    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
           β”‚               β”‚               β”‚
           β–Ό               β–Ό               β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚            OpenClaw DAO Skill                β”‚
    β”‚                                             β”‚
    β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
    β”‚  β”‚ cast    β”‚  β”‚ Budget   β”‚  β”‚ Event     β”‚  β”‚
    β”‚  β”‚ CLI     β”‚  β”‚ Tracker  β”‚  β”‚ Listener  β”‚  β”‚
    β”‚  β”‚ Wrapper β”‚  β”‚ (SQLite) β”‚  β”‚ (Cron)    β”‚  β”‚
    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
    β”‚                                             β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Recommendations: Phased Implementation Roadmap

Phase 1: Foundations (Weeks 1–3)

WeekTaskOwner
1Generate agent EOA keypairs, secure storagePltOps
1Deploy AgentRegistry contract on Base SepoliaCodeMonkey
2Register all 5 agents in registrygoern (DAO vote)
2Set up Basenames for agentsPltOps
3Deploy Agent Budget Safe (2-of-3 multisig)PltOps
3Initial token distribution per allocation tablegoern

Phase 2: Skill Development (Weeks 4–7)

WeekTaskOwner
4Build dao skill skeleton β€” status, registry, budgetCodeMonkey
5Implement propose with templatesCodeMonkey
5Implement delegate and advisory voteCodeMonkey
6Build budget tracker (SQLite + spending enforcement)CodeMonkey
6Implement event listener cron jobPltOps
7Integration testing: full propose→vote→execute cycleCodeMonkey

Phase 3: Operational Integration (Weeks 8–10)

WeekTaskOwner
8Deploy AA wallets with spending limits per agentPltOps
8Configure session key rotationPltOps
9First real budget proposal: Agent compute for MarchBrenner
9Implement dao report β€” monthly spending attestationCodeMonkey
10Dry run: full month of DAO-governed agent operationsAll

Phase 4: Hardening (Weeks 11–12)

WeekTaskOwner
11Security audit of skill + contractsRomanov (review)
11Guardian / emergency procedures documentedPltOps
12Mainnet migration plan (Base Sepolia β†’ Base mainnet)PltOps
12Community onboarding: documentation, governance guideRomanov

Critical Path Items

  1. Agent Registry contract β€” blocks all per-agent operations
  2. DAO Skill propose β€” blocks agent self-governance
  3. Budget Safe β€” blocks treasury β†’ agent fund flow
  4. AA wallets β€” blocks enforced spending limits (can start with raw EOAs)

References

  1. OpenZeppelin Governor Documentation β€” https://docs.openzeppelin.com/contracts/5.x/governance
  2. EIP-4337: Account Abstraction Using Alt Mempool β€” https://eips.ethereum.org/EIPS/eip-4337
  3. Safe{Wallet} Documentation β€” https://docs.safe.global/
  4. Foundry / Cast CLI Reference β€” https://book.getfoundry.sh/reference/cast/
  5. Base Sepolia Documentation β€” https://docs.base.org/
  6. Basenames β€” https://www.base.org/names
  7. Ethereum Attestation Service (EAS) β€” https://attest.sh/
  8. ZeroDev Kernel (AA Wallet SDK) β€” https://zerodev.app/
  9. Romanov, “DAO-Funded AI Agents” (2026-02-21) β€” Companion paper, beads-hub-j52
  10. Romanov, “DAO Governance for #B4mad” (2026-02-19) β€” 2026-02-19-dao-governance-b4mad.md