HomeBrowseUpload
โ† Back to registry
โšก
// Skill profile

๐Ÿ” Base Wallet - Crypto Identity for AI Agents

name: base-wallet

by daaab ยท published 2026-03-22

้‚ฎไปถๅค„็†API้›†ๆˆๅŠ ๅฏ†่ดงๅธ
Total installs
0
Stars
โ˜… 0
Last updated
2026-03
// Install command
$ claw add gh:daaab/daaab-base-wallet
View on GitHub
// Full documentation

---

name: base-wallet

description: "๐Ÿ” Base Wallet - Crypto Identity for AI Agents. Create wallets, sign messages (SIWE), send transactions programmatically. No browser extensions, no human intervention. The foundation for autonomous Web3 agents."

---

# ๐Ÿ” Base Wallet - Crypto Identity for AI Agents

> Every autonomous agent needs a wallet. Create one without human help.

**TL;DR:** Programmatic wallet creation on Base/Ethereum. SIWE auth, balance checks, transactions.

Why Base Wallet?

  • **True autonomy** โ€” Your agent creates and controls its own wallet
  • **No browser needed** โ€” Pure CLI, no extensions or popups
  • **SIWE ready** โ€” Sign-In with Ethereum for Web3 services
  • **Secure by default** โ€” Environment variables, no plaintext keys
  • Create and manage Base chain (Ethereum-compatible) wallets programmatically.

    ---

    โš ๏ธ Security First

    | โœ… DO | โŒ DON'T |

    |-------|----------|

    | Use **environment variables** for private keys | Store private keys in plain text files |

    | Set wallet files to **chmod 600** | Commit wallet files to git |

    | Use `--env` mode (recommended) | Use `console.log(privateKey)` |

    | Back up mnemonics **offline** | Share private keys or mnemonics |

    ---

    Quick Start

    Create a New Wallet (Recommended)

    # Output as environment variable format (safest)
    node scripts/create-wallet.js --env
    
    # Output example:
    # export WALLET_ADDRESS="0x..."
    # export PRIVATE_KEY="0x..."

    Then copy to your shell or `.env` file.

    Create with File Storage (Opt-in)

    # Only if you need file-based storage
    node scripts/create-wallet.js --managed my-agent

    โš ๏ธ This stores private key in `~/.openclaw/wallets/my-agent.json`

    ---

    Usage Examples

    Load Wallet from Environment

    const { ethers } = require('ethers');
    
    // โœ… SECURE: Load from environment variable
    const wallet = new ethers.Wallet(process.env.PRIVATE_KEY);
    console.log('Address:', wallet.address);
    // โŒ NEVER: console.log('Private Key:', wallet.privateKey);

    Load from Mnemonic

    const wallet = ethers.Wallet.fromPhrase(process.env.MNEMONIC);

    Check Balance

    const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
    const balance = await provider.getBalance(wallet.address);
    console.log('Balance:', ethers.formatEther(balance), 'ETH');

    Sign Message (SIWE)

    const message = `example.com wants you to sign in with your Ethereum account:
    ${wallet.address}
    
    Sign in message
    
    URI: https://example.com
    Version: 1
    Chain ID: 8453
    Nonce: ${nonce}
    Issued At: ${new Date().toISOString()}`;
    
    const signature = await wallet.signMessage(message);

    Send Transaction

    const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
    const connectedWallet = wallet.connect(provider);
    
    const tx = await connectedWallet.sendTransaction({
      to: recipientAddress,
      value: ethers.parseEther('0.001')
    });
    
    const receipt = await tx.wait();
    console.log('TX Hash:', tx.hash);

    ---

    Scripts

    | Script | Description |

    |--------|-------------|

    | `create-wallet.js --env` | Create wallet, output as env vars (recommended) |

    | `create-wallet.js --managed [name]` | Create wallet, save to file (opt-in) |

    | `create-wallet.js --json` | Create wallet, output as JSON |

    | `basemail-register.js [name]` | Register for BaseMail email |

    | `check-balance.js [address]` | Check wallet balance |

    ---

    BaseMail Integration

    Register for a @basemail.ai email using your wallet signature.

    # If using environment variable:
    PRIVATE_KEY="0x..." node scripts/basemail-register.js
    
    # If using managed wallet:
    node scripts/basemail-register.js my-agent

    ---

    Network Configuration

    | Network | Chain ID | RPC URL |

    |---------|----------|---------|

    | Base Mainnet | 8453 | https://mainnet.base.org |

    | Base Sepolia | 84532 | https://sepolia.base.org |

    ---

    ๐Ÿ“ Audit Logging

    Operations are logged to `~/.base-wallet/audit.log`.

    ---

    Secure Storage Pattern

    // โœ… Recommended: Use environment variables
    const privateKey = process.env.PRIVATE_KEY;
    if (!privateKey) {
      throw new Error('PRIVATE_KEY environment variable not set');
    }
    const wallet = new ethers.Wallet(privateKey);
    
    // โŒ Avoid: Storing private keys in code or files

    If you must store to file (not recommended):

    const fs = require('fs');
    const path = require('path');
    
    // Store with restricted permissions
    const filepath = path.join(process.env.HOME, '.openclaw', 'wallets', 'wallet.json');
    fs.writeFileSync(filepath, JSON.stringify({ 
      address: wallet.address,
      // Only store if absolutely necessary
      privateKey: wallet.privateKey
    }), { mode: 0o600 }); // Owner read/write only

    ---

    .gitignore

    Add to your project's `.gitignore`:

    # Wallet files - NEVER commit!
    .openclaw/
    *.wallet.json
    *.mnemonic
    private-key*

    ---

    Dependencies

    npm install ethers

    ---

    Changelog

    v1.1.0 (2026-02-08)

  • ๐Ÿ” Security: Changed create-wallet.js to opt-in file storage
  • โœจ Added --env mode (recommended)
  • ๐Ÿ“ Added audit logging
  • โš ๏ธ Removed console.log(privateKey) from examples
  • ๐Ÿ“„ Enhanced security documentation
  • v1.0.0

  • ๐ŸŽ‰ Initial release
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band