Wiki · Zikaron

上链与网络

上链,就是把条目发进一笔以太坊交易。它给出一个确定的时间上限:上链之后,任何人都能对着链核对这本账在那个时刻已经存在。

上链证明什么

上链的是条目编号,即条目全部字节的 SHA-256;条目里又记着内容指纹。先有内容,后有条目,再有编号。所以一个条目编号出现在某个区块里,就证明这条条目和它记下的内容最迟在那个区块的时间已经存在。

每个条目都带着前一条的编号。最新一条上链后,此前的每一条以及它们记下的内容,也一并有了时间上限。

早到何时
上链只给出上限。内容可能写于上链前一天,也可能写于十年前。
作者是谁
链上可见的是:这把密钥在当时持有这份内容的指纹。
内容真伪
任何文件都能算出指纹、都能上链;上链证明的是时间。

判断方法见一条记录证明什么。

待上链队列

新条目先进「待上链」队列。「记录存证」页工具栏的「待上链 N」分段列出队里的条目,表下的「本批」卡写着条数和 Gas 费估算,按「全部上链」或在某一条的详情里按「现在上链」,打开「上链」卡:

  1. 卡上写「条目」和「Gas 费上限」,Gas 费估算在「详细信息」里。
  2. 估算完成后按「确认上链」:签名、发出交易、等待收据。

一批里的全部条目装在同一笔交易里,只花一笔交易的费用,条目越多,单条分摊越少。

Gas 费上限按链上最新一块的基础费计算:(基础费 × 2 + 小费)× gas 上限;基础费读取失败时按 0.0006 ETH 计。余额够付上限才会发出;余额低于上限时提示需要多少、现有多少,并带「复制地址」,方便去充值。

发出之后

  • 30 秒内入块:提示「已上链 N 条」。
  • 30 秒后仍在等待入块:提示「已提交 N 条,等待确认」,之后每 15 秒再问一次收据。
  • 关掉再开应用,接着等那一笔交易的收据,照旧只发一次。
  • 收据显示执行失败:这些条目留在队里,可以重发。

上链状态

状态含义
待上链在队里,等待发出
正在等待上链交易已发出,等待入块
确认中已入块,等待账本检查确认
已确认账本检查确认它已锚定
已确认 · 上次核 …本次检查尚在进行,照上一次的结论;超过一天变灰
已回滚交易在链上执行失败,留在队里可重发
未发出发出前就被拒(如余额低于上限),留在队里
未上链既在队列之外,也在链外

需要「已确认」才能做的事,例如起草授权时选记录,只认本次检查的结论。

自动上链。「设置 › 网络」的「自动上链」开关,出厂关着。开着时,写入账本的按钮换成「立即上链」,写入后直接估算 Gas 费并打开「上链」卡;它适用于存证、授权、撤销等所有写入。

账本检查

账本检查把本机账本逐条和链上的锚对一遍。它按「设置 › 通知」的周期自动跑,出厂为每 300 秒;账本变过(新写了条目、一批上了链)时立即跑一趟;按「同步」时也跑。前提是节点、链 ID 和登记合约都已配置。

「账本」页顶上的账本状态行写着「正常」或「异常」,点开是检查卡:已上链、尚未上链、与链上不符、导入未证实、无法识别的类型、格式错误的条目等,逐项一盏灯一个数。「正常」的条件是:有检查结论、链条完好,且问题类各项都是零;尚待上链的条目算作正常。结论为断链时,整本账本转为只读,页顶挂断链提示条,按「去恢复」处理。

频率与精度

两次上链之间写入的条目,时间上限都是后一次上链。每月上链一次,时间精度即为一个月;每天一次,即为一天。上链越频繁,费用越高,时间越精确。每隔几天上链一次、连续记录数年的账本,与昨天才开始记录的账本,分量自然有别;记录包导出页的「读数」给出这件事的三个数,见深度。

网络

向导的第 3 步选定这台机器的网络。应用预置两个网络,各带两个来源各异的公共节点,便于交叉核对:

以太坊主网(默认)Sepolia 测试网
链号111155111
登记合约0x36Ea8A857a5FE813429d4D9947000C644A88809A0xC29410B882c4C3b77e33659d2f06ac563e7B08a3
起始区块2608722911715660
节点https://mainnet.gateway.tenderly.co
https://rpc.flashbots.net
https://sepolia.gateway.tenderly.co
https://rpc.sepolia.ethpandaops.io

选「以太坊主网」时,当前数据目录的链设置尚缺时,应用自动填好链号、登记合约、起始区块和两个公共节点。在主网上锚定要花真实的 ETH。

用测试网试一试。在向导第 3 步选「自定义」,然后到「设置 › 网络」按「编辑节点…」,把节点填成 11155111=https://sepolia.gateway.tenderly.co 11155111=https://rpc.sepolia.ethpandaops.io,按「保存节点」;再填链 ID、登记合约和起始区块,按「保存链设置」。

自定义。节点写成 链号=节点地址,多个用空格分开。自己保存过之后,「网络」一行显示为「自定义」。

节点

应用通过你配置的节点读取链上数据、发送交易。「设置 › 网络」的「链上读取」一行写着几个节点读数一致;只有一个节点响应时,注明读数出自单一来源。连 https:// 节点时,每次都校验证书和主机名,证书通过才读链。

公共节点能看到你查询的地址与合约。如有顾虑,请换成你自己的节点。

上链之后

上链是单向的。链上留下的是 32 字节的条目编号和发送地址;内容、文件名与记录名称都在链外。发送地址是公开的,任何人都能查到这个地址发过哪些编号。