|
发表于 2019-3-16 18:52:20
|
显示全部楼层
分片区域(Shard Zones)
分片区域是更广义版本的分片配对。其原理是,每个时间段内我们将分片分成几个由多个分片组成的“区域”。区域必须同步执行,这意味着区域中的所有分片一起更新其本地状态。通过同步执行,区域提供内部分片之间的自由转移,并可与区域中的其他智能合约直接交互,但是这种机制在与区域外的其他分片进行通信时没有任何优势。此外,由于分片区域机制需要验证者了解区域中所有分片的状态,因此分片区域的存在大大降低了分片带来的可拓展性优势。如果一个区域由 16 个分片组成,那么这个区域牺牲了大约 15/16(= 94%)的可拓展性优势,以换取总网络 15 / 1024(= 1%)紧密耦合的执行。
产权负担(Encumbrances)
跨分片(以及跨链)通信的一个不明显的特性就是,用户可以在区块链正式接收之前更快地获得交易的信息。就比如说,爱丽丝从分片 A 向分片 B 发送 5 BETH,知道它会在发送后立即到达分片 B。鲍勃看到了爱丽丝在发送,他知道一旦发送在分片 A 上最终确认,BETH 将到达分片 B。然而,分片 B 及其上的智能合约必须等待几分钟,等 Beacon 链最终确认分片 A 的最终确认。这意味着资金在分片 A 上花费之后,我们可以很快在分片 B 接收并花费这笔资金。换句话说,鲍勃将从分片 B 上爱丽丝的钱包中获得可执行的 IOU(债券),因为鲍勃相信爱丽丝已经发送了足够多的以太币。如果分片 B 的大部分用户都愿意留意分片 A 上的交易并接受标准化的 IOU,那么分片 A 上的以太币可能在发送后很快在分片 B 上花费。然而,当应用于智能合约时,这种方案变得异常复杂,因为状态是不可替代的,状态的债券是不可能的,因此它不适用于一般的交互。这意味着我们应该将产权负担视为松散耦合中的用户体验改进,它允许用松耦合模拟紧密耦合以快速执行某些交易。
共识和状态分离
一个更复杂也更为烧脑的可能是共识过程将脱离状态更新过程。当下,以太坊矿工和完整节点只有在执行了区块中包含的所有状态更新后才接受该区块,其实没有必要,因为在接受区块之后再更新状态也不迟,只是在这种情况下,矿工不会像当下在以太坊中那样就区块链系统状态达成共识,而是会对所有分片链中所有交易的全部历史(或“全部顺序”)达成共识。这样做意味着每个分片链都可以在无需知道其他分片链状态的前提下快速添加区块,这就是分片机制带来可拓展性优势的原因。但是,在所有分片最终确认之前,交易对分片链状态和整个区块链网络的影响将不得而知。换句话说,在所有分片内容的最终确认之后才能完成状态的最终确认。
从用户的角度来看:我们提交交易后就知道交易已被包含在区块链中,但我们必须等待一段时间来确定该交易执行的结果。随着分片的最终确定,我们逐渐获得有关区块链状态的更多信息,但在所有分片链都最终确定之前还无法完全肯定。与产权负担相似,在某些情况下,用户可以在区块链之前确定交易的结果并采取相应的行动。 |
|