接下来是交易分片,如前文所述,在UTXO模型下,一笔交易可能包括多个输入和多个输出,进行跨分片通信需要权衡通信导致的成本和性能提升带来的收益。另外跨分片交易往往不可避免,极端情况下,系统内的交易全部是跨分片交易,此时系统的性能将低于分片之前。对跨分片交易问题的解决方案包括同步和异步两种方式,同步方式下,当跨分片交易发生时,各个分片的验证节点协作执行跨分片交易;异步方式下,跨分片交易在各个分片中异步执行,即在有足够证据表明发送方所在的分片已执行其负责的任务后,接收方所在的分片处理其负责的任务,这种方式相对简单且容易协调,因此目前更为普遍。
通过分片理论上能够提升整个网络层面的性能,但是对于单个分片仍然可能存在单点过热问题,即单个分片内部仍然存在交易量过大导致拥堵的可能。
以上仅仅是进行网络分片和交易分片/计算分片面临的问题,没有实施状态分片的情况下,每个验证节点都存储有整个区块链网络的状态,可以自由地从区块链中读取任何数据,但一旦实施状态分片,分片内的验证节点只存储区块链网络的部分状态,从而引发了数据有效性和数据可用性等问题。
数据有效性。数据有效性问题是关于如何识别无效区块,比如作恶者在分片1上创建无效区块B(导致甲的账户上凭空产生1000个通证),并且随后创建有效的区块C,继而发起跨片交易,将凭空产生的通证转移到乙的账户。这种情况下,分片2的节点验证该笔交易之前的一个区块或N个区块都是徒劳的,因为作恶者总是可以在无效区块后创建N+1个有效块。通过单个分片验证相邻的多个分片能够解决单个分片创造无效区块的问题,但是当多个分片合谋时,这种方式将不再有效。目前这一问题的解决方案包括渔夫(Fisherman)和SNARKs(Succinct Non-interactive Arguments of Knowledge,简洁的非交互知识论证)。渔夫方案的思路是在链间传递区块头信息时设置质疑期,期间任何诚实节点都可以提供区块无效证明,该方案的第一个问题在于质疑期需要足够长,从而诚实节点能够下载区块、验证区块以及准备发起质疑;第二个问题是质疑的存在为攻击者提供了新的攻击媒介,要求质疑者提供抵押一定程度上是有效的,但是攻击者提出无效质疑仍然可能是有利可图的,比如出于某种认定阻止诚实节点提出的质疑通过。第二种解决方案是通过使用某种加密结构证明某个计算是正确执行的,其问题在于创建证明本身需要一定时间、系统设计更为复杂、可能出现无效证明以及无法用于图灵完备智能合约语言的协议。
数据可用性。数据可用性包括两个方面,一是特定分片由于某些原因脱机(如受到攻击),依赖于脱机分片的事务无法继续执行,这一问题可以通过备份网络状态解决,但是备份节点将不得不存储系统的整个状态并可能因此产生中心化的风险。第二个方面是由于节点恶意删除历史数据等原因导致区块变得不再可用,针对这一问题目前有监护证明(Proof of Custody)、纠删码(Erasure Codes)以及SNARKs或STARKs(Scalable Transparent Arguments of Knowledge,可扩展知识论证)等解决方案。监护证明的思路是让公证人在分片之间轮换,下载一个区块证明其可用性,为避免公证人始终选择证明能够下载区块,公证人需要提供相应证明或者抵押资产。利用纠删码技术即使区块只有部分可用仍然能够恢复整个区块,因此轻节点收到区块时可以下载区块的部分内容,从而节点能够确认区块是可用的。
此文由 中国比特币交易钱包 编辑,未经允许不得转载!:首页 > 比特币行情 » 分片:分而治之,无限扩展 ――区块链技术引卷之四