Install
openclaw skills install ai-walllet-payment-systemManage Ethereum wallets with encrypted keys, TOTP 2FA, secure ETH transactions, audit logs, and rate limiting for AI-driven payment processing.
openclaw skills install ai-walllet-payment-systemThis skill enables AI agents to securely manage cryptocurrency wallets and perform blockchain transactions. It provides encrypted key storage, multi-factor authentication, and secure transaction processing for Ethereum-based payments.
Repository: https://github.com/cerbug45/AI-Wallet-Payment-System
Author: cerbug46
Version: 13.0
Language: Python 3.8+
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y python3-dev libsqlcipher-dev build-essential libssl-dev
macOS:
brew install sqlcipher openssl python@3.11
Windows:
# Install Visual Studio Build Tools 2019+
# Download from: https://visualstudio.microsoft.com/downloads/
# Select "Desktop development with C++" workload
git clone https://github.com/cerbug45/AI-Wallet-Payment-System.git
cd AI-Wallet-Payment-System
# Create isolated virtual environment
python3 -m venv venv
# Activate environment
source venv/bin/activate # Linux/macOS
# OR
venv\Scripts\activate # Windows
# Upgrade pip
pip install --upgrade pip
# Core dependencies
pip install web3==6.0.0
pip install pysqlcipher3==1.2.0
pip install cryptography==41.0.0
pip install argon2-cffi==23.1.0
pip install pyotp==2.9.0
pip install qrcode==7.4.0
pip install pillow==10.0.0
# Optional: Install all at once
pip install -r requirements.txt
Dependency Breakdown:
web3 - Ethereum blockchain interactionpysqlcipher3 - Encrypted SQLite databasecryptography - AES/ChaCha20 encryptionargon2-cffi - Password hashingpyotp - TOTP 2FA implementationqrcode - QR code generation for 2FApillow - Image processing for QR codesCreate .env file in project root:
# Required Configuration
WEB3_PROVIDER_URL=https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID
BACKUP_ENCRYPTION_KEY_FINGERPRINT=<generated-key>
# Optional Configuration
DATABASE_PATH=./secure_wallets.db
LOG_LEVEL=INFO
RATE_LIMIT_ENABLED=true
MAX_REQUESTS_PER_MINUTE=2
MAX_REQUESTS_PER_HOUR=20
SESSION_TIMEOUT_MINUTES=15
Generate Backup Encryption Key:
openssl rand -hex 32
# Copy output to BACKUP_ENCRYPTION_KEY_FINGERPRINT
Get Infura Project ID:
python -c "from ultra_secure_wallet_v13_MAXIMUM_SECURITY import MaximumSecurityPaymentAPI; print('✅ Installation successful')"
from ultra_secure_wallet_v13_MAXIMUM_SECURITY import MaximumSecurityPaymentAPI
import getpass
import os
# Load environment variables
from dotenv import load_dotenv
load_dotenv()
# Get master password securely (NEVER hardcode!)
master_password = getpass.getpass("Enter master password: ")
# Initialize API
api = MaximumSecurityPaymentAPI(master_password)
# Create new wallet
wallet = api.create_wallet(
wallet_id="my_ai_wallet",
metadata={
"agent_name": "PaymentBot",
"purpose": "automated_payments"
}
)
if wallet['success']:
print(f"✅ Wallet created!")
print(f" Address: {wallet['address']}")
print(f" 📱 Setup 2FA with: {wallet['totp_uri']}")
print(f" 🔑 Backup codes: {wallet['backup_codes']}")
# CRITICAL: Save MFA secret and backup codes securely!
# Store in password manager or encrypted vault
# Check balance
balance = api.get_balance("my_ai_wallet")
print(f"💰 Balance: {balance['balance_eth']} ETH")
# Send transaction (requires TOTP from authenticator app)
totp_code = input("Enter 6-digit TOTP code: ")
tx = api.send_transaction(
wallet_id="my_ai_wallet",
to_address="0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
amount_eth=0.001, # Send 0.001 ETH
totp_code=totp_code
)
if tx['success']:
print(f"✅ Transaction sent!")
print(f" TX Hash: {tx['tx_hash']}")
# Always cleanup sensitive data
api.cleanup()
# Run built-in demo
python ultra_secure_wallet_v13_MAXIMUM_SECURITY.py
# Follow prompts:
# 1. Enter strong master password (20+ chars)
# 2. System creates demo wallet
# 3. Displays active security features
# 4. Shows wallet address and 2FA setup
The system enforces strict password policies:
# Minimum requirements
- Length: 20+ characters
- Uppercase letters: 1+
- Lowercase letters: 1+
- Digits: 1+
- Special characters: 1+
- Entropy: 80+ bits
Recommended Password Generation:
# Generate strong password
openssl rand -base64 32
# Or use password manager:
# - 1Password
# - Bitwarden
# - LastPass
# - KeePassXC
After creating a wallet, you'll receive:
Compatible Authenticator Apps:
Edit in code or environment:
# Default limits
MAX_REQUESTS_PER_MINUTE = 2 # Per wallet/IP
MAX_REQUESTS_PER_HOUR = 20 # Per wallet/IP
LOCKOUT_DURATION = 3600 # 1 hour in seconds
All operations are logged to secure_wallet.log:
# View logs
tail -f secure_wallet.log
# Filter for specific wallet
grep "my_ai_wallet" secure_wallet.log
# Check for security events
grep -E "SECURITY|ERROR|FAILED" secure_wallet.log
class PaymentAgent:
def __init__(self, master_password):
self.wallet_api = MaximumSecurityPaymentAPI(master_password)
self.wallet_id = "agent_wallet"
async def process_payment(self, recipient, amount, totp):
"""Process automated payment"""
# Check balance first
balance = self.wallet_api.get_balance(self.wallet_id)
if balance['balance_eth'] < amount:
return {"error": "Insufficient funds"}
# Execute transaction
result = self.wallet_api.send_transaction(
wallet_id=self.wallet_id,
to_address=recipient,
amount_eth=amount,
totp_code=totp
)
return result
def cleanup(self):
self.wallet_api.cleanup()
Development/Testnet:
# Use Sepolia testnet
WEB3_PROVIDER_URL=https://sepolia.infura.io/v3/YOUR_PROJECT_ID
# Or Goerli
WEB3_PROVIDER_URL=https://goerli.infura.io/v3/YOUR_PROJECT_ID
Production/Mainnet:
# Ethereum mainnet
WEB3_PROVIDER_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID
# Enable all security features
RATE_LIMIT_ENABLED=true
REQUIRE_2FA=true
AUDIT_LOGGING=true
Export Wallet Backup:
# Encrypted backup creation
api.export_wallet_backup("my_wallet", backup_password="strong-backup-pwd")
# Creates: wallet_backup_20240215_123456.enc
Restore from Backup:
# Import encrypted backup
api.import_wallet_backup(
"wallet_backup_20240215_123456.enc",
backup_password="strong-backup-pwd"
)
Never test with real ETH on mainnet!
# 1. Get testnet ETH
# Visit: https://sepoliafaucet.com/
# Enter your wallet address
# Receive free test ETH
# 2. Configure testnet
export WEB3_PROVIDER_URL=https://sepolia.infura.io/v3/YOUR_PROJECT_ID
# 3. Run tests
python ultra_secure_wallet_v13_MAXIMUM_SECURITY.py
# Install test dependencies
pip install pytest pytest-cov pytest-mock
# Run tests (if available)
pytest tests/
# With coverage
pytest --cov=ultra_secure_wallet_v13_MAXIMUM_SECURITY tests/
✅ Implemented Security Features:
❌ Not Implemented (Despite Header Claims):
Before using in production:
This system is experimental and educational.
Problem: "ModuleNotFoundError: No module named 'pysqlcipher3'"
# Solution: Install system dependencies first
sudo apt-get install libsqlcipher-dev
pip install pysqlcipher3
Problem: "Web3 provider not connected"
# Solution: Check Infura URL and API key
echo $WEB3_PROVIDER_URL
# Should output: https://mainnet.infura.io/v3/YOUR_PROJECT_ID
Problem: "Argon2 too slow / system freeze"
# Solution: Reduce Argon2 parameters in code
# Edit MaxSecurityConfig:
ARGON2_MEMORY_MB = 128 # Reduce from 512
ARGON2_ITERATIONS = 4 # Reduce from 16
Problem: "Rate limit exceeded"
# Solution: Wait for cooldown or increase limits
# Limits reset after 1 hour
# Or edit rate limit config
Contributions welcome! Areas needing improvement:
MIT License - See LICENSE file for details
Last Updated: February 2024
Skill Version: 1.0
Code Version: 13.0