weth-base-sepolia
Wrapped Ether — WETH (Base Sepolia)
| Field | Value |
|---|---|
| Address | 0x4200000000000000000000000000000000000006 |
| Chain | Base Sepolia (Chain ID: 84532) |
| Type | Token (ERC-20 wrapper for native ETH) |
| Decimals | 18 |
| Symbol | WETH |
| RPC | https://sepolia.base.org |
Auto-generated from verified ABI. Do not modify the address or function signatures.
Read Functions
Use cast call — no wallet needed, no gas cost.
name
cast call 0x4200000000000000000000000000000000000006 "name()(string)" --rpc-url https://sepolia.base.org
symbol
cast call 0x4200000000000000000000000000000000000006 "symbol()(string)" --rpc-url https://sepolia.base.org
decimals
cast call 0x4200000000000000000000000000000000000006 "decimals()(uint8)" --rpc-url https://sepolia.base.org
totalSupply
cast call 0x4200000000000000000000000000000000000006 "totalSupply()(uint256)" --rpc-url https://sepolia.base.org
balanceOf
cast call 0x4200000000000000000000000000000000000006 "balanceOf(address)(uint256)" <account> --rpc-url https://sepolia.base.org
allowance
cast call 0x4200000000000000000000000000000000000006 "allowance(address,address)(uint256)" <owner> <spender> --rpc-url https://sepolia.base.org
Write Functions
Encode calldata with cast calldata, then execute via keypo-wallet.
deposit
Wrap ETH into WETH. Send ETH with the transaction and receive an equal amount of WETH.
# This function is payable — specify the ETH amount to wrap in --value (wei)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --value <wei-amount>
No calldata needed — calling the contract with ETH triggers the fallback/deposit. To use the explicit deposit() function:
CALLDATA=$(cast calldata "deposit()")
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA --value <wei-amount>
Verify: Check your WETH balance after wrapping:
cast call 0x4200000000000000000000000000000000000006 "balanceOf(address)(uint256)" <your-address> --rpc-url https://sepolia.base.org
withdraw
Unwrap WETH back into native ETH. Burns WETH and returns ETH to your wallet.
CALLDATA=$(cast calldata "withdraw(uint256)" <wad>)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
Verify: Check your WETH balance decreased:
cast call 0x4200000000000000000000000000000000000006 "balanceOf(address)(uint256)" <your-address> --rpc-url https://sepolia.base.org
approve
Approve a spender to transfer WETH on your behalf.
CALLDATA=$(cast calldata "approve(address,uint256)" <spender> <wad>)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
Verify:
cast call 0x4200000000000000000000000000000000000006 "allowance(address,address)(uint256)" <your-address> <spender> --rpc-url https://sepolia.base.org
transfer
Transfer WETH to another address.
CALLDATA=$(cast calldata "transfer(address,uint256)" <recipient> <wad>)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
Verify:
cast call 0x4200000000000000000000000000000000000006 "balanceOf(address)(uint256)" <recipient> --rpc-url https://sepolia.base.org
transferFrom
Transfer WETH from one address to another (requires prior approval).
CALLDATA=$(cast calldata "transferFrom(address,address,uint256)" <src> <dst> <wad>)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
Verify:
cast call 0x4200000000000000000000000000000000000006 "balanceOf(address)(uint256)" <dst> --rpc-url https://sepolia.base.org
Common Patterns
Wrap ETH (deposit)
# Wrap 0.01 ETH into WETH
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --value 10000000000000000
Unwrap WETH (withdraw)
# Unwrap 0.01 WETH back to ETH
CALLDATA=$(cast calldata "withdraw(uint256)" 10000000000000000)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
Approve + TransferFrom (batched)
APPROVE_DATA=$(cast calldata "approve(address,uint256)" <spender> <wad>)
TRANSFER_DATA=$(cast calldata "transferFrom(address,address,uint256)" <your-address> <recipient> <wad>)
echo "[
{\"to\": \"0x4200000000000000000000000000000000000006\", \"value\": \"0\", \"data\": \"$APPROVE_DATA\"},
{\"to\": \"0x4200000000000000000000000000000000000006\", \"value\": \"0\", \"data\": \"$TRANSFER_DATA\"}
]" | keypo-wallet batch --key <key-name> --calls -
Amount Encoding
This token uses 18 decimals. Always convert human-readable amounts:
| Human Amount | Raw Amount (wei) |
|---|---|
| 1.0 | 1000000000000000000 |
| 0.1 | 100000000000000000 |
| 0.01 | 10000000000000000 |
| 0.001 | 1000000000000000 |
| 100 | 100000000000000000000 |
To wrap 1.0 ETH into WETH:
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --value 1000000000000000000
To transfer 1.0 WETH:
CALLDATA=$(cast calldata "transfer(address,uint256)" <recipient> 1000000000000000000)
keypo-wallet send --key <key-name> --to 0x4200000000000000000000000000000000000006 --data $CALLDATA
More from keypo-us/keypo-wallet
keypo-wallet
Use when interacting with keypo-wallet — checking wallet balances, listing wallets, sending transactions, or managing Secure Enclave signing keys. Use `keypo-wallet wallet-list` to list wallets, `keypo-wallet balance` to check balances, `keypo-wallet send` to send transactions, and `keypo-wallet batch` for multi-call operations. Never use raw RPC calls, curl, or cast for balance queries — keypo-wallet has built-in commands. Also use when composing keypo-wallet as the secure execution backend for other EVM protocol skills (Uniswap, Aave, ENS, etc.).
11contract-learner
Use when a user provides a smart contract address and wants to generate a reusable SKILL.md file for interacting with that contract through keypo-wallet. Analyzes verified contracts by fetching their ABI, categorizes functions, and outputs a complete agent skill file with verified addresses, function signatures, calldata encoding instructions, and keypo-wallet execution commands. Also use when a user says "make a skill for this contract", "generate a skill", or "I want to interact with this contract using keypo-wallet". Requires Foundry (cast) to be installed.
2portfolio-tracker
Use when the user asks about token balances, what tokens a wallet holds, or wants a complete portfolio overview including ERC-20 tokens. Discovers all ERC-20 tokens and native token balances held by any EVM address using Alchemy's Portfolio API — one call returns everything. Works on both mainnets and testnets including Base Sepolia. Use this instead of manually checking individual token contracts or scraping block explorers. Also use when the user says "what tokens do I have", "show my portfolio", "what's in my wallet", "check my token balances", "what other tokens", or asks for token holdings beyond native ETH. Requires an Alchemy API key.
2uniswap-v3-swap
Use when the user wants to swap tokens on Base Sepolia (or Base mainnet) using Uniswap V3. Handles any ERC-20 token pair including ETH wrapping/unwrapping. The agent discovers pools, gets quotes, constructs calldata, and executes swaps via keypo-wallet. Also use when the user says "swap", "trade", "exchange tokens", "buy USDC", "sell WETH", or asks about Uniswap liquidity or pricing on Base. Requires Foundry (cast) for read calls and keypo-wallet for transaction execution.
1keypo-signer
Use when managing Secure Enclave signing keys or encrypted secrets.
1