当你在读一个页面时,确定性最终性意味着什么
对“我应该等多少个确认”这个问题,简短的回答是一个都不用等。这个问题不适用于这条链,而能回答它的那个计数器,在本站每一个页面上都是刻意缺席的。
概率性与确定性
在工作量证明或最长链式的权益证明网络中,一个区块只是大概永久。竞争链可能后来居上,因此你正在看的那个区块可能被重组掉。随着上方区块累积,信心逐渐增加——这正是确认数所度量的:不是一个状态,而是一个永远达不到 1 的概率。交易所让你等待就是这个缘故。
Arc 使用 Malachite,一种 BFT 共识。出块者提议一个区块,验证者投票,当超过三分之二的投票权完成 precommit 时,该区块即被确认。确认就意味着最终——而不是“大概率最终”。这里没有可以输给的竞争链,因为要产生一个冲突区块,需要超过三分之一的验证者集合对两件互相矛盾的事情签名,而那是一种可检测、可归责的协议违规,不是靠硬件就能赢下的竞赛。
实际上最终性在一秒之内达成,与区块变得可见是同一时刻。
这在本站带来的改变
- 没有确认数计数器。一笔交易显示成功或失败,它所在的区块显示已最终确认。这里没有一个会不断增长的数字,因为一个增长的数字会暗示你正在朝某个安全阈值靠近——而你并没有。
- 没有重组,没有孤块或分叉区块。这里既没有叔块列表,也没有“分叉区块”页面,因为这些产物根本无法产生。
- 每一个以高度为键的页面都是永久的。区块页面或交易页面一经渲染就永远不会改变,因此 Arcscan 会永久缓存它们,而不是反复重新验证。这就是本站快的原因——与其说是一项优化,不如说是这条链的一个性质。
- 你在这里读到的一切都无法被撤回。本站可见的一笔转账就是发生了,永久地。没有人——我们不能、验证者不能、发行方也不能——可以撤销它。
诚实的附带说明
链的最终性与我们对链的视图不是一回事。Arcscan 从一个节点读取数据,节点可能落后,而有些页面由一个可能落后得更多的索引构建。因此一笔近期交易完全可能在 Arc 上已经最终确认,却在这里暂时看不到。
所以本浏览器在每一处能区分的地方都把两者分开:由索引提供的页面会如实说明并报告其覆盖范围,而网络状态页面会公布我们的链头高度、它的年龄,以及索引落后多少。“暂时未找到,我们的节点在区块 N”是一个诚实的回答,“待处理”则不是。
有一件事会让 Arcscan 停下来:Arc 无法重组,因此如果我们收到的某个区块头与它前一个衔接不上,那就不是“来晚了”,而是出了严重问题。这种情况会被计数、公布在状态页面上,并让本服务退出服务轮换,而不是让它继续提供一份可能为假的链历史。