合约docs/contracts/receipts-and-recovery.md

回执、共享文件与恢复

当前余额、历史证据和本地活动是不同的数据。同步节点通过 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,也不能套用普通付款回执的大小限制。

两个参与方与演进的权利

  1. Alice 创建并保存条款,为实例充值,将合约文件发给 Bob。创建条款本身不等于充值。
  2. Bob 打开文件,检查自己的角色及当前余额,然后保存。
  3. 授权方调用合约。在线观察这些条款的钱包会保留相关转换,包括另一方授权的调用。
  4. Alice 离线,Bob 再次调用并保存回执。
  5. Alice 在旧交易体被裁剪后上线。State 仍能显示已知承诺是否有活余额,但无法仅从 哈希重建未知程序或错过的后继状态。
  6. Bob 发送回执或附带更新的共享文件。Alice 验证并导入,得到后继条款或关闭证据, 然后重新查询当前 State。自己的旧记录保留。

双钱包测试覆盖充值、双方授权、离线裁剪、回执传输、重复导入、关闭和重启。 它验证这一工作流,不会使网络变成归档服务。

合并行为

导入添加已验证证据,按交易 ID 去重,并保留现有本地名称、自己的操作和其他 已知状态。导入较旧 opening 不会替换较新的活状态,日志不要求按时间顺序到达。 共享合约文件不是完整日志同步格式;需要更多记录时,请分别导出对应回执。

walletListObjectReceipts 返回本地保留的双方调用及当前 canonical 状态。 walletImportObjectReceipt 验证证明,并在保存原始与后继条款前再次检查规范纳入。 可选的预期 opening 防止导入无关调用。walletWatchObject 保存条款供今后观察, 但不能恢复已丢失交易体和证据的任意过去调用。

备份

请保存钱包秘密和公开合约数据。GUI 合约库位于钱包目录中的 wallet.contracts.json。节点 objects/ 保存观察的 opening 和回执, 共享终端材料位于 objects/terminals/;contract-activity/ 保存紧凑活动索引。 停止节点后,对钱包和数据目录进行一致备份。平台路径见 文件与端口。

私钥能恢复授权,不能恢复任意公开条款。如果所有持有人丢失所需 opening, 也没有回执或保留交易体,仅有承诺无法重建它。分享条款和导出重要回执是使用 裁剪历史应用的一部分。

ParanO(1)d 技术文档共识行为以源代码为准。