contract-addresses

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

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

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 (USDC, USDT, DAI), wrapped tokens (WETH, wstETH), Uniswap routers, Aave V3, Compound V3, Chainlink feeds, Safe, Permit2, Multicall3, and native bridges. - Verification workflows: Includes cast and Etherscan API commands to confirm contract existence, read token identity, resolve EIP-1967 proxy implementations, and validate EIP-55 checksums before production use. - Troubleshooting guidance: Explains common failure modes such as bridged vs. native USDC confusion, proxy vs. implementation mismatches, and wrong-chain address usage. - Use Case: When building an Arbitrum swap integration, look up the native USDC address and Uniswap Universal Router address, then verify both onchain with cast before deploying. ## Quick Start Ask the agent for the verified USDC and Uniswap Universal Router addresses on Arbitrum and how to confirm 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 with the address and RPC URL to confirm bytecode exists, then call name(), symbol(), and decimals() to confirm identity. For proxies, read the EIP-1967 implementation slot with cast storage to find the current implementation.

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

Usually no. Only contracts deployed via deterministic CREATE2 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 increasingly only support the native one. Check the contract's name() onchain to distinguish them and use the native address listed in the reference.

What is the difference between a proxy address and an implementation address?

The proxy is the stable address you interact with, while the implementation holds the upgradeable logic behind it. Always send transactions to the proxy, but read the implementation via the EIP-1967 storage slot when you need the correct ABI.

Why does USDT transfer behave differently from other ERC20 tokens?

USDT's transfer() and approve() functions do not return a boolean, breaking contracts that expect standard ERC20 return values. Use OpenZeppelin's SafeERC20 library or viem's built-in handling to interact with USDT safely.