回执、共享文件与恢复
当前余额、历史证据和本地活动是不同的数据。同步节点通过 State 验证 现在可花费什么;回执证明某次过去的调用;钱包日志列出该钱包保存或导入 的证据。它们都不是全局历史档案。
| 工件 | 内容 | 使用位置 |
|---|---|---|
| 公开 opening | 某个承诺的程序、不可变策略及计数器 | 合约 API、CLI、共享合约文件 |
| 共享合约文件 | 条款、本地描述及最多一份匹配回执 | F7 Open file |
| 合约回执 | 原条款、可选后继条款、调用、纳入及递归证明证据 | F7 Open file;合约验证/导入 API |
| 普通付款回执 | 付款(包括充值)的纳入证据 | F4 Receipts;普通回执 API |
回执证明什么
验证将准确调用、授权关系和纳入情况与节点所选链及已认证递归证明矩阵库绑定。 导出的回执可以包含有界的后续区块头路径。原调用区块体被裁剪后仍可验证。 即使调用关闭合约且没有后继,回执仍包含原 opening。
回执证明该高度的调用,不证明其输出目前仍未花费。应使用 opening 及准确的
(slot_index, creation_id) 查询当前 State,不能将复用槽位误认成旧实例。
允许的重组可能改变规范状态,孤块日志项不等于当前确认。
解码后的合约回执上限为 1,110,624 字节,包括有界终端和最多 42 个后续
区块头。普通付款回执保留独立的 128 KiB 上限。两者格式不同,不能将合约
回执传给 verifyReceipt,也不能套用普通付款回执的大小限制。
两个参与方与演进的权利
- Alice 创建并保存条款,为实例充值,将合约文件发给 Bob。创建条款本身不等于充值。
- Bob 打开文件,检查自己的角色及当前余额,然后保存。
- 授权方调用合约。在线观察这些条款的钱包会保留相关转换,包括另一方授权的调用。
- Alice 离线,Bob 再次调用并保存回执。
- Alice 在旧交易体被裁剪后上线。State 仍能显示已知承诺是否有活余额,但无法仅从 哈希重建未知程序或错过的后继状态。
- Bob 发送回执或附带更新的共享文件。Alice 验证并导入,得到后继条款或关闭证据, 然后重新查询当前 State。自己的旧记录保留。
双钱包测试覆盖充值、双方授权、离线裁剪、回执传输、重复导入、关闭和重启。 它验证这一工作流,不会使网络变成归档服务。
合并行为
导入添加已验证证据,按交易 ID 去重,并保留现有本地名称、自己的操作和其他 已知状态。导入较旧 opening 不会替换较新的活状态,日志不要求按时间顺序到达。 共享合约文件不是完整日志同步格式;需要更多记录时,请分别导出对应回执。
walletListObjectReceipts 返回本地保留的双方调用及当前 canonical 状态。
walletImportObjectReceipt 验证证明,并在保存原始与后继条款前再次检查规范纳入。
可选的预期 opening 防止导入无关调用。walletWatchObject 保存条款供今后观察,
但不能恢复已丢失交易体和证据的任意过去调用。
备份
请保存钱包秘密和公开合约数据。GUI 合约库位于钱包目录中的
wallet.contracts.json。节点 objects/ 保存观察的 opening 和回执,
共享终端材料位于 objects/terminals/;contract-activity/ 保存紧凑活动索引。
停止节点后,对钱包和数据目录进行一致备份。平台路径见
文件与端口。
私钥能恢复授权,不能恢复任意公开条款。如果所有持有人丢失所需 opening, 也没有回执或保留交易体,仅有承诺无法重建它。分享条款和导出重要回执是使用 裁剪历史应用的一部分。