contract-addresses

Provides verified contract addresses for major EVM protocols across five chains.

6|20|Updated Mar 14, 2026
One-click install
npx skills add https://github.com/andresdefi/cryptoskills --skill contract-addresses-andresdefi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: contract-addresses
Source: https://github.com/andresdefi/cryptoskills/tree/main/skills/contract-addresses
Command: npx skills add https://github.com/andresdefi/cryptoskills --skill contract-addresses-andresdefi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? AI agents and developers frequently use hallucinated, outdated, or wrong-chain contract addresses when building crypto integrations, which causes failed transactions and lost funds. This Skill supplies a canonical, checksummed reference of verified addresses for tokens, DEXes, lending protocols, oracles, bridges, and infrastructure contracts. ## Core Features & Use Cases - Multi-chain address tables: Covers Ethereum, Arbitrum, Optimism, Base, and Polygon for stablecoins, wrapped tokens, Uniswap, Aave V3, Compound V3, Chainlink feeds, Safe, Permit2, Multicall3, and native bridges. - Common pitfall guidance: Explains bridged vs. native USDC, proxy vs. implementation contracts, EIP-55 checksums, and deterministic CREATE2 deployments. - Onchain verification workflows: Provides cast and Etherscan API commands to confirm contract existence, read token identity, and resolve proxy implementations before production use. - Use Case: When building an integration that swaps USDC on Arbitrum, look up the native USDC address (not USDC.e), verify it with cast code, and confirm the Uniswap Universal Router address before submitting transactions. ## Quick Start Ask the agent for the canonical USDC and Uniswap Universal Router addresses on Arbitrum and how to verify them onchain with cast.

Frequently Asked Questions about contract-addresses

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find the correct USDC contract address on Arbitrum?

Native USDC on Arbitrum is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831, while 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 is the legacy bridged USDC.e. Always use the native version unless a protocol explicitly requires bridged USDC.

How to verify a contract address onchain before using it?

Run cast code <address> --rpc-url <RPC> to confirm bytecode exists, then call name(), symbol(), and decimals() to confirm identity. For proxies, read the EIP-1967 implementation slot to find the current logic contract.

Are contract addresses the same across Ethereum, Arbitrum, and Base?

Usually no. Only deterministic CREATE2 deployments share addresses across chains, such as Multicall3, Permit2, Uniswap Universal Router, and OP Stack predeploys. Token addresses like USDC differ on every chain.

Why does my transaction fail when using a bridged token address?

Many L2s have both a legacy bridged token (USDC.e) and a native version, and protocols typically only support the native one. Check the contract's name() onchain to distinguish them and use the native address.

What is the difference between a proxy and implementation address?

The proxy is the stable address you interact with, while the implementation holds the upgradeable logic behind it. Most DeFi protocols use proxies, so read the EIP-1967 implementation slot to get the correct ABI.

Does USDT transfer work like a standard ERC20 token?

No. USDT's transfer() and approve() do not return a boolean, which breaks strict ERC20 interfaces. Use OpenZeppelin's SafeERC20 or viem's built-in handling, and remember USDT uses 6 decimals.