上链与网络
上链,就是把条目发进一笔以太坊交易。它给出一个确定的时间上限:上链之后,任何人都能对着链核对这本账在那个时刻已经存在。
上链证明什么
上链的是条目编号,即条目全部字节的 SHA-256;条目里又记着内容指纹。先有内容,后有条目,再有编号。所以一个条目编号出现在某个区块里,就证明这条条目和它记下的内容最迟在那个区块的时间已经存在。
每个条目都带着前一条的编号。最新一条上链后,此前的每一条以及它们记下的内容,也一并有了时间上限。
- 早到何时
- 上链只给出上限。内容可能写于上链前一天,也可能写于十年前。
- 作者是谁
- 链上可见的是:这把密钥在当时持有这份内容的指纹。
- 内容真伪
- 任何文件都能算出指纹、都能上链;上链证明的是时间。
判断方法见一条记录证明什么。
待上链队列
新条目先进「待上链」队列。「记录存证」页工具栏的「待上链 N」分段列出队里的条目,表下的「本批」卡写着条数和 Gas 费估算,按「全部上链」或在某一条的详情里按「现在上链」,打开「上链」卡:
- 卡上写「条目」和「Gas 费上限」,Gas 费估算在「详细信息」里。
- 估算完成后按「确认上链」:签名、发出交易、等待收据。
一批里的全部条目装在同一笔交易里,只花一笔交易的费用,条目越多,单条分摊越少。
Gas 费上限按链上最新一块的基础费计算:(基础费 × 2 + 小费)× gas 上限;基础费读取失败时按 0.0006 ETH 计。余额够付上限才会发出;余额低于上限时提示需要多少、现有多少,并带「复制地址」,方便去充值。
发出之后
- 30 秒内入块:提示「已上链 N 条」。
- 30 秒后仍在等待入块:提示「已提交 N 条,等待确认」,之后每 15 秒再问一次收据。
- 关掉再开应用,接着等那一笔交易的收据,照旧只发一次。
- 收据显示执行失败:这些条目留在队里,可以重发。
上链状态
| 状态 | 含义 |
|---|---|
| 待上链 | 在队里,等待发出 |
| 正在等待上链 | 交易已发出,等待入块 |
| 确认中 | 已入块,等待账本检查确认 |
| 已确认 | 账本检查确认它已锚定 |
| 已确认 · 上次核 … | 本次检查尚在进行,照上一次的结论;超过一天变灰 |
| 已回滚 | 交易在链上执行失败,留在队里可重发 |
| 未发出 | 发出前就被拒(如余额低于上限),留在队里 |
| 未上链 | 既在队列之外,也在链外 |
需要「已确认」才能做的事,例如起草授权时选记录,只认本次检查的结论。
自动上链。「设置 › 网络」的「自动上链」开关,出厂关着。开着时,写入账本的按钮换成「立即上链」,写入后直接估算 Gas 费并打开「上链」卡;它适用于存证、授权、撤销等所有写入。
账本检查
账本检查把本机账本逐条和链上的锚对一遍。它按「设置 › 通知」的周期自动跑,出厂为每 300 秒;账本变过(新写了条目、一批上了链)时立即跑一趟;按「同步」时也跑。前提是节点、链 ID 和登记合约都已配置。
「账本」页顶上的账本状态行写着「正常」或「异常」,点开是检查卡:已上链、尚未上链、与链上不符、导入未证实、无法识别的类型、格式错误的条目等,逐项一盏灯一个数。「正常」的条件是:有检查结论、链条完好,且问题类各项都是零;尚待上链的条目算作正常。结论为断链时,整本账本转为只读,页顶挂断链提示条,按「去恢复」处理。
频率与精度
两次上链之间写入的条目,时间上限都是后一次上链。每月上链一次,时间精度即为一个月;每天一次,即为一天。上链越频繁,费用越高,时间越精确。每隔几天上链一次、连续记录数年的账本,与昨天才开始记录的账本,分量自然有别;记录包导出页的「读数」给出这件事的三个数,见深度。
网络
向导的第 3 步选定这台机器的网络。应用预置两个网络,各带两个来源各异的公共节点,便于交叉核对:
| 以太坊主网(默认) | Sepolia 测试网 | |
|---|---|---|
| 链号 | 1 | 11155111 |
| 登记合约 | 0x36Ea8A857a5FE813429d4D9947000C644A88809A | 0xC29410B882c4C3b77e33659d2f06ac563e7B08a3 |
| 起始区块 | 26087229 | 11715660 |
| 节点 | https://mainnet.gateway.tenderly.cohttps://rpc.flashbots.net | https://sepolia.gateway.tenderly.cohttps://rpc.sepolia.ethpandaops.io |
选「以太坊主网」时,当前数据目录的链设置尚缺时,应用自动填好链号、登记合约、起始区块和两个公共节点。在主网上锚定要花真实的 ETH。
用测试网试一试。在向导第 3 步选「自定义」,然后到「设置 › 网络」按「编辑节点…」,把节点填成 11155111=https://sepolia.gateway.tenderly.co 11155111=https://rpc.sepolia.ethpandaops.io,按「保存节点」;再填链 ID、登记合约和起始区块,按「保存链设置」。
自定义。节点写成 链号=节点地址,多个用空格分开。自己保存过之后,「网络」一行显示为「自定义」。
节点
应用通过你配置的节点读取链上数据、发送交易。「设置 › 网络」的「链上读取」一行写着几个节点读数一致;只有一个节点响应时,注明读数出自单一来源。连 https:// 节点时,每次都校验证书和主机名,证书通过才读链。
公共节点能看到你查询的地址与合约。如有顾虑,请换成你自己的节点。
上链之后
上链是单向的。链上留下的是 32 字节的条目编号和发送地址;内容、文件名与记录名称都在链外。发送地址是公开的,任何人都能查到这个地址发过哪些编号。