Skip to main content
Glama

ponscli

CI npm node license

一个非官方的命令行界面,用于 Robinhood Chain(链 ID 4663)上的 Pons 启动板,专为开发者和代理构建。与 Pons 或 Robinhood 无关;它读取公共链上的公共合约。

  • 默认只读。 CLI 运行时永远不会接触私钥。签名是显式选择加入的,因此代理不会意外花费。

  • 处处结构化输出。 每个命令都支持 --json,当 stdout 不是终端时自动启用。错误也是结构化的,并带有稳定的退出码。

  • 协议值从链上读取。 费用、税收窗口和批准的配对代币列表都是实时查询的,绝不硬编码。链上值与合约源码不同。

  • 两级 RPC。 免费端点在 Tier 1 中轮询;付费端点在 Tier 2 中,仅在 Tier 1 完全耗尽后才使用。没有付费凭据时,批量工作会降级,而不是将中断变成账单。

  • 两个二进制文件。 pons 供人使用,pons-mcp 供模型使用,基于同一核心,因此代理获得的价格与 CLI 打印的价格一致。

安装

npm install -g ponscli
pons --version

或者无需安装任何东西。包名是 ponscli,二进制文件是 pons,所以 npx 必须指定要运行哪一个:

npx -p ponscli pons info 0x44D6…20f4

两个 Node 版本很重要,而且它们不是同一个版本。 CLI 运行在 20.11 或更高版本上,CI 每次推送时都会通过在该确切版本上安装打包的 tarball 来检查。构建需要 20.19 或更高版本,因为 linter 的依赖树要求如此。从克隆中,npm install 在安装过程中构建,npm run dev -- <command> 从源码运行。

Related MCP server: pons-hoodly MCP Server

快速开始

读取不需要密钥、钱包或配置。

pons info 0x44D6…20f4             # price, reserves, graduation phase, live snipe tax
pons pairs                        # every quote asset a launch may be priced in
pons watch 0x44D6…20f4            # follow one launch's trades as they happen
pons tx 0x2e8d…f58e               # receipt, decoded logs, and why a failure failed
pons doctor                       # probe every RPC endpoint with real calls

交易需要密钥。除非你明确要求,否则不会签署任何内容。

pons wallet create                          # generate a key into an encrypted keystore
pons buy  0x44D6…20f4 0.05                  # price it, simulate it, print it. Nothing is sent
pons buy  0x44D6…20f4 0.05 --dry-run        # the same, said explicitly
pons buy  0x44D6…20f4 0.05 --confirm        # sign and broadcast
pons sell 0x44D6…20f4 50% --slippage 200

管道输出时一切都是机器可读的,这是默认行为:

pons info 0x44D6…20f4 | jq .graduation

命令

完整参考,包括每个命令涉及的合约:docs/commands.md。

读取,无需密钥

pons info <token>

价格、供应量、毕业进度、费用、实时狙击税

pons pairs

批准的报价资产,按 Pons 客户端 渲染的顺序排列

pons watch <token>

曲线交易、回购和毕业,带游标跟踪

pons tx <hash>

收据、解码日志,以及失败背后的回滚原因

交易,需要 RPC 和密钥

pons buy <token> <amount>

在代币交易的任何场所买入

pons sell <token> <amount|50%|all>

在相同场所卖出

pons graduate <token>

完成已筹集阈值的曲线。任何人都可以调用此命令

启动

pons launch --name X --symbol Y

创建代币。默认 V2

费用

pons claim

托管中持有的 V2 创建者或协议费用

pons collect <token>

锁定器持有的 V1 仓位费用

pons vault show|release <token>

V2 回购金库

钱包和设置

pons wallet create|import|show|export

密钥管理

pons wallet balance|track|untrack

持仓

pons wallet transfer|sweep

花费

pons config list|get|set|unset|path

配置,以及每个值的来源

pons doctor

端点健康,使用 CLI 实际进行的调用探测

两代

Pons 通过两个工厂启动了代币,两者都受支持。你无需指定是哪一个:两个注册表都会被询问,答案会决定之后的一切。

V1

V2

场所

从第一个区块开始的 Uniswap V3 池

债券曲线,毕业到 Uniswap V4

报价资产

WETH

ETH,或 23 个批准的代币之一

开盘保护

钱包和交易上限,持续两个区块

狙击税,99% 在三秒内衰减

流动性

永久锁定;只有其费用可以取出

毕业时注入池中

费用

pons collect

pons claim

新启动

已关闭

开放

V1 的工厂已退役。 launchEnabled() 自 2026-08-12 起为 false,设置它的交易是工厂最后发出的事件;此后没有地址被列入白名单,因此 pons launch --generation v1 在构建任何内容之前拒绝。其代币是另一回事。数千个仍持有流动性,一个四十池样本在不到六天内看到 223 次交换,这就是为什么完全支持读取和交易它们。

交易

每个写入操作首先构建一个 Plan:它将发送什么、发送给谁、期望返回什么,以及值得警告什么。同一个 Plan 被模拟和签名,因此三者不会偏离。

模式

发生什么

(无标志)

构建计划,使用余额覆盖对实时状态进行模拟,并打印两者。不签名也不发送

--dry-run

相同的工作,明确要求:payload 中的 "mode": "dry-run",并且没有提醒未发送任何内容

--unsigned

发出 calldata 和 value 供他人签名。唯一不模拟的模式

--confirm

签名并广播

四个值得了解的行为:

  • 场所不是你必须做出的选择。 启动记录说明了代币在哪里交易。--route curve|v4|v3 覆盖该答案,而不是搜索一个。

  • 接受时下限是固定的。 计划在广播前立即从实时状态重建,你接受的下限被带入重建,而不是从新价格重新计算。交易不能低于你批准的界限签名,如果价格已超过它,则不会发送任何内容。

  • 在阈值处卖出曲线会被重定向,而不是失败。 曲线一旦筹集足够就停止交易,pons graduate <token> 是任何人都可以调用的。

  • V1 卖出会为你解包。 V1 池持有 WETH 而不是 ETH,因此卖出会将收益留在路由器并在同一交易中解包。以明显方式卖出会有效并给你 WETH。

启动

pons launch --name "My Token" --symbol MINE --desc "..."      # plan it and simulate it. Nothing is sent
pons launch --name "My Token" --symbol MINE --dry-run         # the same, said explicitly
pons launch --name "My Token" --symbol MINE \
  --pair USDG --creator-tax 250 --dev-buy 100 --confirm       # launch, quoted in USDG

启动是这里唯一无法撤销的事情。在构建交易之前,命令会打印你承诺的全部内容:代币将落地的地址、供应量、毕业地点、费用分配,以及狙击税将做什么。它还会在本地检查工厂会在链上拒绝的所有内容。

  • 地址在发送前已知。 两代都使用你选择的盐通过 CREATE2 部署,因此 pons launch 提前打印代币和曲线地址,并拒绝已被占用的盐。--salt 接受原始 32 字节值,因此挖矿的虚荣地址有效。

  • 条款被固定。 previewLaunchEconomics 返回一个摘要,涵盖供应量、曲线费用、池的费用层级和协议的费用分配,它随启动一起传递。如果协议所有者在你的交易进行中更改其中任何一项,启动会回滚,而不是悄悄重新定价。

  • --dev-buy 是原子的,而且必须如此。 V2 工厂要求恰好是启动费用,不多不少,因此开盘买入不能随行;买入通过启动板自己的路由器在同一交易中进行。没有它的启动在这条链上两个区块内就被买光了。

  • --buyback 花费你,而不是持有者。 金库完全由你自己的费用份额资助,并在五年内释放,与协议分成。它不是持有者分配,计划将其作为警告而不是脚注说明。

pons pairs 列出启动可能定价的资产:原生 ETH 加上二十三个批准的代币,它们是代币化股票、两个指数基金和一个稳定币。它们按 Pons 创建页面 渲染的顺序返回,因此两者逐行一致。

安全

  • 默认只读。 没有 --confirm 的命令不会签署任何内容。四种执行模式中有三种不花费任何费用,除 --unsigned 外,每一种都首先针对已部署的合约验证调用,而账户不持有资金。

  • 密钥库是 scrypt + AES-256-GCM,仅所有者可写。密码来自隐藏提示或 PONS_PASSWORD;要导入的密钥来自 PONS_PRIVATE_KEY。

  • 两者都不是标志。 参数在进程表中可见并进入 shell 历史。没有接受其中任何一个的标志,pons config list 在人们可能寻找的地方说明了这一点。

  • 凭据永远不会到达日志行。 付费端点在其 URL 中携带密钥,错误消息嵌入 URL,因此 URL 在抛出的错误中被掩码,而不仅仅是在格式化输出中。

  • MCP 服务器无法签名。 它从不加载密钥库,也从不广播。参见 docs/agents.md。

  • 原生转账使用固定的 100,000 gas 限制签名。 Nitro 从交易自身的限制中收取 L1 发布成本,而 eth_estimateGas 不会说明这一点;在 21,000 时,当 L1 便宜时转账有效,当不便宜时间歇性失败。

发现可能让人损失资金的问题?请私下报告。SECURITY.md 说明了如何报告、范围是什么,以及设计保证什么。

配置

值通过阶梯解析:标志 > 环境 > 配置文件 > 默认值。pons config list 会打印解析后的值及其来源层级,因此一个令人意外的设置只需一条命令即可解释。

配置文件是位于 $XDG_CONFIG_HOME/ponscli/config.json 的扁平 JSON(回退到 ~/.config/ponscli/config.json),仅所有者可写。

Key

Environment

Default

rpc.url

PONS_RPC_URL

未设置。优先尝试你自己的节点

rpc.endpoints

PONS_RPC_ENDPOINTS

官方和 nodeflare 公共端点

rpc.alchemyKey

PONS_ALCHEMY_KEY

未设置,这会禁用付费层级

rpc.tier

PONS_RPC_TIER

auto

rpc.timeoutMs

PONS_RPC_TIMEOUT_MS

10000

wallet.keystore

PONS_KEYSTORE

<config dir>/keystore.json

wallet.tracked

PONS_WALLET_TRACKED

空

output.json

PONS_JSON

当 stdout 不是 TTY 时开启

output.color

PONS_COLOR

auto(遵循 NO_COLOR)

trade.slippageBps

PONS_SLIPPAGE_BPS

100(1%)

trade.priorityFeeGwei

PONS_PRIORITY_FEE_GWEI

未设置

cache.dir

PONS_CACHE_DIR

<cache dir>/ponscli

PONS_PASSWORD 和 PONS_PRIVATE_KEY 从环境变量中读取,但故意不是配置键:两者都不应出现在 config list 打印的文件中,也不应出现在用户粘贴到问题报告中的内容里。

架构

完整文档,包含每个决策及其背后的测量,位于 docs/architecture/ponscli.md。简要概述:

src/core/       business logic, framework-free
src/commands/   thin CLI wiring
src/mcp/        the MCP server, also thin
src/chain/      the RPC waterfall
src/abi/        generated and committed

两个前端都是 src/core/ 的壳。这就是为什么 pons-mcp 是包装器而不是第二个实现。

请求如何路由

第 1 层是对免费端点的轮询;第 2 层是付费端点,仅在尝试过所有第 1 层候选之后才会访问。每条规则都来自针对该链自身端点的测量,而不是通用的重试策略。日常最重要的规则如下:

  • 回滚是答案,不是失败。 它会直接返回给你,而不是在每个端点上重试,然后升级到付费层级。

  • 速率限制会将端点暂停 30 秒,而不是一小时。 免费端点是令牌桶;长时间暂停比限流本身损失更多的可用性。

  • 写入从不轮询。 从一个节点获取的 nonce 广播到另一个节点会导致 nonce too low,因此交易固定使用单个端点。

  • eth_chainId 不是健康检查。 某个公共端点响应它比其他端点都快,但随后拒绝 eth_call。pons doctor 正是因为这个原因才使用真实调用进行探测。

ABI

src/abi/ 是生成并提交的,因此 CLI 可以离线工作,接口变更会显示为可审查的差异。

npm run abi:fetch     # regenerate from Sourcify, falling back to Blockscout
npm run abi:check     # fail if the committed files have drifted

每个文件都记录了其 ABI 的来源以及匹配是如何证明的。由于合约不同,有四种来源类别:

class

example

how it is proven

在其地址上已验证

PonsV2LaunchFactory

Sourcify 自身的字节码匹配

在每个链上部署相同

Permit2

在 Base 上验证;每个选择器都存在于 Robinhood 的字节码中

每次启动部署一次,未在任何地方验证

V2 曲线和代币

从工厂的已验证标准 JSON 输入编译,与其不可变部分之外的实时实例逐字节匹配

多次部署,部分已验证

V3 池、V1 的代币

一个已验证实例,通过与第二个独立选择的实例对比证明其通用性

有一个文件是手写的:erc20Errors.ts,包含第三方报价资产回滚时的错误。报价资产是别人的代币,没有单一的 ABI 覆盖二十三个已批准的代币,如果没有这些,USDG 启动时最常见的失败会打印为四个无法解释的字节。

面向代理

完整指南:docs/agents.md。

pons-mcp 作为第二个二进制文件随此包一起发布,并调用与 CLI 相同的 core/。

// claude_desktop_config.json, .mcp.json, or your client's equivalent
{
  "mcpServers": {
    "pons": { "command": "pons-mcp" }
  }
}

六个工具:pons_info、pons_pairs、pons_plan_buy、pons_plan_sell、pons_transaction、pons_endpoints。

服务器无法签名,也没有任何标志可以使其签名。 它读取链并构建未签名的交易;由人来发送。这就是整个安全模型,也是为什么服务器可以安全地留在模型旁边运行:一个困惑的代理最坏的情况是给你报一个糟糕的价格,而不是花你的钱。

答案以基本单位返回,因为模型可以对 50000000000000000 进行精确算术,而不能对 0.05 进行。

对于改为调用 CLI 的代理,当 stdout 不是终端时,--json 已经是默认值,并且参数错误会携带失败命令的用法行,以便调用者自行纠正:

{
  "ok": false,
  "error": {
    "code": "USAGE",
    "message": "missing required argument 'token'",
    "hint": "run 'pons info --help'",
    "details": { "command": "info", "usage": "pons info [options] <token>" }
  }
}

代理式编码

此仓库自带代理配置。CLAUDE.md 是项目简介,AGENTS.md 符号链接到它,供 Codex、Cursor、Copilot 等使用。

.claude/hooks/block-secrets.sh

拒绝任何包含私钥或内联密码的命令行

.claude/hooks/warn-broadcast.sh

当 --confirm 或 pons launch 即将花费真实资金时大声说出

.claude/skills/verify/

运行此项目门禁的检查,并解释每个失败在此处的含义

测试

npm run typecheck
npm run lint
npm test
npm run build

测试套件完全离线。每个测试都针对 test/fakeChain.ts 驱动真实的命令表面,这是一个地址 + ABI + 函数 → 结果的表,也服务于 Multicall3 和 eth_getLogs,因此所测试的是与实时路径相同的解码和聚合。

有两项检查会访问网络,并且故意不包含在 npm test 中:

npm run test:sequence   # prove multi-block sequences against live mainnet state
npm run abi:check       # fail if a committed ABI has drifted from its verified source

序列,无需本地节点

模拟只能证明一个调用对一个区块。它无法证明批准生效后下一个区块中的卖出会成功,也无法证明启动确认后一个区块后其创建的曲线可购买。这些是用户会遇到的失败。

Robinhood Chain 支持 eth_simulateV1,它针对实时主网状态运行多个区块的多个调用,状态在所有调用之间传递。npm run test:sequence 使用它来证明六个序列,包括启动的整个生命周期:创建、交易、超过毕业阈值,并播种到 Uniswap V4 池。无需本地节点,无需 Foundry,不花费任何东西。

每个序列都带有一个必须失败的对照。如果没有对照,状态覆盖可能正在完成序列看似证明的工作。

故意花费真实资金

scripts/mainnet-e2e.sh 启动一个代币,购买它,卖出它,并在主网上领取费用,真实执行。序列由上述检查免费覆盖,因此这增加的是模拟无法做到的一件事:真实交易,由真实密钥签名,被真实内存池接受,并有真实收据可解码。除非你明确要求,否则它是关闭的,每次交易前都会询问,并且绝不能在任何 CI 中运行。

PONS_E2E=i-understand ./scripts/mainnet-e2e.sh

退出码

脚本和代理可以根据结果进行分支,而无需解析文本。

Code

Meaning

0

成功

1

未分类的失败

2

用法:错误的标志、参数或命令

3

配置缺失、格式错误或矛盾

4

所有 RPC 端点均失败

5

链已响应,但响应是回滚

6

密钥库缺失、密码错误或拒绝签名

7

用户拒绝了确认

8

账户无法支付所请求的费用

在 --json 模式下,失败会将 {"ok": false, "error": {...}} 写入 stderr,绝不写入 stdout,因此管道只携带结果。

贡献

请参阅 CONTRIBUTING.md,以及 SECURITY.md 了解不应公开的问题。简而言之:运行上述四项检查,将新行为保留在 src/core/ 中,并在写下任何关于协议的声明之前,先针对主网进行验证。合约源码在几个关键地方已经过时。

关于

使用 TypeScript 在 viem 上从头编写。没有从任何仓库复制源码:命令表面源自 chainstacklabs/pumpfun-cli 的行为映射,RPC 策略则来自针对该链自身端点的测量。

Pons 本身位于 ponsfamily.com:用于启动和探索的 Web 客户端,其分析和文档。此 CLI 不属于它,未获得其认可,并且与任何人都可以访问的相同公共合约交互。

许可证

MIT。请参阅 LICENSE。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to interact with Robinhood Chain via USDG payments, offering tools for balance, pricing, trading, and more.
    18
    53
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with the pons token launchpad on Robinhood Chain for token discovery, verification, price tracking, and trading with built-in safety controls and user approval.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage their own wallet and interact with Twofold's dual-yield liquidity protocol on Robinhood Chain, including swaps, pool deposits and withdrawals, staking, and reward claims.
    38 npm
    MIT