Overview
Zafeguard EVM components for Ethereum and EVM-compatible chains — transactions, contract reads, Gnosis Safe, DeFi, and utilities.
Overview
Zafeguard ships 24 EVM components covering the full lifecycle of on-chain operations across any EVM-compatible chain (Ethereum, Polygon, Arbitrum, Base, Avalanche, etc.).
All EVM components accept a jsonRpcUrl where applicable — pass any standard JSON-RPC endpoint (Alchemy, Infura, your own node).
Categories
| Group | Components | Page |
|---|---|---|
| Transactions | BUILD_CALLDATA, BUILD_TRANSFER_CALLDATA, BUILD_ERC20_APPROVE_CALLDATA, BUILD, SIGN, BROADCAST, WAIT | Transactions → |
| Wallets & Addresses | COMPUTE_ADDRESS, GET_DERIVATION_PATH, GET_BALANCE, GET_CHAIN_ID | Wallets & Addresses → |
| Gnosis Safe | DEPLOYMENT, NONCE, ADDRESS, IS_DEPLOYED, SIGNATURE, SAFE_TX, OWNERS, MULTICALL | Gnosis Safe → |
| DeFi | UNISWAP_QUOTE, UNISWAP_SWAP_TX | DeFi → |
| Cross-Chain Bridges | BRIDGE_EVM_TOKENS | Cross-Chain Bridges → |
| Read & Decode | READ_CONTRACT, DECODE_RESULT, KECCAK256 | Read & Decode → |
Typical EVM workflow
GET_EVM_DERIVATION_PATH
│
▼
COMPUTE_PUBLIC_KEY ──▶ COMPUTE_EVM_ADDRESS
│
▼
BUILD_EVM_TRANSACTION
│
▼
SIGN_WITH_KEY_SHARE ──▶ SIGN_EVM_TRANSACTION
│
▼
BROADCAST_EVM_TRANSACTION
│
▼
WAIT_FOR_EVM_TRANSACTION
Connecting to any chain
All components that interact with on-chain state take a jsonRpcUrl as input. You can pass this as a workspace environment variable or directly as a STRING_CONSTANT.
STRING_CONSTANT ("https://eth-mainnet.g.alchemy.com/v2/KEY")
│
▼ jsonRpcUrl
BUILD_EVM_TRANSACTION
Public RPC URLs (such as https://eth.llamarpc.com or https://rpc.ankr.com/eth) enforce rate limits per IP address and can fail under concurrent load.
Always use a private RPC endpoint from a provider such as Alchemy, Infura, or QuickNode, or point to a self-hosted node.
Works on any EVM chain
EVM components are chain-agnostic — they speak the standard JSON-RPC protocol. Supply any standards-compliant jsonRpcUrl and components work with:
- Any public mainnet (Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BNB Chain, Fantom, Linea, zkSync Era, Scroll, Mantle, Blast, Mode, World Chain, etc.)
- Any public testnet (Sepolia, Holesky, Mumbai, Sepolia derivatives, etc.)
- Any L2 / rollup that exposes a standards-compliant JSON-RPC endpoint
- Private and permissioned chains that use the EVM execution environment
The components fetch chainId from the RPC at execution time. The few features that do require chain-specific data (Gnosis Safe deployments, Uniswap routing, address book entries) gracefully error if the chain isn't supported by the underlying protocol.
Example RPCs (for reference only — bring your own):
| Chain | Example RPC |
|---|---|
| Ethereum Mainnet | https://eth-mainnet.g.alchemy.com/v2/KEY |
| Polygon | https://polygon-mainnet.g.alchemy.com/v2/KEY |
| Arbitrum One | https://arb-mainnet.g.alchemy.com/v2/KEY |
| Base | https://base-mainnet.g.alchemy.com/v2/KEY |
| Optimism | https://opt-mainnet.g.alchemy.com/v2/KEY |
| Avalanche | https://avax-mainnet.infura.io/v3/KEY |
| Bitkub Chain | https://rpc.bitkubchain.io |
| JFIN Chain | https://rpc.jfinchain.com |
| Private chain | https://your-private-chain.example.com/rpc |