区块链 · 数字资产知识 · 行业资讯
文章库关于本站

钱包与账户

冷钱包离线签名文件为何还没完成|部分签名、输入定稿与交易提取

摘要

离线端已经产生签名,文件却仍显示未完成,未必是同一个动作失败。以PSBT为例,签名资料、每个输入的最终形式和可供网络处理的交易各有完成条件,应先识别停在哪个阶段。

冷钱包离线签名的科技主题配图

先弄清文件里完成了哪一部分

冷钱包离线签名的进度,不能只用“文件已经返回”判断。BIP174定义的PSBT是一种协作处理交易的数据格式,能够携带签署需要的信息,也能保留尚未凑齐完整条件的部分签名。文件存在与交易准备完成并不是同一种状态。

这个格式还区分多个处理角色,但角色不必由不同人或不同设备承担。同一个程序可以兼任资料补充、签署和后续处理。因此,看到几个角色名称,不应直接推断需要几个人签名,更不能据此判断钱包采用了什么签名门槛。

部分签名与资料合并各有范围

签署者会对自己能够处理的输入添加相应签名;BIP174并不要求每个签署器都支持所有输入类型。如果不能签署,就不能假装补上一条签名。所以,一个文件中已经出现签名,仍不能证明其他输入需要的资料都已经齐备。

合并角色则负责整理属于同一待处理交易的信息。合并结果包含更多材料,不代表已经把每个输入构造成最终形式;不同交易的文件也不能随意拼在一起。排查界面提示时,应先确认它说的是缺签名、资料冲突,还是下一阶段尚未完成。

区块链交易确认流程的科技主题配图

输入定稿之后才谈交易提取

输入定稿器需要逐个判断输入是否具备满足相应验证条件的数据,再构造该输入需要的最终脚本或见证资料。交易提取器则检查全部输入是否完成,满足条件后才把这些数据整理成网络使用的交易形式。两者处理的对象和完成条件不同。

这解释了为什么“某次签署成功”与“已经能够提取交易”之间可能还有距离。用户需要查清状态,而不是改文件扩展名来冒充另一格式。本文只解释文档中的角色,不要求读者手工修改签名、补写脚本或把自己的文件上传给陌生人处理。

提取成功仍不是网络确认记录

文件处理完成后,还应把本地结果与网络状态分开。以太坊的交易文档也分别描述签署数据、广播和被纳入区块等阶段。这个对照只说明区分阶段的重要性,并不是说以太坊使用PSBT,更不能把两条链的文件或验证规则互换。

可以保留一份不含秘密的状态记录,注明网络、文件类型、软件版本、最后完成的阶段和原始提示。没有取得相应网络记录之前,不把一个文件名、签名数量或交易哈希当作已确认的充分证据。不同钱包支持范围还要看各自说明,本文没有执行任何真实签署或广播。

← 返回全部文章

延伸阅读 · 相关栏目

安全防护钱包与账户风险识别信息核验