Skip to content
Back to skills

Crypto Wallet

ASecurity

Check cryptocurrency wallet balances, token holdings, transaction history, token approvals, ENS name resolution, and on-chain activity. Use when asked about wallet balance, what tokens an address holds, transaction history, pending transactions, token allowances, ENS lookup, or address portfolio.

  • 73 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 7, 2026
blockchaingogitapi

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 7, 2026

npx -y skills add jiayaoqijia/cryptoskill --skill crypto-wallet --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Crypto Wallet?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Crypto Wallet
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jiayaoqijia-crypto-wallet/badge)](https://www.skillsdirectory.com/skills/jiayaoqijia-crypto-wallet)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: crypto-wallet
description: >
  Check cryptocurrency wallet balances, token holdings, transaction history, token approvals,
  ENS name resolution, and on-chain activity. Use when asked about wallet balance, what tokens
  an address holds, transaction history, pending transactions, token allowances, ENS lookup,
  or address portfolio.
---

# Crypto Wallet

Query on-chain wallet data: balances, tokens, transactions, approvals, and ENS resolution.

## Common ERC-20 Function Selectors

| Function | Selector | Params |
|----------|----------|--------|
| `balanceOf(address)` | `0x70a08231` | address (32 bytes, left-padded) |
| `allowance(address,address)` | `0xdd62ed3e` | owner + spender (each 32 bytes) |
| `decimals()` | `0x313ce567` | none |
| `symbol()` | `0x95d89b41` | none |
| `name()` | `0x06fdde03` | none |
| `totalSupply()` | `0x18160ddd` | none |

## APIs

### ETH Balance via Public RPC

**Native ETH balance** (eth_getBalance):
```
exec command="curl -s -X POST https://eth.llamarpc.com -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0xADDRESS\",\"latest\"],\"id\":1}'"
```

**ERC-20 token balance** (eth_call with balanceOf):
```
exec command="curl -s -X POST https://eth.llamarpc.com -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0xTOKEN_CONTRACT\",\"data\":\"0x70a08231000000000000000000000000WALLET_NO_0x\"},\"latest\"],\"id\":1}'"
```

> Result is hex. Convert: `parseInt(result, 16) / 10^decimals`

### Multi-chain Public RPCs

| Chain | RPC URL |
|-------|---------|
| Ethereum | `https://eth.llamarpc.com` |
| Arbitrum | `https://arb1.arbitrum.io/rpc` |
| Optimism | `https://mainnet.optimism.io` |
| Base | `https://mainnet.base.org` |
| Polygon | `https://polygon-rpc.com` |
| BSC | `https://bsc-dataseed.binance.org` |
| Avalanche | `https://api.avax.network/ext/bc/C/rpc` |

### Etherscan / Block Explorers (Free tier, API key optional)

Base URLs:
- Ethereum: `https://api.etherscan.io/api`
- Arbitrum: `https://api.arbiscan.io/api`
- Base: `https://api.basescan.org/api`
- Optimism: `https://api-optimistic.etherscan.io/api`
- Polygon: `https://api.polygonscan.com/api`
- BSC: `https://api.bscscan.com/api`

**Token balances for address** (requires free API key):
```
web_fetch url="https://api.etherscan.io/api?module=account&action=tokentx&address=0xADDRESS&page=1&offset=50&sort=desc&apikey=YOUR_KEY"
```

**Normal transactions**:
```
web_fetch url="https://api.etherscan.io/api?module=account&action=txlist&address=0xADDRESS&startblock=0&endblock=99999999&page=1&offset=20&sort=desc&apikey=YOUR_KEY"
```

**ETH balance** (no key needed, rate limited):
```
web_fetch url="https://api.etherscan.io/api?module=account&action=balance&address=0xADDRESS&tag=latest"
```

### ENS Resolution

**Forward (name to address)** via RPC:
```
exec command="curl -s -X POST https://eth.llamarpc.com -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41\",\"data\":\"0x3b3b57de{NAMEHASH}\"},\"latest\"],\"id\":1}'"
```

**Simpler: use ENS public API**:
```
web_fetch url="https://ensdata.net/ADDRESS_OR_NAME"
```

### Token Approvals

**Check allowance** (how much a spender can use):
```
exec command="curl -s -X POST https://eth.llamarpc.com -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0xTOKEN\",\"data\":\"0xdd62ed3e000000000000000000000000OWNER_NO_0x000000000000000000000000SPENDER_NO_0x\"},\"latest\"],\"id\":1}'"
```

> Unlimited approval = `0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`

## External Tools (Optional)

- **EVM MCP Server**: `npx @mcpdotdirect/evm-mcp-server` — read balances, tokens, NFTs across 60+ EVM chains
- **Base MCP**: `github.com/base/base-mcp` — Coinbase-official Base chain tools

## Usage Tips

- Always pad addresses to 32 bytes (64 hex chars) in eth_call data fields
- Strip `0x` prefix from address when embedding in calldata, then left-pad with zeros
- Results from eth_call are hex-encoded; parse with `parseInt(hex, 16)`
- For ERC-20 balances, divide by `10^decimals` (USDC=6, most tokens=18)
- For multi-token portfolios, use Etherscan tokentx endpoint rather than individual RPC calls
- Verify chain before querying — same address can exist on multiple chains with different balances

Files in this skill

  • LICENSE33.8 KB
  • SKILL.md4.4 KB
  • SOURCE.md177 B
  • TRUST.auto.yaml2.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…