分片技术能怎么解决区块链的规模化(scalability)问题?

0阅读 0评论2022-03-18 有看到天上的屋吗
分类:虚拟化

了解区块链的人应该都知道区块链如果要同时兼顾安全、效率及开放性,目前有两种层次的解决方案正在开发中。


首先,完成度比较高的是闪电网络(Lightning Network)、雷电网络(Raiden Network)这种第二层(layer 2)的解决方案。方法是把多数的交易转移到区块链下(off-chain),借此减轻区块链上(on-chain)的负担。


另外,属于第一层(layer 1)解决方案的分片技术(sharding),还在早期开发阶段,目的是直接提升区块链上(on-chain)的交易效率。今天我会告诉你分片技术是如何进行,以及预期可以达成什么效果。


要提升以太坊的整体交易速度,最直觉的第一层解决方案,当然不是听起来很吓人的分片技术。而是直接多创建几个以太坊出来即可。


换句话说,现在以太坊每秒处理 6 笔交易(Transactions Per Second),那么只要创造 10 个以太坊出来,彼此相互沟通,不就可以每秒处理 60 笔交易了吗?


这不是我发明的烂点子,而是数据库(database)领域常用的方法,用来解决数据库读写效率低落的问题。数据库的用途是储存、读取资料,能够让使用者高效率的读写资料,就是一个好的数据库。


对数据库不熟悉的人,可以直接把数据库想像成PChome 24h 购物网站的物流仓库。能够快速的进货、出货的物流仓储,才是一个好的仓储管理。假设PChome 无法在24 小时内把商品送到北京,最直觉的方法就是在北京多建立一个物流仓库。哪个县市配送太慢,就去那个县市设立一个物流仓库,马上就可以解决问题。


不过,这个方法明显有三个障碍。首先,每个仓库的存货种类必须要相同,假如有北京的消费者要买护唇膏,结果只有广州的仓库有库存,那也无法在24 小时内到货。第二,这个方法必须耗费大量成本盖仓库,但是每盖一个仓库就只能快一点点,增加的效益有限。第三,不只盖仓库的成本,仓库人力也同样必须倍数扩增,否则反而服务水准下降。


要让配送效率有显著的进步,终究还是得回到仓储管理。同样道理套到XM外汇账户xmworl.com数据库、区块链领域,也是完全适用。


光是新增几个一样的东西,很可能只是事倍功半。尤其是区块链安全性是由矿工所贡献的运算能力保护,如果新增了10 个以太坊,但是矿工运算能力没有同样增加10 倍,就等于是牺牲了10 倍的安全性,换取10 倍的效率。


所以,以太坊不是采取上述新建更多仓库的方法,而是反方向把一个以太坊切成好几个小片段的「分片技术(sharding)」。


分片技术:用既有资源改善规模化(scalability)问题
分片技术在数据库领域,就是把一个完整的数据库切分成几个小的片段数据库,让每个片段数据库都可以同时独立运行。


举例来说,下图就是一份存有4 笔资料的数据库,分片在这个例子内就是横向切割,让资料依然是依照相同的类别分类,但是每一份都变成小片段了。因此,未来我要找1、2 的数据就到上方的片段数据库找,要找3、4 就到下方的片段数据库找。


你可能会问,我可以纵向切割吗?可以。但是这样就让一个数据库变成两个不同的数据库,而不是一个数据库的「两个片段」,这反而可能降低了资料的读取、写入效率。因此,一个数据库应该如何切割最恰当,得根据资料的类型和使用情境单独设计,很难有一招打天下的方法。


那么在区块链上,分片技术能怎么解决区块链的规模化(scalability)问题呢?


区块链目前的共识机制,是每一台电脑(full node)都必须花时间验证区块链上每一笔交易的正确性。如果你把交易想像成是学生缴交的作业,而电脑是批改作业的老师。现在区块链共识机制的做法,是每一位学生缴交的作业,都必须经过全校每一位老师的批改才行。


这种做法当然非常没有效率,只要作业量增加,全校每位老师就都得熬夜改作业了。这就是现在区块链上的交易量一增加,就会有很多排队等待被验证的交易出现的原因,也就是规模化(scalability)或效率问题。这种批改作业的机制,是为了确保每一份作业都没有改错,也就是确保区块链上的交易安全性足够。但是,你一定马上就能想到更有效率的方法。


如果现在全校有20,000 份作业,总共有1,000 位老师。原本每位老师都要看20,000 份作业,每份作业都被看过1,000 次。


但是,如果把全校1,000 位老师,每10 位分成一组,总共分成100 组彼此分工合作。每份作业只交给其中一组的10 位老师批改一次,其实每份作业仍然会被看过10 次,已经很难出错了。但是每位老师的工作量,就只剩下原本的百分之一。在这个简单的例子里面,每一组老师和他们所负责批改的作业,就是一个分片(shard)。


你可能会说,那为什么不每一位老师自成一组,那不是能分成更多组,就能更有效率吗?


当然。但是这就变成一个老师定生死的中心化系统,而不是多个老师互相制衡的去中心化系统。所以,每一个分片还是必须要有足够多位老师,来确保批改作业的正确性。又不用太多老师挤在同一组,导致资源的浪费。但也不能太少老师,导致区块链失去去中心化的特色。只要每一个分片独立运作,就可以兼顾效率、安全性及去中心化的特性。


总结来说,你可以将分片技术视为在足够的安全性前提之下,牺牲原本「多余的」安全性,来换取运作效率的方法。
上一篇:Layer 2 究竟是什么?
下一篇:没有了