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,然后执行真实交易。
- Bench:确认钱包和网络环境已准备就绪。
- Recon:发现合约地址、ABI、mint 函数、参数、时间信息和相关 getter。
- Dry-run:发送 preview,但在执行前停止。
- 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,因此不应将其视为多链工具。
