跳到主要内容

限制与错误

限制​

项目上限
每次扫描的二维码帧数2,048(BBQr:1,295)
每帧字符数4,300
每个会话保留的扫描文本1 MiB
解码后的载荷(CBOR 或 PSBT)128 KiB
CBOR 嵌套层数 / 数据项24 层 / 20,000 项
钱包级配对载荷(生成时)4,096 字节
请求 ID16 字节(eth-sign-request:1–64)
Origin256 个字符
Bitcoin 输入和输出各 1–100 个
EVM calldata64 KiB
EVM 个人消息1–8,192 字节
EIP-71232 个类型,每个类型 64 个字段,数组最多 128 项
TRON 消息1–8,192 字节
Solana 消息(sign-type 2)1–1,024 字节的 UTF-8 文本
Solana 交易1–64 条指令,1,232 字节数据包

常见拒绝原因​

BitTool Signer 拒绝请求时,会在扫描器或审核界面中显示一条简短消息。以下是集成方最常遇到的几种:

消息原因解决方法
Unsupported signing UR typeUR 类型不是 crypto-psbt、psbt、eth-sign-request、sol-sign-request、tron-sign-request 之一使用公开注册表中的类型;配对二维码无法用于签名
Unsupported signing request fieldmap 键超出 1–7(ETH)或 1–6(SOL/TRON)的范围删除自定义字段
Invalid request UUID tag / requestId has invalid length请求 ID 没有用标签 37 包裹,或者对于 SOL/TRON 不是 16 字节37(16 random bytes)
Signing path must be concrete使用了 * 通配符、空的子项,或索引 ≥ 231发送完整的叶子路径,并使用 true/false 硬化标志
Transaction data type does not match payload类型化交易使用了 data-type 1,或 legacy RLP 使用了 data-type 4legacy RLP 用 1,0x01/0x02 交易封装用 4
Unprotected or missing-chain-ID EVM transactions are refusedlegacy 交易不带 EIP-155 链 ID序列化时带上链 ID(v = chainId,r = s = 0)
Chain ID does not match the signing request交易、键 4 和/或 EIP-712 domain 中的链 ID 不一致使所有链 ID 保持一致
Unsupported network链 ID 不在支持的八个 EVM 网络之内,或请求不是主网的使用支持的网络
Typed message has extra unsigned or missing fieldsmessage 的字段与声明的类型不一致只发送声明的字段,不多也不少
Use strings for large typed integersEIP-712 数据中有超过 253 的 JSON 数字将其编码为十进制字符串
Full previous transactions (nonWitnessUtxo) are required …SegWit v0 或 legacy 输入缺少 nonWitnessUtxo添加完整的前序交易
Only SIGHASH_ALL or Taproot SIGHASH_DEFAULT is accepted某个输入使用了其他 sighash 类型使用 SIGHASH_ALL
No unsigned input belongs to this wallet …没有任何输入带有该钱包密钥的 bip32Derivation添加带有正确指纹和路径的派生数据
Exactly one TRON contract is supported per transactionraw_data.contract 中有 0 个或多个条目每笔交易只包含一个合约
TRON contract calls require an explicit fee limitTriggerSmartContract 缺少 fee_limit设置 fee_limit
Invalid TRON timestamp or expiration缺少 timestamp,或 expiration ≤ timestamp使用你的节点返回的值
Address lookup tables require independently trusted account data …带查找表的 v0 Solana 消息使用静态账户密钥编译
This wallet is not a required signer in the transaction键 4 不在消息的必需签名者之中使用必须签名的那个账户
Solana message prefix could represent a transaction header对看起来像交易的字节使用了 sign-type 2交易请使用 sign-type 1
Mixed UR fountain sessions / Multiple unrelated QR payloads一次扫描中混入了两个不同二维码的帧一次只显示一个请求

错误文本只来自引擎自身的检查。意外异常会被报告为通用错误,因此恶意载荷无法向签名器界面注入文本。

匹配结果​

在提示输入密码之前,请求会与手机上的钱包进行匹配。只有 ready 状态才可以签名:

状态含义
ready恰好有一个钱包持有该密钥;签名任务已确定
noMatch这部手机上没有任何钱包持有所请求的密钥(指纹或路径错误,或钱包尚未导入)
missingSigner请求没有说明应由哪个密钥签名(既没有派生数据,也没有地址)
ambiguous有多个钱包符合条件,例如同一组助记词被导入了两次
setupRequired某个钱包的公开数据需要重建(需输入一次密码)
invalid请求的结构无效