老外在看什么| Alexander Skidanov:区块链分片技术尚未解决的问题

2018-12-17 19:21:18
1
31991
文章编辑:微想财经

今天Alexander Skidanov接着上次的分片技术指南,发布了下篇《区块链分片技术尚未解决的问题》,主要谈论了区块链分片技术未解决的问题及现有的解决办法。因为文章篇幅较长,摘出其中一个主要问题,整理如下,供大家参阅和讨论。

分片存在的一个很大的问题是,如果没有下载和验证全部的分片,节点如何确定接收到的交易来自于有效区块。

如下图,分片1已经被攻击,坏人挖出了无效块B。假设区块B凭空捏造出来1000个代币,记在在爱丽丝的账户。坏人接着区块B,挖出有效块C,然后在分片2发起了跨分片交易,把这1000个代币转到了鲍勃的账户。此事凭空造出来代币在分片2上是完全合法的。

解决这个问题的一些简单方法有:

1-让分片2的验证者检验发起这笔交易的那个区块。但是这在上面的例子中是行不通的,因为区块C是完全合法的。

2-分片2的验证者可以大量检验发起这笔交易之前的区块。但是,通常对于接受交易的分片要验证的N个区块,恶意验证者可以在他们创建的无效块上创建N+1个有效块。

但比较好的解决方案是,分片按照无向图进行排列(如下图),每个分片都连接多个分片,跨分片交易只能在相邻的两个分片上进行。Vlad Zamfir分片本质上就是这个原理。

如果要在不相邻的两个分片之间进行跨分片交易,这笔交易需要通过多个分片进行路由。在这个设计里,每个分片的验证者都要验证他们的分片以及与他们相邻的分片上的所有区块。假设有10个分片,每个分片将会相邻4个分片,跨分片通信不需要超过两跳(hop)。

分片2不仅验证自己的链,还有所有相邻的链,包括分片1。所以,如果分片1上的恶意分子试图创建无效块B,然后在上面构建区块C,发起跨分片交易,分片2就可以通过验证分片1的所有历史记录,识别出区块B。

虽然现在无法攻击一个分片,但是如果攻击多个分片呢,这仍是个问题。下图中,如果对方成功攻击了分片1和分片2,用无效区块B生成的“资金”与分片3进行了一笔跨分片交易。

分片3验证了分片2所有的区块,但是并未验证到分片1,那么就仍然无法检测到无效块B。

解决这个问题的其中一个主要方案是采用fishermen机制。

这个方法背后的原理是这样的:无论何时,为了关联信标链或是发起分片交易(或是其他原因),链之间相互通信区块头信息,在一段时间内,任意诚实验证者都可以提供无效块的证明。有各种结构可以非常清楚的证明某个区块是无效的,接收节点的通信成本要比接收整个区块要小得多。

使用这种方法,只要有一个节点是诚实的,系统就是安全的。

但是这种方法有两个弱点:

1-这段验证的时间需要足够长,以便让诚实节点识别挖出的区块,下载并进行完全验证。这段验证时间会极大降低跨分片交易的速度。

2-会创造出一个新的攻击向量,恶意的节点可以故意发起大量无效的验证请求。

针对这两个问题,目前也没有很好的解决办法,但是这个方案仍然是解决数据验证问题的一个主要方法。

分片技术虽然在今年初已经提出,但是仍然是个很新的技术,还有太多问题需要搞清楚。

作者在后面还谈到了另外一个解决方法和其他几个问题,对分片技术感兴趣的可以点击原文进行深入研究。

原文链接:Unsolved Problems in Blockchain Sharding

作者:Alexander Skidanov

点赞
收藏
广告
关于我们 广告服务 服务条款 联系我们 意见反馈
Copyright 2018 微想财经区块链 Ltd.Allrights Reserved 备案号:粤ICP备14042790号-4

粤公网安备 44011302001626号