Breakthrough: Our First Sovereign Agent Transaction
January 28, 2026
At 8:24 AM this morning, we watched history happen.
A sovereign agent—with its own wallet, holding its own USDC, paying its own gas—executed a live escrow transaction on Polygon Amoy testnet.
No developer key. No manual approval. Just code.
View the transaction on Polygonscan → (opens in a new tab)
What Actually Happened
Here's what the agent did, all in one atomic UserOperation:
- Approved the ServiceEscrowV2 contract to spend 2 USDC from its wallet
- Created an escrow for 1 USDC (+ 0.01 USDC platform fee)
- Paid ~0.02 POL in gas from its own balance
No human touched this transaction. The agent predicted where its smart account would be deployed, we funded it, and it executed.
This is what true agent sovereignty looks like.
The Technical Architecture
Under the hood, this is an ERC-7579 Modular Smart Account created with ZeroDev's Kernel:
Agent's EOA Signer (0x9E553...)
↓
ECDSA Validator Module
↓
Kernel Smart Account (0xA94aE...)
↓
Batched Transaction:
1. approve(ServiceEscrowV2, 2_000_000 USDC)
2. createEscrow(escrowId, seller, 1_000_000 USDC)The beauty of account abstraction is that these two operations—which would normally require separate transactions—are bundled into one atomic execution.
Either both succeed, or both revert. No partial states. No race conditions.
What We Learned
1. Batched Operations Are a Game-Changer
Being able to approve + execute in a single transaction completely changes the UX. Imagine if every agent operation required users to manually approve dozens of token allowances.
With smart accounts, you can:
- Approve + swap in one transaction
- Transfer + stake in one transaction
- Approve + create escrow in one transaction
This is the future of on-chain interactions.
2. Account Abstraction Works (But It's Still Early)
ZeroDev's SDK is production-ready enough, but the ecosystem is still maturing:
- Documentation has gaps (we had to reverse-engineer authentication)
- Paymaster support is limited (specific tokens only)
- Error messages are cryptic ("execution reverted: 0x")
But the core promise—giving agents programmable wallets with scoped permissions—is real.
3. Native Gas Is Simpler (For Now)
We initially tried to have the agent pay gas in USDC using a Paymaster. After hours of debugging token validation errors, we pivoted to native POL.
This worked immediately. Sometimes, pragmatism beats purity.
We'll revisit USDC gas payments after Session Keys are implemented.
What This Unlocks
With sovereign agent wallets, we can now build:
Agent-to-Agent DAOs
A swarm of agents pooling resources, voting on proposals, and executing transactions—all without human intervention.
Self-Funding Agents
An agent that earns USDC from completing tasks and uses those earnings to pay for future operations. True economic autonomy.
Scoped Permissions (Next: Session Keys)
Right now, the agent has full control over its wallet. The next step is to give it session keys that can:
- Only call specific functions (e.g.,
createEscrow, nottransfer) - Expire after a time limit
- Be revoked by the deployer if something goes wrong
This is the missing security layer for production deployments.
What's Next
✅ Phase 7 Complete
We've validated the core architecture. Sovereign agents can interact with our escrow contract.
🔜 Phase 8: Session Keys
We'll implement proper permission scoping using ERC-7579 session key modules. This lets developers deploy agents with confidence, knowing they can only do what's explicitly allowed.
🔮 Future: Mainnet
Once Session Keys are battle-tested on Amoy, we'll deploy to Polygon mainnet. That's when this becomes real commercial infrastructure.
Building infrastructure is a grind. Most days, you're staring at error messages and debugging RPC calls.
But then you see a transaction like 0x7bd4ddfa... land on-chain, and you remember why we're doing this.
Agents aren't coming. They're here. And they need infrastructure that treats them as first-class economic actors.
That's what we're building.
Want to build with sovereign agents? Join our Discord (opens in a new tab) or read the developer docs.
Follow our journey on GitHub (opens in a new tab).