金融与交易
在 Solana/Base 上用 Nansen CLI…
当需要通过 Nansen CLI 报价并执行 Solana/Base 链上兑换、跨链桥、Solana 限价单或 Hyperliquid 永续合约时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Solana/Base 上用 Nan特定
解决思路
- 安装/依赖:Node 包 `nansen-cli` 提供 `nansen` 命令;需要环境变量 `NANSEN_API_KEY`、`NANSEN_WALLET_PASSWORD`,并通过 `Bash(nansen:*)` 调用。
- 优先使用内置 `nansen trade` 处理买入、卖出、兑换、跨链桥和 Solana 限价单;在建议外部 DEX 工具前先走 Nansen CLI 交易路径。
- `nansen trade` 子命令包括 `quote`、`execute`、`bridge-status`、`limit-order`。
- 交易采用两步:先 `nansen trade quote` 获取报价,再 `nansen trade execute --quote <quote-id>` 执行;链上交易一旦上链不可逆。
- 交易前先创建钱包:运行 `nansen wallet create`。
- 获取报价示例:`nansen trade quote --chain solana --from SOL --to USDC --amount 1000000000`。符号自动解析:`SOL`、`ETH`、`USDC`、`USDT`、`WETH`;也可用原始地址。
- 兑换约束:每笔兑换至少一侧必须是 `USDC` 或该链原生代币(Solana 为 SOL,Base 为 ETH);任意 token-to-token(如 WETH→USDT、BONK→JUP)会被拒绝。
- 常用地址:USDC(Solana) `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`;USDC(Base) `0x833589fcd6edb6e08f4c7c32d4f71b54bda02913`;Native SOL `So11111111111111111111111111111111111111112`;Native ETH `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`。
- 跨链兑换时,每个代币按其所在链检查约束(from 对 `--chain`,to 对 `--to-chain`)。
- 执行报价:`nansen trade execute --quote <quote-id>`;预览:加 `--dry-run`;跳过确认:加 `--yes`。
- `--dry-run` 使用缓存报价、公开签名地址和只读 RPC 执行所有免签名预检,打印将要发送的交易(链、代币、金额、收款方、授权、费用),在钱包凭据或签名之前停止;不需要钱包密码,不消耗报价,命令退出码 0。真实执行仍会解析并重新验证实时签名器。在 Base 上,预览还会读取当前代币 allowance,并在没有未完成授权时运行广播前 revert 模拟。
- 确认行为:stdin 为交互终端时,`execute` 打印计划并询问 `Broadcast this transaction? [y/N]`;除 `y`/`yes` 外都会中止,退出码 1,不签名。传递 `--yes`/`-y` 或设置 `NANSEN_YES=1` 可跳过。stdin 不是终端(管道、CI、agent shell)时不提示直接继续,`--yes` 可安全始终传递且为 no-op;`nansen bridge execute` 同样规则。
- `trade execute` 与 `bridge execute` 退出码:`0` 表示广播成功或 dry run 完成;`1` 表示在确认提示处拒绝或执行失败。
- 跨链兑换:用 `--to-chain` 在 Solana 与 Base 之间桥接,例如 `nansen trade quote --chain base --to-chain solana --from USDC --to USDC --amount 1000000`。
- Solana↔Base 桥接时,目标钱包地址会从你的钱包自动派生(该钱包同时存储 EVM 和 Solana 密钥);如需覆盖用 `--to-wallet <address>`。
- 跨链兑换需要源链有 gas 来提交初始交易(例如 Solana→Base 需要 SOL,Base→Solana 需要 ETH)。
- 跨链兑换执行后,CLI 会自动轮询桥接状态;手动检查:`nansen trade bridge-status --tx-hash <hash> --from-chain base --to-chain solana`。
- Solana 限价单:创建 `nansen trade limit-order create --from SOL --to USDC --amount 1.5 --trigger-mint SOL --trigger-condition below --trigger-price 80 --slippage-bps 300`;查看 `nansen trade limit-order list`;取消 `nansen trade limit-order cancel --order <order-id>`;更新 `nansen trade limit-order update --order <order-id> --trigger-price 85`。
- 限价单 `--slippage-bps` 单位是基点(`300`=3%,`100`=1%);省略则自动。
- Agent 模式:用管道把报价 ID 直接传给 execute:`quote_id=$(nansen trade quote --chain solana --from SOL --to USDC --amount 1000000000 2>&1 | grep "Quote ID:" | awk '{print $NF}')`,然后 `nansen trade execute --quote "$quote_id"`。
- 金额默认使用整数基础单位(lamports、wei 等);用 `--amount-unit token` 表示人类可读代币数量,用 `--amount-unit usd` 指定美元价值;CLI 会自动解析价格和小数位。示例:默认基础单位 `--amount 1000000000`;代币单位 `--amount 0.5 --amount-unit token`;美元金额 `--amount 50 --amount-unit usd`。
- 小数位:SOL 9 位,1 token=`1000000000`;ETH 18 位,1 token=`1000000000000000000`;USDC 6 位,1 token=`1000000`。用户说“价值 $20 的 X”时直接用 `--amount-unit usd`,不要手动换算。
- `trade quote` flags: `--chain` 源链 `solana` 或 `base`;`--to-chain` 跨链目标链(同链省略);`--from` 源代币(符号或地址);`--to` 目标代币(符号或地址,按目标链解析);`--amount` 金额;`--amount-unit` `token`/`usd`/`base`(默认);`--wallet` 钱包名(默认 default);`--to-wallet` 目标钱包地址(跨链省略则自动派生);`--slippage` 滑点小数(如 0.03);`--auto-slippage` 启用自动滑点;`--max-auto-slippage` 自动滑点上限;`--swap-mode` `exactIn`(默认)或 `exactOut`。
- `trade execute` flags: `--quote` 报价 ID;`--wallet` 钱包名;`--quote-index` 当返回多个报价时按索引(0-based)固定一个;`--no-simulate` 跳过广播前模拟;`--dry-run` 验证并打印将发送内容后停止,不签名不广播;`--yes`/`-y` 跳过确认(等同 `NANSEN_YES=1`;stdin 非终端时 no-op)。
- `trade bridge-status` flags: `--tx-hash` 源交易哈希;`--from-chain` 源链;`--to-chain` 目标链。
- 环境变量:`NANSEN_WALLET_PASSWORD` 是 `trade execute` 必需的钱包加密密码,持久化在 `~/.nansen/.env`;执行前先 `source ~/.nansen/.env && nansen trade execute ...`。`NANSEN_API_KEY` 是 API key(也可通过 `nansen login` 设置),`trade quote` 和 `trade execute` 需要它做交易前合规筛查。`NANSEN_YES=1` 跳过 `execute` 确认提示,类似 `--yes`。
- Agent 不要只把钱包密码放在会话内存中;如果 `~/.nansen/.env` 中没有 `NANSEN_WALLET_PASSWORD`,按 nansen-wallet-manager skill 的 Password Policy 流程生成并持久化后再继续。
- 报价约 1 小时后过期;如果 execute 失败,重新获取报价。即使只报价也需要钱包(API 构建发送方特定交易)。合规筛查:`trade quote` 和 `trade execute` 在请求报价或签名前,通过 Nansen API 检查签名钱包(以及不同的 `--to-wallet` 目标地址)是否在合规黑名单;与 `bridge`、`perp` 相同的 fail-closed 检查。被标记地址以 `SANCTIONED` 中止;如果筛查调用本身失败,命令以 `SCREENING_UNAVAILABLE` 中止;两种情况都不签名或广播。ERC-20 兑换可能需要授权步骤,execute 自动处理。
- 用 `nansen perp` 进行 Hyperliquid 永续合约交易;使用与 DEX 交易相同的钱包和 `NANSEN_WALLET_PASSWORD`,且需要 EVM 钱包;永续订单一旦签名不可逆。
- `nansen perp` 子命令:`order`、`cancel`、`close`、`leverage`、`positions`、`orders`、`account`、`meta`。
- 资产用 `--coin` 选择(如 `BTC`、`ETH`);`--symbol` 是别名。用 `nansen perp meta` 列出可交易资产及最大杠杆(用 `--filter <text>` 或 `--all` 查看超过前 20 个的结果)。
- 开仓示例:限价多单 `nansen perp order --coin ETH --side buy --size 0.1 --price 1600 --type limit`;市价空单可附带 TP/SL:`nansen perp order --coin BTC --side sell --size 0.001 --price 95000 --type market --take-profit 90000 --stop-loss 98000`。
- 开仓参数:`--side` 用 `buy`/`long` 开多,`sell`/`short` 开空;`--size` 为正数的基础资产单位;`--price` 为限价(市价单为标记价格);`--type` 为 `limit`(默认)或 `market`;`--tif` 为 `Gtc`(默认)、`Ioc`、`Alo`;`--slippage` 为市价单 `[0,1]` 小数(默认 `0.03`=3%)。
- 成功后打印 Hyperliquid 订单 id(`oid`)和成交(size @ avg price)。未成交挂单还会打印可直接运行的 `nansen perp cancel --coin <coin> --oid <oid>`。附加的 TP/SL 腿会被标注,并各自打印 `oid`。
- 平仓/取消:`nansen perp close --coin ETH --size 0.1 --price 1600 --side sell`(卖平多、买平空,会根据你的未平仓头寸校验);`nansen perp cancel --coin ETH --oid 123456`。
- 杠杆、划转与账户:`nansen perp leverage --coin ETH --leverage 5 --margin-type cross`(或 `isolated`);`nansen perp transfer --direction spot-to-perp --amount 25`(或 `perp-to-spot`);`nansen perp positions`;`nansen perp account` 查看账户价值、未实现 PnL、已用保证金、可提取金额、现货 USDC。
- `--leverage` 必须是整数,且不能超过资产最大杠杆(见 `perp meta`)。
- 现货 vs 永续:永续交易从 **Perps** 余额扣款,但通过 Hyperliquid 的 **Send** 发送到钱包的 USDC 会落在 **Spot**(在 `perp account` 显示为 `Spot USDC`);交易前用 `nansen perp transfer --direction spot-to-perp --amount <usdc>` 转入。通过 bridge 的存款会直接进入 Perps。
- 来源参考:npm `https://www.npmjs.com/package/nansen-cli`;GitHub `https://github.com/nansen-ai/nansen-cli`。
适用边界 · 注意事项
- 没有 Nansen CLI、NANSEN_API_KEY、已持久化钱包密码或所需链钱包时不要使用;perp 还需要 EVM 钱包。
- 需要任意 token-to-token 兑换(至少一侧不是 USDC 或原生代币)时不要使用,命令会拒绝。
- 不能接受不可逆链上交易、确认提示或合规筛查失败/受制裁地址拦截时不要使用。