zerodust

zerodust

Sweep an AI agent's native gas balance to exactly zero on 25+ EVM chains via EIP-7702 sponsored execution, a relayer pays the gas and is reimbursed from the sweep, so nothing is left stranded.

Category
Visit Server

README

ZeroDust

Exit a blockchain completely - transfer 100% of your native gas balance via EIP-7702

ZeroDust is an intent-based exit system that enables users to sweep their entire native gas token balance to exactly zero via EIP-7702 sponsored execution.

For AI agents

Agents accumulate dust as a byproduct of existing. Anything doing multi-chain work — arbitrage, bridging, testing, deployment — ends up with stranded gas on chains it will never touch again. A human notices and shrugs; an unattended agent leaks capital indefinitely.

ZeroDust is an MCP server, so any MCP-compatible agent can sweep its own wallet to exactly zero:

{
  "mcpServers": {
    "zerodust": {
      "command": "npx",
      "args": ["@zerodust/mcp-server"],
      "env": {
        "ZERODUST_ALLOW_EXECUTE": "true",
        "ZERODUST_PRIVATE_KEY": "0x..."
      }
    }
  }
}

Read-only by default. Sweeping requires the explicit opt-in above, and funds can only go to the agent's own address unless ZERODUST_ALLOWED_DESTINATIONS says otherwise — so a prompt-injected agent still cannot send funds somewhere you never approved.

Package Use
@zerodust/mcp-server MCP (Claude Code, Claude Desktop, any MCP client)
@zerodust/sdk TypeScript, direct — createAgentFromPrivateKey
@zerodust/langchain LangChain tools
@zerodust/ai-sdk Vercel AI SDK tools

Verified on mainnet (2026-07-21): Optimism → Base, source balance to exactly 0, delegation auto-revoked, 99.88% delivered, 23.2s end to end — 0x19456ea8….

Note on wallets: the browser UI needs the non-standard wallet_signAuthorization RPC, which no shipping wallet exposes yet (MetaMask #7836, Rabby #3411). Agents are unaffected — they hold their own keys and sign locally.

The Problem

When users want to fully exit a blockchain, they face an impossible situation:

User has: 0.0008 ETH on Arbitrum
User wants: 0 ETH on Arbitrum (transfer everything to Base)

The Problem:
├── To send ETH, you need ETH for gas
├── If you send all your ETH, you can't pay gas
├── If you keep gas, you can't send all your ETH
└── Result: Small amount always stranded

ZeroDust is the only solution that enables complete chain exits for native gas tokens.

How It Works

  1. User connects wallet to ZeroDust
  2. User selects source chain and destination (same-chain or cross-chain)
  3. User signs ONE authorization (no gas needed)
  4. ZeroDust sponsor executes the sweep
  5. User receives funds on destination
  6. Origin chain balance: EXACTLY ZERO

Supported Sweep Cases

Case Description Example
Cross-chain, same address Exit to yourself on another chain Arbitrum → Base (same wallet)
Cross-chain, different address Exit to another wallet on another chain Arbitrum → Base (different wallet)
Same-chain, different address Consolidate to another wallet Arbitrum → Arbitrum (different wallet)

Post-Condition (enforced on-chain): Source balance = exactly 0 wei

Supported Chains

Contract Address (same on all chains): 0x3732398281d0606aCB7EC1D490dFB0591BE4c4f2

ZeroDust is deployed on 26 mainnet chains with EIP-7702 support:

Chain ID Token Chain ID Token
Ethereum 1 ETH Sei 1329 SEI
Optimism 10 ETH Astar zkEVM 1514 ETH
BSC 56 BNB Soneium 1868 ETH
Gnosis 100 xDAI Mantle 5000 MNT
Unichain 130 ETH Kaia 5330 KAIA
Polygon 137 POL Base 8453 ETH
Sonic 146 S Plasma 9745 XPL
X Layer 196 OKB ApeChain 33139 APE
Fraxtal 252 frxETH Mode 34443 ETH
World Chain 480 ETH Arbitrum 42161 ETH
Celo 42220 CELO Redstone 57073 ETH
BOB 60808 ETH Berachain 80094 BERA
Scroll 534352 ETH Zora 7777777 ETH

Plus 46 testnets for development.

See contracts/README.md for explorer links.

Project Structure

zerodust/
├── contracts/          # Smart contracts (Foundry)
│   ├── src/
│   │   ├── ZeroDustSweepMainnet.sol   # Production contract
│   │   └── ZeroDustSweepTEST.sol      # Testnet contract
│   ├── script/
│   │   └── DeployMainnet.s.sol        # Mainnet deployment (CREATE2)
│   └── broadcast/                      # Deployment logs
└── docs/

Architecture

Contract Architecture

┌─────────────────────────────────────────────────────────────┐
│                        User's EOA                            │
│                   (EIP-7702 delegated)                       │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │          ZeroDustSweepMainnet (bytecode)             │    │
│  │                                                      │    │
│  │              executeSweep(intent, sig)               │    │
│  │                        │                             │    │
│  │           ┌────────────┴────────────┐                │    │
│  │           ▼                         ▼                │    │
│  │    MODE_TRANSFER (0)         MODE_CALL (1)           │    │
│  │    Same-chain sweep          Cross-chain sweep       │    │
│  │           │                         │                │    │
│  │           ▼                         ▼                │    │
│  │    Transfer to              Call bridge target       │    │
│  │    destination              (callTarget + callData)  │    │
│  │                                     │                │    │
│  └─────────────────────────────────────┼────────────────┘    │
│                                        │                     │
└────────────────────────────────────────┼─────────────────────┘
                                         │
                                         ▼
                          ┌─────────────────────────┐
                          │     External Bridge     │
                          │       (Gas.zip)         │
                          │                         │
                          │   Delivers funds on     │
                          │   destination chain     │
                          └─────────────────────────┘

Security Model

  • No admin functions - Immutable after deployment
  • No upgradability - What you see is what you get
  • Unified SweepIntent - Single signed structure for all sweep types
  • Zero balance enforcement - Contract reverts if any balance remains
  • ERC-7201 storage - Prevents slot collisions with other EIP-7702 apps
  • Immutable sponsors - Stored in bytecode, not storage

Fee Structure

Service Fee: 1% of swept value, with $0.05 minimum and $0.50 maximum.

Total Fee = Gas Reimbursement + Service Fee + Bridge Fee (if cross-chain)

Examples:
- $5 balance → $0.05 fee (1% = $0.05, at min) → User receives ~$4.95
- $10 balance → $0.10 fee (1%) → User receives ~$9.90
- $60 balance → $0.50 fee (max) → User receives ~$59.50

Documentation

Security

ZeroDust is designed with security as the top priority:

  • No fund custody - All operations are atomic, single-transaction
  • User-controlled limits - maxTotalFeeWei and minReceive signed by user
  • Mandatory simulation - Every transaction simulated before execution
  • routeHash binding - Signature bound to specific bridge route (cross-chain)
  • Internal security review - 7 rounds, 16 issues identified and fixed
  • External audit - Pending (required before full launch)

Status

Smart Contract: Deployed on 26 mainnets + 46 testnets

Contract Versions

Contract Status Features
ZeroDustSweepMainnet Production Unified SweepIntent, granular fees, sponsor model
ZeroDustSweepTEST Testnet Same as mainnet, for testing

Verified Mainnet Sweeps

Chain Swept TX
Base $3.46 → 0 View
Arbitrum $3.57 → 0 View
BSC $2.25 → 0 View
Polygon $7.55 → 0 View

See contracts/README.md for full deployment list.

Testnets NOT Supporting EIP-7702

The following testnets were tested and do not support EIP-7702:

Abstract, Lens, zkSync, Taiko, opBNB, Avalanche, Swell, Cyber, Boba, Metis, Fuse, Aurora, Flare, Vana, Corn, Rootstock, Apechain, IoTeX, Viction, XDC, Telos, Kava, EDU Chain, Gravity, Manta Pacific, Lightlink, Moonbase, Nibiru, Somnia, Rari, Blast, Xai, B3, Mezo, Chiliz, HashKey, Memecore

Note: Mainnet support may differ from testnet.

Cross-Chain Bridging

ZeroDust supports cross-chain sweeps via the MODE_CALL pattern:

  • callTarget: Bridge contract address
  • callData: Bridge-specific transaction data
  • routeHash: keccak256(callData) - binds signature to specific route

Primary Bridge: Gas.zip - 239+ chains, ~5 second delivery

License

MIT License - see LICENSE


Production deployed on 26 mainnet chains. Contract: 0x3732398281d0606aCB7EC1D490dFB0591BE4c4f2

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured