性能是阻碍公链发展的瓶颈,提升性能则是绝大多数希望超越以太坊的公链的主要设计目标,但当我们站在今天回望时,会发现这些公链选择的方法大多是通过机制的设计来增强一个分布式系统的性能,但受困于分布式系统CAP定理(不可能三角),改善性能是要付出代价的,当这个分布式系统的用途是账本时,这些代价甚至可能是难以被接受的。 以太坊也一直在尝试各种方法以提升性能,这篇文章将试着介绍在以太坊2.0中,分布式系统设计如何与密码学设计结合,实现公链在性能上突破。一. 状态分片:从单账本到多账本区块链是一个分布式账本,出块节点是记账的矿工,它们负责把交易写入账本。除了竞争记账权,出块节点最重要的工作,或者说本职工作就是检查自己打包的这些交易是否合法。完成这个工作并不难,因为出块节点手中握有账本,它去查一下交易发送方有没有这笔钱即可。 对于未分片的公链,所有节点都持有一个相同的账本;而为了防止记账冲突,每次也只允许一个出块节点记账。以太坊提出状态分片,实际上就是把一个账本分成多个账本,这样一来,一些节点在1号账本记账,一些节点在2号账本记账……(相当于7-11从一个收银台增加为多个收银台),多个节点同时记...