开发者指南 · 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 下继续有效;需要迁移的作者,在旧账本中记录一条移交,指向签署新账本首条的密钥。

一把密钥只在一部法下写账本,迁移所用的新账本配一把新密钥。

本机文件的版本

本机的每种文件都带格式版本。升级软件时遵循以下规则:

  1. 新版本能读取全部旧格式。
  2. 改写为新格式时,先写在旁边,读回核对,相符后再替换原文件。
  3. 任何一步核对失败即停止,原文件保持原样,并向用户指明是哪个文件。
  4. 主钥已失、永久封存的文件,字节原样移入机器目录的 set-aside,按序号平铺。
  5. 备份来自更新的版本时,明确提示先升级应用;其他文件读取失败时,报出是哪一份。

整个过程一步完成:中途断电,下次启动看到的要么是完整的旧状态,要么是完整的新状态。

命令行输出

输出的键名是一张封闭的表,退出码是五个固定值,脚本依赖于此。因此:键名与退出码的含义保持稳定;增加信息时增加新键;新增子命令与参数时同步更新 CLI-SCHEMA.md。

判定词原样保留

GREEN、PARTIAL、FAIL、COMPLETE、GAPS 等词由核写出,在机器读取的输出中保持原样。界面把它们转述为「全部通过」「有缺项」等用语,原词收在详细信息中。

时间

期限与有效期以链上时间或调用方明确给出的时刻判断。界面按用户所选时区显示时间;写入条目与输出的,一律为秒数。

停用功能

读取功能永久保留:旧条目、旧记录包、旧备份,新版本都须能读取。写入功能可以停用,停用时在发布说明中写明,并为用户提供替代做法。

工具层保持轻量

测试、量具、脚本、目录划分与本文档都属工具层,为法与用户服务:发现问题当天修复,过时即更换。承重的只有两样:冻结的法,以及用户已写下的字节。