The*_*ist 5 bitcoin blockchain ethereum substrate
默认情况下,Substrate 取决于其区块生产的最终性。还查看带有块的应用程序数据库层,似乎通常不可能以任意深度进行块恢复。这是否意味着基质中不可能具有概率最终性?
问题的背景:
在比特币、以太坊和其他基于概率确定性的链中,链可以根据系统需要重组任意数量的区块。如果需要的话,它甚至可以是数千个区块。因此,状态转换函数(使用底物术语)必须是可逆的。因此,当重组发生时,区块会以某种方式恢复(在比特币中),输出被删除,输入在 UTXO 集中变得未花费。
在最抽象的形式中,这可以在功能上表示为:
Apply(StateA, blockX) -> StateB
Revert(StateB, blockX) -> StateA
Run Code Online (Sandbox Code Playgroud)
这严格要求知道给定一个块如何完成恢复。在比特币中,这很容易实现,因为我们确切地知道如何通过简单的数据库更改来“取消”输入并删除输出。
目前Substrate的情况(据我了解):
但在像 Substrate 这样的通用链中,如果不存储整个区块链上每个块的状态更改集,就无法完成此操作,这需要巨大的磁盘空间/内存需求(在 Substrate 中称为存档修剪模式)。或者,开发人员必须提供可逆性机制,这似乎不是托盘标准接口中的要求,因为人们只需要提供仅在应用块时必须在数据库中完成的更改,从主链末端删除/恢复块时不会。
从区块的数据库处理中可以看出,不可能像概率最终性区块链中那样恢复任意数量的区块(除非修剪模式是archive,这对于所有用户来说是不切实际的)。Substrate 似乎认为最终性是不可避免的,在技术底层数据库/存储中,定义了“规范化”的概念。规范化区块是技术上不可逆/不可逆的区块,因为它的状态交易功能已经应用到了数据库中。鉴于托盘没有定义任何用于恢复外部/交易以及块的机制,因此在块被规范化后绝对没有办法恢复它。因此,substrate 存储尚未规范化/最终确定的所有可能候选块的树。
这给我带来了很多困惑,因为似乎Substrate 确实支持工作量证明共识,但规范化概念完全消除了恢复区块的可能性,而由于其概率性质,这通常是工作量证明中的要求。(幽默地说,恭喜,影子挖矿的 51% 攻击不再可能了:-),但严肃地说,如果一组诚实的节点被隔离足够长的时间,自发的有争议的分叉和链分裂是可能的,这并不是那么不现实,例如,如果一个国家决定封锁互联网几天或出于政治原因封锁节点端口,这在正常的工作量证明系统中永远不应该成为问题)。
问题
这个问题是基于构建一个基于比特币的底层区块链的需求。
是否有可能使底层共识完全以正确的概率最终性运行(无需规范化并具有可逆操作的正确定义)?需要改变什么?这是一个现实的改变还是已经深入骨髓以至于几乎不可能?老实说,我不知道从哪里开始,并且想了解一下为了使底层区块链以概率最终性工作而必须进行的更改的概述。