Wallet
Auth Setup
CODEBLOCK0
Wallet Providers
The CLI supports two wallet providers:
| Local (default) | Privy (server-side) |
|---|
| Key storage | Encrypted on disk | Server-side via Privy API |
| Password required |
Yes (min 12 chars) | No |
| Export private keys | Yes (
wallet export) | No — keys are managed by Privy |
| Best for | Human users, manual trading | Agents, automated workflows |
| Flag |
--provider local (default) |
--provider privy |
| Required env vars |
NANSEN_WALLET_PASSWORD |
PRIVY_APP_ID +
PRIVY_APP_SECRET |
Privy Wallet Creation
Privy wallets are server-side wallets managed by the Privy API. No password is needed — keys never touch the local machine.
Prerequisites
The following environment variables must be set:
| Var | Purpose |
|---|
| INLINECODE6 | Privy application ID |
| INLINECODE7 |
Privy application secret |
Create a Privy wallet
CODEBLOCK1
Critical rules for agents (Privy)
- - No password needed — Privy manages keys server-side
- Cannot export keys —
wallet export only works for local wallets - All other operations (
list, show, send, delete, default) work identically for both providers
Local Wallet Creation (Two-Step Agent Flow)
This section covers local wallet creation. For Privy server-side wallets, see the Privy Wallet Creation section above — no password is needed.
Wallet creation requires a password from the human user. The agent must NOT generate or store the password itself.
Step 1 (Agent → Human): Ask the user to provide a wallet password (minimum 12 characters).
Step 2 (Agent executes): Run the create command with the password the user gave you.
CODEBLOCK2
After creation, the CLI automatically saves the password:
- - OS keychain (macOS Keychain, Linux secret-tool, Windows Credential Manager) — secure, preferred
- ~/.nansen/wallets/.credentials file — insecure fallback when no keychain is available (e.g. containers, CI)
All future wallet operations retrieve the password automatically — no env var or human input needed.
If the .credentials file fallback is used, the CLI prints a warning on every operation. To migrate to secure storage later, run nansen wallet secure.
Password resolution order (automatic)
- 1.
NANSEN_WALLET_PASSWORD env var (if set) - OS keychain (saved automatically on wallet create)
- INLINECODE17 file (insecure fallback, with warning)
- Structured JSON error with instructions (if none available)
Critical rules for agents
- - NEVER generate a password yourself — always ask the human user
- NEVER store the password in files, memory, logs, or conversation history
- NEVER use
--human flag — that enables interactive prompts which agents cannot handle - After wallet creation, you do NOT need the password for future operations — the keychain handles it
- If you get a
PASSWORD_REQUIRED error, ask the user to provide their password again
Create
Privy (server-side, no password)
CODEBLOCK3
Requires PRIVY_APP_ID + PRIVY_APP_SECRET env vars. No password needed.
Local (encrypted on disk, password required)
CODEBLOCK4
List & Show
CODEBLOCK5
Send
CODEBLOCK6
Export & Delete
CODEBLOCK7
Forget Password
CODEBLOCK8
Migrate to Secure Storage
CODEBLOCK9
For detailed migration steps (from ~/.nansen/.env, .credentials, or env-var-only setups), see the nansen-wallet-migration skill.
Flags
| Flag | Purpose |
|---|
| INLINECODE24 | Recipient address |
| INLINECODE25 |
Amount to send |
|
--chain |
evm or
solana |
|
--max | Send entire balance |
|
--dry-run | Preview without broadcasting |
|
--provider | Wallet provider:
local (default, encrypted on disk) or
privy (server-side via Privy API) |
|
--human | Enable interactive prompts (human terminal use only — agents must NOT use this) |
|
--unsafe-no-password | Skip encryption (keys stored in plaintext — NOT recommended) |
Environment Variables
| Var | Purpose |
|---|
| INLINECODE36 | Wallet encryption password — only needed for initial wallet create. After that, the OS keychain handles it. |
| INLINECODE38 |
API key (also set via
nansen login --api-key <key>) |
|
PRIVY_APP_ID | Privy application ID (required for
--provider privy) |
|
PRIVY_APP_SECRET | Privy application secret (required for
--provider privy) |
|
NANSEN_WALLET_PROVIDER | Default provider for wallet create —
local or
privy |
|
NANSEN_EVM_RPC | Custom EVM RPC endpoint |
|
NANSEN_SOLANA_RPC | Custom Solana RPC endpoint |
钱包
认证设置
bash
保存 API 密钥(非交互式)
nansen login --api-key <密钥>
或通过环境变量:
NANSEN
APIKEY=<密钥> nansen login
验证
nansen research profiler labels --address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --chain ethereum
钱包提供商
CLI 支持两种钱包提供商:
| 本地(默认) | Privy(服务端) |
|---|
| 密钥存储 | 加密存储在磁盘上 | 通过 Privy API 存储在服务端 |
| 是否需要密码 |
是(至少12个字符) | 否 |
| 导出私钥 | 是(wallet export) | 否 — 密钥由 Privy 管理 |
| 适用场景 | 人类用户、手动交易 | 代理、自动化工作流 |
| 标志 | --provider local(默认) | --provider privy |
| 必需的环境变量 | NANSEN
WALLETPASSWORD | PRIVY
APPID + PRIVY
APPSECRET |
Privy 钱包创建
Privy 钱包是由 Privy API 管理的服务端钱包。无需密码 — 密钥永远不会接触本地机器。
前提条件
必须设置以下环境变量:
| 变量 | 用途 |
|---|
| PRIVYAPPID | Privy 应用程序 ID |
| PRIVYAPPSECRET |
Privy 应用程序密钥 |
创建 Privy 钱包
bash
nansen wallet create --provider privy
或使用自定义名称:
nansen wallet create --name agent-wallet --provider privy
代理的关键规则(Privy)
- - 无需密码 — Privy 在服务端管理密钥
- 无法导出密钥 — wallet export 仅适用于本地钱包
- 所有其他操作(list、show、send、delete、default)对两种提供商均相同
本地钱包创建(两步代理流程)
本节涵盖本地钱包创建。有关 Privy 服务端钱包,请参阅上面的 Privy 钱包创建 部分 — 无需密码。
钱包创建需要人类用户提供密码。代理不得自行生成或存储密码。
步骤 1(代理 → 人类): 要求用户提供钱包密码(至少12个字符)。
步骤 2(代理执行): 使用用户提供的密码运行创建命令。
bash
NANSENWALLETPASSWORD=<用户提供的密码> nansen wallet create
创建后,CLI 会自动保存密码:
- - 操作系统密钥链(macOS Keychain、Linux secret-tool、Windows Credential Manager)— 安全,推荐
- ~/.nansen/wallets/.credentials 文件 — 当密钥链不可用时的非安全后备方案(例如容器、CI 环境)
所有未来的钱包操作会自动获取密码 — 无需环境变量或人工输入。
如果使用了 .credentials 文件后备方案,CLI 会在每次操作时打印警告。要稍后迁移到安全存储,请运行 nansen wallet secure。
密码解析顺序(自动)
- 1. NANSENWALLETPASSWORD 环境变量(如果已设置)
- 操作系统密钥链(在钱包创建时自动保存)
- ~/.nansen/wallets/.credentials 文件(非安全后备方案,带警告)
- 结构化 JSON 错误及说明(如果以上均不可用)
代理的关键规则
- - 永远不要自行生成密码 — 始终询问人类用户
- 永远不要存储密码 在文件、内存、日志或对话历史中
- 永远不要使用 --human 标志 — 这会启用代理无法处理的交互式提示
- 钱包创建后,后续操作无需密码 — 密钥链会自动处理
- 如果遇到 PASSWORD_REQUIRED 错误,请要求用户再次提供密码
创建
Privy(服务端,无需密码)
bash
nansen wallet create --provider privy
或使用自定义名称:
nansen wallet create --name trading --provider privy
需要 PRIVYAPPID + PRIVYAPPSECRET 环境变量。无需密码。
本地(加密存储在磁盘上,需要密码)
bash
先询问用户密码,然后:
NANSEN
WALLETPASSWORD=<用户提供的密码> nansen wallet create
或使用自定义名称:
NANSEN
WALLETPASSWORD=<用户提供的密码> nansen wallet create --name trading
列出与查看
bash
nansen wallet list
nansen wallet show <名称>
nansen wallet default <名称>
发送
bash
发送原生代币(SOL、ETH)— 密码从密钥链自动解析
nansen wallet send --to <地址> --amount 1.5 --chain solana
发送全部余额
nansen wallet send --to <地址> --chain evm --max
试运行(预览,不广播)
nansen wallet send --to <地址> --amount 1.0 --chain evm --dry-run
导出与删除
bash
密码从密钥链自动解析
nansen wallet export <名称>
nansen wallet delete <名称>
忘记密码
bash
从所有存储中删除已保存的密码(密钥链 + .credentials 文件)
nansen wallet forget-password
迁移到安全存储
bash
nansen wallet secure
有关详细的迁移步骤(从 ~/.nansen/.env、.credentials 或仅环境变量设置),请参阅 nansen-wallet-migration 技能。
标志
发送数量 |
| --chain | evm 或 solana |
| --max | 发送全部余额 |
| --dry-run | 预览而不广播 |
| --provider | 钱包提供商:local(默认,加密存储在磁盘上)或 privy(通过 Privy API 的服务端) |
| --human | 启用交互式提示(仅限人类终端使用 — 代理不得使用此选项) |
| --unsafe-no-password | 跳过加密(密钥以明文存储 — 不推荐) |
环境变量
| 变量 | 用途 |
|---|
| NANSENWALLETPASSWORD | 钱包加密密码 — 仅在初始 wallet create 时需要。之后操作系统密钥链会自动处理。 |
| NANSENAPIKEY |
API 密钥(也可通过 nansen login --api-key <密钥> 设置) |
| PRIVY
APPID | Privy 应用程序 ID(--provider privy 时需要) |
| PRIVY
APPSECRET | Privy 应用程序密钥(--provider privy 时需要) |
| NANSEN
WALLETPROVIDER | 钱包创建的默认提供商 — local 或 privy |
| NANSEN
EVMRPC | 自定义 EVM RPC 端点 |
| NANSEN
SOLANARPC | 自定义 Solana RPC 端点 |