能读,还不能动钱。
币安 Agentic Wallet 的 Rust 客户端。官方 baw 用 Node 写成,baw-rs 用 Rust 从零重写同一套协议,覆盖官方 1.12.0 的 102 条叶子命令语法。
覆盖的是命令语法。哪些功能碰过真实账号,哪些没有,下面分开画出来:实心块是跑过的,虚线框是没跑过的。协议是逆向官方 npm 包还原的。
用真实账号跑过
一次真实的二维码登录,加五个只读查询。会话有效期实测 48 小时。
- 二维码登录
statusaddressbalanceleft-quotasettings
没有实盘跑过
所有动用真实资金的操作。命令已经写好,但没有对真钱执行过一次。
- 转账
- swap
- 限价单
- DeFi 存取
- x402 签名
contract-call执行
可不可信:安全模型
写操作要依次过几道检查,任何一道不通过,请求都不会发出。按“下一步”逐个看。
没有实盘跑过 这条写操作路径还没有对真钱执行过。
-
先生成这笔操作的预览,得到预览内容的 sha256。
-
执行时必须带上预览的 sha256。签名只针对这一份预览,而且只能消费一次。
-
必须同时带
--confirm和一次性的--operation-id。用过的 ID 永久拒绝,进程崩溃之后也不会复用。 -
默认检查发送方地址,不一致直接报错,请求不发出。能减少检查的开关只有
--skip-prechecks一个,默认关闭。 -
提交之前先把这次操作的意图写进日志。
-
服务端明确返回 按返回结果处理。传输层失败 返回
UNCERTAIN和retrySafe:false。不自动重发,需要你人工对账。
登录态加密
登录态用 AES-256-GCM 加密。密钥只由一个固定口令经 PBKDF2-HMAC-SHA256 推导,迭代 10 万轮。不读主机名、网卡、机器码、钥匙串或 TPM,所以整个目录搬到另一台机器也能解密。
代价有两条:口令丢了,登录态永久打不开;口令和 session.json 同时泄露,就等于登录态泄露。
文件与网络
目录权限 0700,文件 0600,禁止符号链接,并校验属主。接口域名写死在代码里,禁止重定向,也不接受任意 URL 覆盖。
多钱包隔离
一个后台进程可以管多个具名钱包,各自独立登录,可以并行。同一个钱包内的操作串行执行,并加互斥锁。
钱包名写错、未登录、目录被替换,都会直接报错,不会把请求落到别的钱包上。
和官方差在哪
baw-rs 约 25,300 行 Rust,覆盖官方 1.12.0 的 102 条叶子命令语法。在这之上,多出五条官方没有的命令。
| 命令 | 做什么 | 实测 | 实盘 |
|---|---|---|---|
openfour quote-buy |
four.meme 内盘报价。进程内直接读链上曲线算价,不下单。 | 进程内 67–74 ms等价 Node 脚本要 467–1100 ms | 跑过读公开链上状态,不涉及交易 |
serve |
常驻后台进程,后续命令交给它执行。 | 单次调用 0.10–0.17 秒冷启动 0.09 秒 | 跑过本机实测,只读命令 |
batch |
只读批处理,一次跑多条查询。 | 没有公开的计时 | 没跑过不在实盘记录里 |
contract-call run |
在策略约束下执行合约调用。 | 没有公开的计时 | 没跑过涉及真实资金 |
contract-call fire |
把预览和执行合成一次调用。 | 没有公开的计时 | 没跑过涉及真实资金 |
“跑过”的两行衡量的是命令执行多久,不代表任何交易成功过。
现在能不能用真钱
还没有人用 baw-rs 动过真钱。转账、swap、限价单、DeFi 存取、x402 签名、contract-call 执行,都没有实盘跑过。如果你现在拿真钱用,你就是第一个实盘跑这些路径的人。
实盘做过的
- 一次真实的二维码登录。
- 五个只读查询:
status、address、balance、left-quota、settings。 - 会话有效期实测 48 小时。
离线测试做过的
- 296 项通过,0 项失败。
- 全部离线运行:用回环 HTTP fixture 模拟接口,用合成的会话文件模拟登录态。
- 离线测试证明代码按设计走,证明不了真实接口在真钱上的行为。
怎么装
仓库不发布预编译二进制,必须自己构建。README 给的理由是:只有你自己构建的产物,哈希才可核对。
需要 Rust 稳定版工具链,开发时用的是 1.99.1。主要平台是 Linux。
构建
git clone https://github.com/bqingx/baw-rs.git
cd baw-rs && cargo build --release # 产物:target/release/baw-rs
首次使用前的准备
umask 077
mkdir -m 700 ~/.baw
printf '%s' 'your-passphrase' > ~/.baw-instance.key # 0600
把 your-passphrase 换成你自己的口令。这个口令文件是登录态的加密依据,丢了它,已保存的会话就永久打不开,请另外备份。