开发者指南 · Zikaron
兼容与演进
本页说明哪些部分长期稳定,以及新功能从何处加入。
长期稳定的部分
- 条目的字节
- 已签出的条目保持原样。任何版本的软件都按 zikaron/1 读取,结论与今天相同。
- 签名域
- 四个字面量各有固定含义:
zikaron/1、zikaron/1-adoption、zikaron.fpm/1、zikaron.ack/1。 - 两种上链形式
- 事件形式与自转账形式。
- 核验结论
- 同一输入,任何合规实现给出同一输出。
四个扩展入口
- 新的条目类型
- 类型是开放的。约定一种新类型后,旧软件将其列入「无法识别的类型」,法的检查结论照旧;ZIKARON Desk 的账本状态行会把它算作问题。
- 正文附加成员
- 条目正文可以携带法定成员之外的键,法把它们视为数据。
for与upstream都以这种方式加入。 - 新的方式标记
- 存证的
mark是开放的字面量。新的指纹算法、新的内容种类,各起一个新标记。 - 新一版法
- 规则本身需要改变时,另立 zikaron/2。
前三个入口都在工具层,当下即可使用。选择哪个入口,取决于新内容需要谁读懂:只供自己的应用读取,用附加成员;需要其他实现也读懂,约定新类型并公开。
下一版法
zikaron/2 意味着新的规格名、新的签名域字面量、新的核与新的摘要,两版的签名相互独立。旧账本在 zikaron/1 下继续有效;需要迁移的作者,在旧账本中记录一条移交,指向签署新账本首条的密钥。
一把密钥只在一部法下写账本,迁移所用的新账本配一把新密钥。
本机文件的版本
本机的每种文件都带格式版本。升级软件时遵循以下规则:
- 新版本能读取全部旧格式。
- 改写为新格式时,先写在旁边,读回核对,相符后再替换原文件。
- 任何一步核对失败即停止,原文件保持原样,并向用户指明是哪个文件。
- 主钥已失、永久封存的文件,字节原样移入机器目录的
set-aside,按序号平铺。 - 备份来自更新的版本时,明确提示先升级应用;其他文件读取失败时,报出是哪一份。
整个过程一步完成:中途断电,下次启动看到的要么是完整的旧状态,要么是完整的新状态。
命令行输出
输出的键名是一张封闭的表,退出码是五个固定值,脚本依赖于此。因此:键名与退出码的含义保持稳定;增加信息时增加新键;新增子命令与参数时同步更新 CLI-SCHEMA.md。
判定词原样保留
GREEN、PARTIAL、FAIL、COMPLETE、GAPS 等词由核写出,在机器读取的输出中保持原样。界面把它们转述为「全部通过」「有缺项」等用语,原词收在详细信息中。
时间
期限与有效期以链上时间或调用方明确给出的时刻判断。界面按用户所选时区显示时间;写入条目与输出的,一律为秒数。
停用功能
读取功能永久保留:旧条目、旧记录包、旧备份,新版本都须能读取。写入功能可以停用,停用时在发布说明中写明,并为用户提供替代做法。
工具层保持轻量
测试、量具、脚本、目录划分与本文档都属工具层,为法与用户服务:发现问题当天修复,过时即更换。承重的只有两样:冻结的法,以及用户已写下的字节。