Skip to main content
Glama
andresdefi

zerodust

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.

Related MCP server: ows-mcp-wallet

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

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andresdefi/zerodust'

If you have feedback or need assistance with the MCP directory API, please join our Discord server