cryptowallet
This skill provides multi-chain cryptocurrency wallet management: creating/importing wallets, encrypted local key storage, balance checks, transactions, and contract interactions. It stores encrypted keys in ~/.clawdbot/cryptowallet/, includes runnable commands like python3 scripts/token_sender.py ..., and uses external RPCs such as https://eth.llamarpc.com.
CryptoWallet
Comprehensive cryptocurrency wallet management for Clawdbot agents. Securely create, manage, and transact across multiple blockchain networks with encrypted local key storage.
Supported Networks
EVM Chains (12 networks)
- Ethereum, Polygon, BSC, Arbitrum, Optimism, Base
- Avalanche, Fantom, Gnosis, zkSync, Linea, Scroll
Solana
- Mainnet and Devnet
Full network details in references/networks.json.
Core Features
1. Wallet Management
Create new wallets or import existing ones:
# Create new EVM wallet
python3 scripts/wallet_manager.py create my-eth-wallet --chain evm --password "secure-password"
# Create new Solana wallet
python3 scripts/wallet_manager.py create my-sol-wallet --chain solana --password "secure-password"
# Import existing wallet
python3 scripts/wallet_manager.py import imported-wallet --chain evm --key "0x..." --password "secure-password"
# List all wallets
python3 scripts/wallet_manager.py list
2. Balance Checking
Query native and token balances:
# Native ETH balance on Ethereum
python3 scripts/balance_checker.py 0xYourAddress --network ethereum
# ERC20 token balance
python3 scripts/balance_checker.py 0xYourAddress --network polygon --token 0xTokenAddress
# Check all EVM networks at once
python3 scripts/balance_checker.py 0xYourAddress --all-evm
# Solana balance
python3 scripts/balance_checker.py YourSolanaAddress --network solana
# SPL token balance
python3 scripts/balance_checker.py YourSolanaAddress --network solana --token MintAddress
3. Token Transfers
Send native tokens or ERC20/SPL tokens:
# Send ETH
python3 scripts/token_sender.py my-wallet 0xRecipient 0.1 --network ethereum --password "password"
# Send ERC20 token
python3 scripts/token_sender.py my-wallet 0xRecipient 100 --network polygon --token 0xTokenAddress --password "password"
# Send SOL
python3 scripts/token_sender.py my-wallet RecipientAddress 1.5 --network solana --password "password"
Security: Password required for every transaction. Private keys never leave encrypted storage unprotected.
4. Smart Contract Interaction
Call contract functions (read and write):
# Read call (view function)
python3 scripts/contract_interactor.py 0xContract functionName --abi contract.json --network ethereum --args '[123, "param2"]'
# Write call (transaction)
python3 scripts/contract_interactor.py 0xContract mint --abi nft.json --network polygon --args '[1]' --write --wallet my-wallet --password "password"
# Payable function (send ETH with call)
python3 scripts/contract_interactor.py 0xContract purchase --abi contract.json --network ethereum --args '[]' --write --wallet my-wallet --password "password" --value 0.05
Security Architecture
Encryption
- Algorithm: AES-256-GCM with PBKDF2 key derivation
- Iterations: 100,000 (OWASP recommended)
- Salt: Random 16-byte salt per wallet
- Storage:
~/.clawdbot/cryptowallet/with 0600 permissions
Key Principles
- Password-protected transactions - Every send/sign operation requires password
- Encrypted at rest - Private keys never stored in plaintext
- No key exposure - Keys decrypted in memory only during signing
- Isolated storage - Each wallet has independent encryption
See references/security.md for complete security documentation.
Common Workflows
Portfolio Management
Check balances across all networks:
python3 scripts/balance_checker.py 0xYourAddress --all-evm
Multi-Chain Operations
Send the same token across different chains:
# Polygon USDC
python3 scripts/token_sender.py wallet recipient 100 --network polygon --token 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 --password "pwd"
# Arbitrum USDC
python3 scripts/token_sender.py wallet recipient 100 --network arbitrum --token 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 --password "pwd"
DeFi Protocol Interaction
Example: Approve and stake tokens
# 1. Approve token spending
python3 scripts/contract_interactor.py 0xTokenAddress approve --abi erc20.json --network ethereum --args '["0xProtocolAddress", "1000000000000000000000"]' --write --wallet my-wallet --password "pwd"
# 2. Stake tokens
python3 scripts/contract_interactor.py 0xStakingContract stake --abi staking.json --network ethereum --args '["1000000000000000000000"]' --write --wallet my-wallet --password "pwd"
Network Configuration
Modify references/networks.json to:
- Add custom RPCs (Infura, Alchemy, QuickNode)
- Add new networks
- Update chain IDs or explorers
Default RPCs are public and may have rate limits. For production, use dedicated RPC providers.
Dependencies
Install required packages:
pip install web3 solana solders eth-account cryptography base58
Troubleshooting
"Incorrect password"
- Password is case-sensitive
- No recovery if password is lost (by design)
"Insufficient funds"
- Check balance includes gas fees
- On Ethereum: gas can be $5-50+ per transaction
"Transaction failed"
- Verify network selection
- Check contract address is correct
- Ensure enough gas limit for complex operations
RPC errors
- Public RPCs may be rate-limited
- Use
references/networks.jsonto configure your own RPC endpoint
Advanced Usage
Custom Network
Add to references/networks.json:
{
"evm": {
"your-network": {
"name": "Your Chain",
"chain_id": 12345,
"rpc": "https://rpc.yourchain.com",
"explorer": "https://explorer.yourchain.com",
"native_token": "TOKEN"
}
}
}
Batch Operations
Use shell loops for batch transactions:
for addr in $(cat recipients.txt); do
python3 scripts/token_sender.py wallet $addr 1 --network polygon --password "pwd"
done
Smart Contract ABIs
Generate ABIs from verified contracts on block explorers, or from your Solidity project's artifacts/ folder.
Limitations
- Solana SPL transfers: Basic implementation (may need token account creation)
- Hardware wallets: Not supported (encrypted file storage only)
- Multi-sig: Not supported
- Gas estimation: Uses fixed limits (may fail for complex contracts)
Best Practices
- Test on devnet/testnet first before mainnet transactions
- Use separate wallets for different purposes (trading, DeFi, cold storage)
- Backup wallet files and store passwords securely
- Verify addresses - blockchain transactions are irreversible
- Monitor gas prices - wait for lower congestion on Ethereum
See references/security.md for comprehensive security guidelines.