one-wallet CLI Skill
Overview
This skill teaches the agent how to use the one-wallet CLI to manage Ethereum/EVM wallets and perform on-chain actions from the terminal or scripts.
Core capabilities:
- - Manage multiple wallets (create, import, list, set default, remove).
- Query balances for wallets and arbitrary addresses.
- Send native ETH and call or send contract methods (including ERC20/NFT).
- Sign messages and EIP-712 typed data, and verify signatures.
- Configure RPC providers and chain presets.
- Produce machine-readable JSON output suitable for scripts and AI tools.
Always assume Node.js ≥ 18 is available and one-wallet is installed globally, unless the repository indicates another setup.
When to use this skill
Use this skill when:
- - The user mentions
one-wallet, wallet CLI, agent wallet, or this repository. - The user wants to create or import wallets, check balances, or send ETH/tokens from the terminal.
- The user wants to call smart contracts, estimate gas, or inspect transaction status.
- The user needs message or typed-data signing/verification from a CLI.
- The user asks for JSON output for downstream automation or AI tools.
If the task is Ethereum/EVM related and can be done via CLI, prefer one-wallet over writing ad-hoc scripts.
Installation
Global install (recommended)
Use one of:
CODEBLOCK0
Verify:
CODEBLOCK1
From this repository
When working inside this project:
CODEBLOCK2
Prefer the global binary (one-wallet) when possible; use ./bin/run.js only when explicitly requested or when testing local changes.
Quick start workflow
- 1. Set provider (RPC)
- Preset mainnet:
one-wallet provider set mainnet
- Custom RPC:
CODEBLOCK4
- 2. Create a wallet and set as default
CODEBLOCK5
- 3. Check balance and send ETH
CODEBLOCK6
Use --json on commands when the user wants machine-readable output for further processing.
Wallet management
Create or import wallets
one-wallet wallet create <name>
- - Create and set as default:
one-wallet wallet create <name> --set-default
- - Create with password-protected storage:
one-wallet wallet create <name> --password --set-default
- - Import from private key:
one-wallet wallet import <name> --private-key 0xYourPrivateKey
CODEBLOCK11
List and select wallets
one-wallet wallet list
one-wallet wallet list --json
- - Show current default wallet:
one-wallet wallet set default
CODEBLOCK15
Wallet storage path
Show where wallets and config are stored:
CODEBLOCK16
Balances
- - Balance of default wallet:
one-wallet wallet balance
- - Balance of a named wallet:
one-wallet wallet balance <name>
- - Balance of any address:
one-wallet wallet balance-of 0xAddress
- - Balance as JSON (for scripts/AI tools):
CODEBLOCK20
Contract calls and sends
Read-only contract calls
Cast-style without ABI (single quotes to protect parentheses):
CODEBLOCK21
With preset ABI:
CODEBLOCK22
Sending ETH and tokens
Native ETH:
CODEBLOCK23
Skip confirmation for scripts:
CODEBLOCK24
Estimate gas:
CODEBLOCK25
ERC20 transfer and approve:
CODEBLOCK26
NFT transfer:
CODEBLOCK27
JSON output (tx hash and receipt):
CODEBLOCK28
Transaction status
Inspect a transaction by hash:
CODEBLOCK29
Signing and verification
EIP-191 message signing
Sign with default wallet:
CODEBLOCK30
JSON output (message, signature, address):
CODEBLOCK31
EIP-712 typed data
From file:
CODEBLOCK32
From inline JSON:
CODEBLOCK33
Verify signature
Recover signer:
CODEBLOCK34
Verify against expected address:
CODEBLOCK35
Passwords, encryption, and sessions
Password management
- - Encrypt existing wallet:
one-wallet wallet set-password <name>
one-wallet wallet remove-password <name>
- - Lock (clear session cache):
CODEBLOCK38
Environment variables
Key variables:
| Variable | Description |
|---|
| INLINECODE7 | Override config directory (default: ~/.one-wallet). |
| INLINECODE9 |
Override RPC URL. |
|
ONE_WALLET_CHAIN_ID | Override chain ID (for custom RPC). |
|
ONE_WALLET_KEY_<NAME> | Private key for wallet
<NAME>; bypasses stored key. |
|
ONE_WALLET_PASSWORD_<NAME> | Password for encrypted wallet
<NAME>; avoids prompt. |
|
ONE_WALLET_SESSION_TTL | Session cache TTL in seconds (default:
300). |
Use environment variables in CI or non-interactive scripts to avoid prompts and to keep secrets out of the repository.
Provider configuration
Inspect and set provider:
CODEBLOCK39
Prefer presets for common networks; use custom URLs when the user provides a specific RPC endpoint.
Scripting and JSON mode
When the user wants to integrate one-wallet with other tools or automation:
- - Always add
--json when available to get structured output. - Capture stdout and parse as JSON in the surrounding script or tool.
- Combine with password environment variables to avoid interactive prompts.
Examples:
CODEBLOCK40
Safety and best practices
- - Never hard-code real private keys or passwords in source-controlled files.
- Prefer
ONE_WALLET_KEY_<NAME> and ONE_WALLET_PASSWORD_<NAME> environment variables for secrets. - Use
--json for automation; omit it for quick human inspection. - Use
-y only in scripts or when the user explicitly wants to skip confirmations. - When in doubt about the chain or RPC, call
one-wallet provider info before sending transactions.
Reference
For deeper details or updates, consult the project's README.md in this repository, which documents features, commands, and examples for one-wallet.
one-wallet CLI 技能
概述
本技能教导代理如何使用 one-wallet CLI 从终端或脚本管理以太坊/EVM 钱包并执行链上操作。
核心能力:
- - 管理多个钱包(创建、导入、列出、设置默认、删除)。
- 查询钱包和任意地址的余额。
- 发送原生 ETH 以及调用或发送合约方法(包括 ERC20/NFT)。
- 签名消息和 EIP-712 类型化数据,并验证签名。
- 配置 RPC 提供者和链预设。
- 生成适合脚本和 AI 工具的机器可读 JSON 输出。
始终假设已安装 Node.js ≥ 18 且 one-wallet 已全局安装,除非仓库另有说明。
何时使用本技能
在以下情况下使用本技能:
- - 用户提到 one-wallet、钱包 CLI、代理钱包 或此仓库。
- 用户想要从终端 创建或导入钱包、检查余额 或 发送 ETH/代币。
- 用户想要 调用智能合约、估算 gas 或 检查交易状态。
- 用户需要从 CLI 进行 消息或类型化数据的签名/验证。
- 用户要求 JSON 输出 用于下游自动化或 AI 工具。
如果任务与以太坊/EVM 相关且可通过 CLI 完成,优先使用 one-wallet 而非编写临时脚本。
安装
全局安装(推荐)
使用以下任一方式:
bash
npm install -g one-wallet
或
yarn global add one-wallet
或
pnpm add -g one-wallet
验证:
bash
one-wallet --help
从此仓库安装
在此项目内工作时:
bash
git clone https://github.com/viyozc/one-wallet.git
cd one-wallet
yarn install
yarn build
./bin/run.js --help
尽可能优先使用全局二进制文件(one-wallet);仅在明确要求或测试本地更改时使用 ./bin/run.js。
快速入门工作流
- 1. 设置提供者(RPC)
- 预设主网:
bash
one-wallet provider set mainnet
- 自定义 RPC:
bash
one-wallet provider set https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
- 2. 创建钱包并设置为默认
bash
one-wallet wallet create my-agent --set-default
- 3. 检查余额并发送 ETH
bash
one-wallet wallet balance
one-wallet wallet send 0xRecipientAddress 0.01
当用户需要机器可读输出以进行进一步处理时,在命令上使用 --json。
钱包管理
创建或导入钱包
bash
one-wallet wallet create
bash
one-wallet wallet create --set-default
bash
one-wallet wallet create --password --set-default
bash
one-wallet wallet import --private-key 0xYourPrivateKey
bash
one-wallet wallet import --private-key 0xYourPrivateKey --password --set-default
列出和选择钱包
bash
one-wallet wallet list
bash
one-wallet wallet list --json
bash
one-wallet wallet set default
bash
one-wallet wallet set default
钱包存储路径
显示钱包和配置的存储位置:
bash
one-wallet wallet path
余额
bash
one-wallet wallet balance
bash
one-wallet wallet balance
bash
one-wallet wallet balance-of 0xAddress
bash
one-wallet wallet balance-of 0xAddress --json
合约调用和发送
只读合约调用
Cast 风格无需 ABI(使用单引号保护括号):
bash
one-wallet wallet call 0xToken decimals()(uint256)
one-wallet wallet call 0xToken balanceOf(address)(uint256) 0xAccountAddress
one-wallet wallet call 0xToken totalSupply()(uint256) --json
使用预设 ABI:
bash
one-wallet wallet call 0xToken balanceOf 0xAccountAddress --abi erc20
one-wallet wallet call 0xNFTContract ownerOf 1 --abi nft
one-wallet wallet call 0xContract getValue --abi-file ./abi.json
发送 ETH 和代币
原生 ETH:
bash
one-wallet wallet send 0xRecipientAddress 0.1
脚本跳过确认:
bash
one-wallet wallet send 0xRecipientAddress 0.1 -y
估算 gas:
bash
one-wallet wallet estimate 0xRecipientAddress 0.1
ERC20 转账和授权:
bash
one-wallet wallet send 0xToken --method transfer --args 0xToAddress,1000000 --abi erc20 -y
one-wallet wallet send 0xToken --method approve --args 0xSpenderAddress,1000000 --abi erc20 -y
NFT 转账:
bash
one-wallet wallet send 0xNFT --method safeTransferFrom --args 0xFrom,0xTo,1 --abi nft -y
JSON 输出(交易哈希和收据):
bash
one-wallet wallet send 0xRecipient 0.01 --wallet --json
交易状态
通过哈希检查交易:
bash
one-wallet wallet tx 0xTransactionHash
one-wallet wallet tx 0xTransactionHash --json
签名和验证
EIP-191 消息签名
使用默认钱包签名:
bash
one-wallet wallet sign-message --message Hello, agent
JSON 输出(消息、签名、地址):
bash
one-wallet wallet sign-message --message Hello, agent --json
EIP-712 类型化数据
从文件:
bash
one-wallet wallet sign-typed-data --file ./typed-data.json
从内联 JSON:
bash
one-wallet wallet sign-typed-data --payload {types:{...},primaryType:Mail,domain:{...},message:{...}}
验证签名
恢复签名者:
bash
one-wallet wallet verify-signature Hello, agent 0xSignatureHex
对照预期地址验证:
bash
one-wallet wallet verify-signature Hello, agent 0xSignatureHex --expected 0xExpectedAddress
密码、加密和会话
密码管理
bash
one-wallet wallet set-password
bash
one-wallet wallet remove-password
bash
one-wallet wallet lock
环境变量
关键变量:
| 变量 | 描述 |
|---|
| ONEWALLETHOME | 覆盖配置目录(默认:~/.one-wallet)。 |
| ONEWALLETRPC_URL |
覆盖 RPC URL。 |
| ONEWALLETCHAIN_ID | 覆盖链 ID(用于自定义 RPC)。 |
| ONEWALLETKEY_ | 钱包 的私钥;绕过存储的密钥。 |
| ONEWALLETPASSWORD_ | 加密钱包 的密码;避免提示。 |
| ONEWALLETSESSION_TTL | 会话缓存 TTL(秒)(默认:300)。 |
在 CI 或非交互式脚本中使用环境变量以避免提示,并保持机密信息不在仓库中。
提供者配置
检查和设置提供者:
bash
one-wallet provider info
one-wallet provider list
one-wallet provider set mainnet
one-wallet provider set https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
常见网络优先使用预设;当用户提供特定 RPC 端点时使用自定义 URL。
脚本和 JSON 模式
当用户想要将 one