原文标题:《DFINITY | Paul Liu:一条没有历史包袱的链》 2021 年 9 月 4 日,在 BeWater DevCon 2021 全球开发者大会上,DFINITY 核心工程师 Paul Liu,曾任英特尔实验室研究科学家,为 X86 架构构建了 Haskell 编译器,他就密码学如何改变共识这一主题,进行了分享。 传统分片技术存在分片双方需要知道对方历史区块的包袱。DFINITY 采用了 BLS 文件签名,引入对 DKG 的算法进行一些改进,加入证明,解决最长链验证问题 ,子网之间的交换便无需历史包袱,区块链变成了一台「互联网计算机」,甚至可以在上面跑网站。 Hello,大家好,我是 DFINITY 的工程师 Paul,很感谢大会的邀请,在这里能有机会和大家分享一下技术心得。我今天带来的题目主要是围绕着怎么用一些加密技术来改进共识协议,能够为共识协议去掉一些历史包袱。 比特币诞生以来提出了一个口号:「Don't trust. Verify」。就是说,「不要去相信,要去验证」。但具体怎么验证呢,里面的细节其实还比较多。 历史区块包袱我们这里看一个例子,后面的区块需要对前一个区块进行哈希,还包括区块本身的内容,比如用户的交易这些。 假如给你一个区块要验证它的正确性,这个怎么做呢?通常,比特币的做法需要知道这个区块是属于最长链,经过多轮区块以后我们基本上可以确信这个区块不能够再更改了,所以它是安全的。 要知道这个区块属于最长链,它的从属关系,实际上是要知道这个区块它之前的节点是正确的,需要一直回溯到创世区块,我们假设认定创世区块是正确的,这样算出来的最长链。最长实际上也是难度的概括,我就不细讲了。 算出来最长链才能验证这个区块链,这势必就牵扯到你需要知道所有的历史区块,这样的负担对于用户来说基本上是不可接受的。对于节点来说,可能也就是第一次进行同步的时候,一个新节点加入进来进行同步的时候,它可能需要知道所有历史记录,这才能验证之后区块的正确性。 怎么样解决这个问题,因为这对于容量的扩充是一个挑战,始终是需要保持所有的历史区块的记录。 传统分片技术扩容方面我们通常的方案是做分片,我们把整个区块链的状态分成好多个片,然后每一个片实际上通过自己的区块链在运行。如果一个交易需要跨片的话,从一个区块链发起的交易到另外一个区块链上去接收,发起方和接收方势必要验证对方区块链上面的区块,每个分片就需要知道所有其它分片过去的历史区块,这样相对于单链来说其实负担更大了。可能有一些删除优化算法,但这些优化算法实际上也就是提高了一些效率,并没有达到质的飞跃。 (责任编辑:admin) |