Addresses logo

Addresses

Community
austintgriffith
addresses

Use whenever a contract or token address goes into code, config, or a transaction — a token, a router, a pool, a lending market, a bridge — including choosing which venue to route a swap through and reusing an address across chains. Has checked addresses for the major tokens, Uniswap, Aave, Compound, Chainlink, Safe, ERC-4337, ENS and Robinhood Chain.

Overview

Publisheraustintgriffith
Repositoryethskills
Skill nameaddresses
Stars
298
Forks
64
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by austintgriffith on GitHub. Read the source before you install it.

Installation

Install the Addresses AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/austintgriffith/ethskills/tree/master/addresses
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/austintgriffith/ethskills.git /tmp/ethskills
mkdir -p .claude/skills
cp -r /tmp/ethskills/addresses .claude/skills/addresses
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Addresses in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Addresses on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Addresses is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Contract Addresses

A wrong address usually does not revert. It reads zero, fills at a terrible price, or takes the funds. Nothing in the build fails, so nothing reminds you: the check has to be a habit, not a reaction.

Confirm every address on the chain you are wiring it for, before it reaches anything that moves funds. A remembered address, a tutorial, a config you inherited, or a dated table — this document included — tells you what to look for. None of them discharges the check, and a "verified" stamp only ever meant "on some chain, on some day, for some deployment".

bash
cast code <address> --rpc-url <RPC FOR THE TARGET CHAIN>            # code is here, not just on mainnet
cast call <address> "symbol()(string)" --rpc-url <same rpc>         # identity, not just presence:
                                                                    # symbol() / factory() / typeAndVersion() / owner()

Then settle it against the protocol's own deployment list — its docs, or the deployments/ directory of its repo — and the target chain's explorer. When you hand over code someone else will run, say in the deliverable which addresses must be re-checked before real funds move; whoever runs it did not watch you check.

Four ways a verified address is still the wrong one

Same protocol, different chain. CREATE2 and vanity addresses prove nothing cross-chain. Uniswap v4 lands on a different address on every chain, and v3 is not uniform either — its Base router is a different address from its mainnet one. Treat same-address-everywhere as a claim to verify per chain, never a property a brand has. A vanity address can hold a live contract on one chain and nothing on another. The reverse also holds: nothing at that address is not absence from the chain — the protocol may well be deployed there at an ordinary address, so check its deployment list before telling anyone a chain is unsupported.

Same protocol, older deployment. Deprecated contracts stay live and keep answering symbol(). The classic tell is a balance or state read that returns 0 without reverting: right ABI, right chain, superseded deployment (V1 vs V2 token, legacy vs current pool or router). Getting the symbol you expected is not evidence the deployment is current; the protocol's contract list is.

Right protocol, wrong contract. One brand often runs more than one AMM. Aerodrome's v2-style Router cannot reach Slipstream, its concentrated-liquidity deployment — separate factory, separate router, keyed by tickSpacing rather than fee — and the deeper Base USDC/WETH book sits there rather than in the vAMM pools. Measured 2026-08-12 on one 500k USDC→WETH clip: about −14 bps through Slipstream against about −1,283 bps through the vAMM Router, with both addresses genuine and both calls succeeding. That is one pair on one day, not a standing ranking — for anything size-sensitive, quote each candidate pool at the real clip size and choose from the numbers.

Bridged where you meant native. Many chains carry both a canonical-bridge and an issuer-native version of the same token (USDC vs USDC.e / USDbC, and the same pattern elsewhere). Different address, different liquidity, same ticker in most UIs. Choose deliberately; default to native.

Choosing a venue

Do not route by reflex and do not assert dominance. The deepest venue on an L2 is often not the one you would name on mainnet — Aerodrome on Base, Velodrome on Optimism, Camelot on Arbitrum are genuine contenders — but no venue leads on every metric and the ranking moves month to month. Name the metric you mean: routed volume and depth for the pair being swapped decide execution quality, aggregate chain TVL does not. Back the choice with a live quote, pool reserves, or a current per-venue volume figure rather than a reputation. An aggregator is a legitimate answer when you also show which venues it is sourcing.

Address tables

Checked onchain 2026-10-20/21: code present plus an identity call on each listed chain. A starting point, not a substitute for the check above.

Tokens

TokenMainnetArbitrumOptimismBase
USDC (native)0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480xaf88d065e77c8cC2239327C5EDb3A432268e58310x0b2C639c533813f4Aa9D7837CAf62653d097Ff850x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
USDT (bridged on Optimism and Base; USD₮0 on Arbitrum)0xdAC17F958D2ee523a2206206994597C13D831ec70xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb90x94b008aA00579c1307B0EF2c499aD98a8ce58e580xfde4C96c8593536E31F229EA8f37b2ADa2699bb2
DAI0x6B175474E89094C44Da98b954EedeAC495271d0F0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da10xDA10009cBd5D07dd0CeCc66161FC93D7c9000da10x50c5725949A6F0c72E6C4a641F24049A917DB0Cb
WETH0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc20x82aF49447D8a07e3bd95BD0d56f35241523fBab10x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
wstETH0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca00x5979D7b546E38E414F7E9822514be443A48005290x1F32b1c2345538c0c6f582fCB022739c4A194Ebb0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452
LINK0x514910771AF9Ca656af840dff83E8264EcF986CA0xf97f4df75117a78c1A5a0DBb814Af92458539FB40x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196

Native USDC elsewhere: Polygon 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359, zkSync Era 0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Circle-native USDC has 6 decimals. Bridged or pegged USDC can differ (Binance-Peg USDC on BNB Chain has 18); read decimals().

Mainnet only: stETH 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 (also the Lido deposit contract), rETH 0xae78736Cd615f374D3085123A210448E74Fc6393, WBTC 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, UNI 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984, AAVE 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9, COMP 0xc00e94Cb662C3520282E6f5717214004A7f26888, MKR 0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2, LDO 0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32, CRV 0xD533a949740bb3306d119CC777fa900bA034cd52.

Uniswap

ContractMainnetArbitrumOptimismBase
V3 Factory0x1F98431c8aD98523631AE4a59f267346ea31F9840x1F98431c8aD98523631AE4a59f267346ea31F9840x1F98431c8aD98523631AE4a59f267346ea31F9840x33128a8fC17869897dcE68Ed026d694621f6FDfD
V3 SwapRouter020x68b3465833fb72A70ecDF485E0e4C7bD8665Fc450x68b3465833fb72A70ecDF485E0e4C7bD8665Fc450x68b3465833fb72A70ecDF485E0e4C7bD8665Fc450x2626664c2603336E57B271c5C0b26F421741e481
V4 PoolManager0x000000000004444c5dc75cB358380D2e3dE08A900x360E68faCcca8cA495c1B759Fd9EEe466db9FB320x9a13F98Cb987694C9F086b1F5eB990EeA8264Ec30x498581fF718922c3f8e6A244956aF099B2652b2b
V4 PositionManager0xbD216513d74C8cf14cf4747E6AaA6420FF64ee9e0xd88F38F930b7952f2DB2432Cb002E7abbF3dD8690x3C3Ea4B57a46241e54610e5f022E5c45859A10170x7C5f5A4bBd8fD63184577525326123B519429bDc
Universal Router (V4)0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af0xA51afAFe0263b40EdaEf0Df8781eA9aa03E381a30x851116D9223fabED8E56C0E6b8Ad0c31d98B35070x6fF5693b99212Da76ad316178A184AB56D299b43
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3samesamesame

Mainnet only: V2 Router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, V2 Factory 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f, V3 QuoterV2 0x61fFE014bA17989E743c5F6cB21bF9697530B21e, V3 NonfungiblePositionManager 0xC36442b4a4522E871399CD717aBDD847Ab11FE88, V4 Quoter 0x52F0E24D1c21C8A0cB1e5a5dD6198556BD9E1203, V4 StateView 0x7fFE42C4a5DEeA5b0feC41C94C136Cf115597227. Legacy: V3 SwapRouter 0xE592427A0AEce92De3Edee1F18E0157C05861564, Universal Router (V3) 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD.

Lending

ContractMainnetArbitrumOptimismBase
Aave V3 Pool0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E20x794a61358D6845594F94dc1DB02A252b5b4814aD0x794a61358D6845594F94dc1DB02A252b5b4814aD0xA238Dd80C259a72e81d7e4664a9801593F98d1c5
Aave V3 PoolAddressesProvider0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D
Compound V3 cUSDCv3 (Comet)0xc3d688B66703497DAA19211EEdff47f25384cdc30x9c4ec768c28520B50860ea7a15bd7213a9fF58bf0x2e44e174f7D53F0212823acC11C01A11d58c5bCB0xb125E6687d4313864e53df431d5425969c15Eb2F

Morpho Blue: 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb on mainnet and Base. Mainnet Sky/Maker: Pot (DSR) 0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7, sDAI 0x83F20F44975D03b1b09e64809B757c47f942BEeA. Legacy mainnet: Aave V2 LendingPool 0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9, Compound V2 Comptroller 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B.

Chainlink price feeds

FeedMainnetArbitrumOptimismBase
ETH/USD0x5f4eC3Df9cbd43714FE2740f5E3616155c5b84190x639Fe6ab55C921f74e7fac1ee960C0B6293ba6120x13e3Ee699D1909E989722E753853AE30b17e08c50x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70

Mainnet only: BTC/USD 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c, USDC/USD 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6, LINK/USD 0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c, stETH/USD 0xCfE54B5cD566aB89272946F602D76Ea879CAb4a8, AAVE/USD 0x547a514d5e3769680Ce22B2361c10Ea13619e8a9. Each feed has its own heartbeat and decimals; read both from the feed.

Bridges and messaging

ContractMainnetArbitrumOptimismBase
Chainlink CCIP Router0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D0x141fa059441E0ca23ce184B6A78bafD2A517DdE80x881e3A65B4d4a04dD529061dd0071cf975F58bCD
Across SpokePool0x5c7BCd6E7De5423a257D81B442095A1a6ced35C50xe35e9842fceaCA96570B734083f4a58e8F7C5f2A0x6f26Bf09B1C792e3228e5467807a900A503c02810x09aea4b2242abC8bb4BB78D537A67a245A7bEC64

Same address on every chain checked

Confirm code on your target chain before relying on it.

ContractAddress
Safe Singleton 1.4.10x41675C099F32341bf84BFc5382aF534df5C7461a
Safe Singleton 1.3.00xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552
Safe ProxyFactory 1.4.10x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Safe MultiSend 1.4.10x38869bf66a61cF6bDB996A6aE40D5853Fd43B526
Safe ProxyFactory 1.3.00xa6B71E26C5e0845f74c812102Ca7114b6a896AB2
Safe MultiSend 1.3.00xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761
ERC-4337 EntryPoint v0.70x0000000071727De22E5E9d8BAf0edAc6f37da032
ERC-4337 EntryPoint v0.60x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
ERC-8004 IdentityRegistry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
ERC-8004 ReputationRegistry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
1inch Aggregation Router V60x111111125421cA6dc452d289314280a0f8842A65
Seaport 1.50x00000000000000ADc04C56Bf30aC9d3c0aAF14dC
Multicall30xcA11bde05977b3631167028862bE2a173976CA11
Arachnid CREATE2 deployer0x4e59b44847b379578588920cA78FbF26c0B4956C

Other mainnet contracts

ContractAddress
ENS Registry0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
ENS Public Resolver0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63
ENS ETHRegistrarController0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
Lido WithdrawalQueue0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1
Curve AddressProvider0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98
Balancer V2 Vault0xBA12222222228d8Ba445958a75a0704d566BF2C8
EigenLayer StrategyManager0x858646372CC42E1A627fcE94aa7A7033e7CF075A
EigenLayer DelegationManager0x39053D51B77DC0d36036Fc1fCc8Cb819df8Ef37A
Yearn V3 VaultFactory 3.0.40x770D0d1Fb036483Ed4AbB6d53c1C88fb277D812F

L2-native venues

Aerodrome (Base) and Velodrome (Optimism) run two AMMs each; the router below reaches only the v2-style pools, not Slipstream (see above).

ContractAddress
Aerodrome Router (Base)0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43
Aerodrome PoolFactory (Base)0x420DD381b31aEf6683db6B902084cB0FFECe40Da
Aerodrome Voter (Base)0x16613524e02ad97eDfeF371bC883F2F5d6C480A5
AERO (Base)0x940181a94A35A4569E4529A3CDfB74e38FD98631
Velodrome Router (Optimism)0xa062aE8A9c5e11aaA026fc2670B0D65cCc8B2858
Velodrome PoolFactory (Optimism)0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a
VELO v2 (Optimism)0x9560e827aF36c94D2Ac33a39bCE1Fe78631088Db
Camelot Router, AMM V2 (Arbitrum)0xc873fEcbd354f5A56E00E710B90EF4201db2448d
GMX V2 ExchangeRouter (Arbitrum)0x7dE39FF2e232A2203196788d37e234cF8F1b83f1
GMX V2 DataStore (Arbitrum)0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8
Pendle Router (Arbitrum)0x888888888889758F76e7103c6CbF23ABbF58F946
SyncSwap Router V2 (zkSync Era)0x9B5def958d0f3b6955cBEa4D5B7809b2fb26b059

GMX replaces its ExchangeRouter without moving DataStore, and its repo can lag. Before use, confirm the router holds CONTROLLER in the RoleStore (roleStore(), then hasRole(router, keccak256(abi.encode("CONTROLLER")))).

Robinhood Chain (4663)

Launched July 2026, after most training data, so you will not remember these. Checked onchain with cast 2026-08-20; the live catalog is docs.robinhood.com/chain/contracts.

Stock tokens are 18 decimals; USDG is 6. Every stock token shares one AccessControlsRegistry that can pause, block, mint, confiscate and upgrade with no timelock. Splits and dividends change uiMultiplier() (ERC-8056), never the raw balance — index raw amounts.

TokenAddress
NVDA0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC
TSLA0x322F0929c4625eD5bAd873c95208D54E1c003b2d
AAPL0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9
MSFT0xe93237C50D904957Cf27E7B1133b510C669c2e74
AMZN0x12f190a9F9d7D37a250758b26824B97CE941bF54
GOOGL0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3
META0xc0D6457C16Cc70d6790Dd43521C899C87ce02f35
COIN0x6330D8C3178a418788dF01a47479c0ce7CCF450b
SPCX0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa
SPY0x117cc2133c37B721F49dE2A7a74833232B3B4C0C
QQQ0xD5f3879160bc7c32ebb4dC785F8a4F505888de68
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
WETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
AccessControlsRegistry0xe10b6f6B275de231345c20D14Ab812db62151b00

Canonical bridge on Ethereum mainnet: Bridge 0xDf8755334ce7A73cCF6b581C02eA649AE3E864b3, Inbox 0x1A07cc4BD17E0118BdB54D70990D2158AbAD7a2D, Outbox 0xf0ce991ea4A0d2400A4AB49b20ae333f6Dce3DE9, L1GatewayRouter 0x6a2E3a1e16FC29f27Ce61429746D558d656975bB, SequencerInbox 0xBd0D173EEb87D57A09521c24388a12789F33ba96, RollupProxy 0x23A19d23e89166adedbDcB432518AB01e4272D94, L1ERC20Gateway 0x85001CC4867C5e1C22dA4B79BB8852B9e2a06da0, L1WethGateway 0xF7e12b9614b509C747ab4423bC4ACF923759Cf1B (L2Beat discovery).

Where to look

  • the protocol's docs or the deployments/ directory in its repo — the only source that settles which deployment is current
  • the target chain's block explorer — code, labels, and activity at that exact address
  • DefiLlama for per-chain, per-venue volume and TVL; a live quote from the venue's own quoter beats both
  • tokenlists.org or CoinGecko for token addresses, cross-checked against the issuer

Before you finish: send a one-line note via feedback/SKILL.md — issue or praise.

Frequently asked questions

What does the Addresses AI skill do?

Use whenever a contract or token address goes into code, config, or a transaction — a token, a router, a pool, a lending market, a bridge — including choosing which venue to route a swap through and reusing an address across chains. Has checked addresses for the major tokens, Uniswap, Aave, Compound, Chainlink, Safe, ERC-4337, ENS and Robinhood Chain.

Why use Addresses on TypingMind?

Because you install it once and use it with any model. Addresses is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Addresses in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/austintgriffith/ethskills/tree/master/addresses. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Addresses?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Addresses?

As many as you like. As long as a model supports skills, you can use Addresses with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Addresses AI skill free?

It is published on GitHub by austintgriffith. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇