跳到主要内容
AI教程

FastMint FCFS:使用 Binance Agentic Wallet 执行时间敏感的 BSC 铸造

了解如何安装和使用 fastmint-fcfs。这是一项 AI 代理技能,可通过同步时钟、区块链最新区块和 RPC 模拟检测销售开启时间,然后在安全检查后预览并执行一笔 Binance Agentic Wallet 交易。

FastMint FCFS:使用 Binance Agentic Wallet 执行时间敏感的 BSC 铸造

fastmint-fcfs 的作用

fastmint-fcfs 是一项面向 Claude Code、Codex、Cursor 和 OpenClaw 等 AI 代理的技能,可帮助你在销售开始后立即在 BNB Smart Chain 上执行单笔 mint、claim 或购买交易。

该工具使用 Binance Agentic Wallet 的 baw CLI。你的机器负责准备 calldata 并选择提交请求的时间,而交易签名则通过 Developer Mode 在 Binance 后端完成。私钥、助记词或会话令牌不会存储在本机。

由于 Binance 钱包流程要求先执行 contract-call preview,再执行 contract-call execute,fastmint-fcfs 会优化这两个步骤的时机。它使用多个彼此独立的触发器,而不是等待单一信号:

  • 时钟触发器:使用经过 NTP 校正的时钟,在销售时间触发。
  • 区块触发器:监测第一个时间戳达到开放时间的 BSC 区块。
  • 模拟触发器:在当前可用速度最快的 RPC 端点之间并行发起 eth_call 请求。

第一个成功的 preview 会被准确执行一次。其他仍在运行的 preview 将被忽略。

只有在用户明确指示执行特定 mint 后,才能使用此工具。单独的 URL 不代表获得发送交易的授权。

前置条件与安装

安装所需软件

使用 Node.js 20 或更高版本。仓库已内置 ethers 6.13,因此项目本身不需要执行 npm install。全局安装 Binance Agentic Wallet CLI:

npm install -g @binance/agentic-wallet@1.12.0

在 Binance App 中启用 Agentic Wallet 和 Developer Mode。确保钱包余额保持在 Developer Mode 上限以下。可选的 Binance wallet skill 可提供额外的钱包操作支持。

将技能放在代理可读取的位置

解压仓库,并将 fastmint-fcfs 目录复制到代理使用的技能目录中:

# Claude Code,项目级
mkdir -p .claude/skills
cp -r fastmint-fcfs .claude/skills/

# Claude Code,全局
mkdir -p ~/.claude/skills
cp -r fastmint-fcfs ~/.claude/skills/

# Codex、Cursor 或其他兼容 .agents 的工具
mkdir -p .agents/skills
cp -r fastmint-fcfs .agents/skills/

chmod +x fastmint-fcfs/fastmint.sh

登录钱包

在终端中登录一次:

baw auth signin --json

打开返回的 urlForWeb,在 Binance App 中匹配显示的 pairingCode,然后批准连接。接着验证会话:

baw auth verify --qrCodeId <qrCodeId> --json
baw wallet status --json

钱包状态必须为 CONNECTED。会话最长可在 48 小时无活动后过期。如果会话过期,代理必须停止并要求你重新登录,不得尝试自动进行身份验证。

检查环境

进入项目目录并运行只读基准测试:

cd fastmint-fcfs
./fastmint.sh bench

基准测试会检查 RPC 排名、WebSocket 延迟、NTP 时钟偏移、钱包连接、Developer Mode、BNB 余额、Agent ID 以及 preview 时序。这是在安排 mint 前进行初步诊断的实用工具。

如果 Node 在 macOS 上无法验证证书链,项目可以从系统钥匙串构建 CA bundle:

./fastmint.sh bench --ca

对于其他环境,请将 NODE_EXTRA_CA_CERTS 设置为合适的 CA 文件。

配置可选 RPC 端点

启动器会自动加载技能目录中的 .env 文件。你可以添加高级 HTTP 和 WebSocket 端点:

FASTMINT_RPCS_EXTRA=https://<premium-endpoint>
FASTMINT_WS_EXTRA=wss://<premium-endpoint>

其他受支持的设置包括:用于替换整个 RPC 池的 FASTMINT_RPCS、用于设置 WebSocket 端点的 FASTMINT_WS、用于设置本地时区的 FASTMINT_TZ,以及用于指定 Node 证书 bundle 的 FASTMINT_CA。日志中会隐藏端点主机。

推荐使用流程

一次典型运行包含四个阶段:对环境进行基准测试、检查 mint 合约、演练 preview,然后执行真实交易。

  1. Bench:确认钱包和网络环境已准备就绪。
  2. Recon:发现合约地址、ABI、mint 函数、参数、时间信息和相关 getter。
  3. Dry-run:发送 preview,但在执行前停止。
  4. Fire:运行交易引擎,并在 preview 通过所有检查后允许执行一次。

1. 检查 mint 网站

针对 mint 页面运行 recon:

./fastmint.sh recon https://mint-site

如果你已经知道合约地址,可以直接提供:

./fastmint.sh recon https://mint-site --contract 0x...

Recon 会下载页面及相关 JavaScript 或代理文档,然后搜索合约地址、链 ID、函数名称、ABI 签名和时间戳。它还会验证已部署的字节码,在可用时从 Sourcify 获取 ABI,读取 view 函数,并输出包含推测参数、calldata、模拟结果和可能开始时间的 mint 候选项。

使用输出结果核实开放时间、价格、免费供应量、每个钱包的限额、Agent ID 要求以及解码后的合约错误。未经检查,不要依赖推测出的参数。

2. 演练 preview

使用 fire --dry 执行检查并预览,但不执行交易:

./fastmint.sh fire --to 0xSALE --data 0x195ad114 --start 23:00 --dry

--start 选项接受 Unix 秒数、本地 HH:MM[:SS] 时间或 ISO-8601 时间戳。检查打印出的 call 值,确认选择器和参数代表预期的函数。

如需演练必须经过时间门控的路径,请添加 --gateSim。这样可以防止已成功的 eth_call 在配置的开放时间之前使演练提前执行。

3. 执行一次铸造

检查试运行并获得明确批准后,在后台运行交易,以保持代理响应:

./fastmint.sh fire --to 0xSALE --data 0x195ad114 --start 23:00 --label project_free

当预览返回成功模拟结果时,引擎会调用一次 baw contract-call execute。最终报告包括交易哈希、BscScan 链接、回执状态、可用时的收到资产、时间线和日志路径。

基本命令示例

使用函数签名

无需准备原始 calldata,直接提供函数签名:

./fastmint.sh fire \
  --to 0xSALE \
  --sig "claimFreeShare()" \
  --start 23:00

发送付费铸造

付费铸造需要明确的金额和匹配的最大上限。例如,每份 0.005 BNB、铸造两份时应使用:

./fastmint.sh fire \
  --to 0xSALE \
  --sig "buyWithBnb(uint256,address,uint256)" \
  --args '[2,"0x0000000000000000000000000000000000000000",0]' \
  --value 0.01 \
  --maxValue 0.01 \
  --start 23:00

免费铸造必须使用 --value 0。如果未设置上限,工具会拒绝非零金额;如果金额超过 --maxValue,工具也会拒绝。

要求特定的 NFT 结果

当且仅当预览表明确切数量的 NFT 将进入钱包时才应执行,请使用 --expectNft:

./fastmint.sh fire \
  --to 0xNFT \
  --data 0xa0712d68...0002 \
  --value 0 \
  --expectNft 2

动态参数

参数可以在每次预览前立即计算。当截止时间、钱包地址、代理 ID 或合约计数器临近开放时间发生变化时,这非常有用。

  • $wallet 解析为 BNB Smart Chain 上已连接的钱包地址。
  • $agentId 解析为根据钱包注册句柄得出的 Agent ID 代币 ID。
  • $zero 解析为零地址。
  • $now+1800 解析为当前 Unix 时间加 1,800 秒。
  • {"getter":"totalMinted()","add":1} 读取 getter,并将其无符号整数结果加一。
  • {"getter":"saleStart()","at":"0x..","mul":2} 从另一个合约读取 getter,并将结果乘以二。

例如,以下命令会在每次预览时刷新 Agent ID 和截止时间:

./fastmint.sh fire \
  --to 0xSALE \
  --sig "mintFree(uint256,uint256,uint256,uint256,address)" \
  --args '["$agentId","1","0","$now+1800","0x0000000000000000000000000000000000000000"]' \
  --start 21:00

动态调用使用基于目标地址、选择器和金额的锁键,因此更改参数不会意外允许同一铸造再次执行。

时间和触发行为

在开放时间之前及其前后,引擎可以从多个独立触发器发送预览。默认突发阶段持续三秒,预览之间至少间隔 350 毫秒,同时最多可进行三个预览。

突发阶段结束后,eth_call 循环会持续检查成功模拟,直到超时;默认超时时间为 600 秒。这样,即使销售活动晚于公布时间开放,工具也能处理,同时不会反复消耗预览限制。

可用时,回退会使用合约的 Sourcify ABI、内置常见错误和 4byte 数据进行解码。NotStarted、NotOpen 和 TooEarly 等错误会被视为临时错误。SoldOut、FreeGone、AlreadyClaimed、NotEligible 和 WrongValue 等错误会被视为终止错误。未知错误会在宽限期内等待,之后才会变为致命错误。

你可以使用 --waitOn 和 --fatalOn 正则表达式自定义分类,但只有在了解合约错误行为时才应这样做。

需要了解的安全保护

  • 工具要求用户针对具体铸造提供明确指令。
  • 执行前会写入锁文件,防止再次广播相同调用。
  • 引擎绝不会自动登录、索要私钥或要求提供助记词。
  • Binance 风控拦截、风险标记、授权变更和权限变更都会停止运行。
  • 钱包必须有足够余额支付请求金额和 gas。
  • 预览必须具有模拟代码 000000000、请求 ID、可接受的原生资产流出量,并且不得有被禁止的钱包变更。
  • PENDING_CONFIRMATION 表示用户必须在 Binance App 中批准;不得重新发送交易。
  • 执行错误、交易回退或缺少回执后,不要自动重试。

如需检查之前的运行记录,请使用:

./fastmint.sh logs
./fastmint.sh locks

只有在获得新的明确用户指令后才能删除锁,不得仅因为交易看似缓慢或失败就删除。

故障排除

钱包和开发者模式错误

如果 baw wallet status 报告 UNCONNECTED,请再次手动登录。代码 351802 和 351804 通常表示开发者模式已禁用、已过期或超过余额上限。代码 351803 表示 Binance 风险拦截,不得绕过。

模拟和合约错误

在 Binance 后端观察到开启区块之前,重复收到 351805 响应属于正常情况,但也可能表示参数不正确。持续收到 NotStarted 响应可能意味着配置的时间有误。SoldOut、FreeGone 和 AlreadyClaimed 表示终止状态。

AgentIdRequired 或 NotEligible 可能表示调用需要 Agent ID 参数。PaymentLow 和 WrongValue 等支付错误表示提供的 BNB 数量与合约要求不匹配。

网络和证书问题

如果 RPC 响应缓慢或受到速率限制,请配置 FASTMINT_RPCS 或 FASTMINT_RPCS_EXTRA。如果 Node 报告 UNABLE_TO_GET_ISSUER_CERT_LOCALLY,请按照安装部分的说明生成或提供 CA 证书包。

DNS 拦截也可能导致证书错误,或返回意外的 ISP 域名。请使用加密 DNS 或在代理控制范围之外使用 VPN;不要自动更改系统 DNS。

有用的文件和命令

主要文件包括:

  • fastmint.sh 用于启动 benchmark、recon、fire、log 和 lock 命令。
  • fire.js 负责预检查、触发器、预览、执行和回执。
  • recon.js 用于发现合约详情和铸造候选项。
  • bench.js 用于检查钱包和网络环境。
  • lib.js 提供 RPC 竞速、WebSocket 区块头、NTP 校正、回退解码和钱包辅助功能。
  • runs/ 用于存储日志、预览数据、执行数据、回执和锁文件。
  • cache/ 用于存储下载的 Sourcify ABI。

每次运行日志都包含本地时间戳和 T+x.xxxs 偏移量。最后一行是 TIMELINE 摘要。

结论

fastmint-fcfs 将合约侦察、同步计时、并行区块链信号、Binance 钱包预览和一次性执行保护结合起来,用于对时间敏感的 BSC 铸造操作。请先运行 bench,使用 recon 检查目标,通过 --dry 进行演练,并仅在确认调用数据、金额、钱包状态和用户授权后执行。

该项目目前面向 BNB Smart Chain。其链 ID、RPC 池、Agent ID 注册表和浏览器集成都针对 BSC,因此不应将其视为多链工具。