存储层是区块链技术的底层,需要考虑性能和易用性。整个系统的性能主要取决于网络或数据存储的I/O性能。网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比特币选择的是谷歌的LevelDB,这个数据库读写性能很好,但是很多功能需要开发者自己实现。网络层包括各种共识算法、加密签名算法等。存储层和网络层更像是计算机操作系统,而扩展层则像计算机的各种驱动,智能合约、侧链、状态通道等属于这一层。应用层类似于电脑中的各种软件程序,是消费大众可以使用的产品,这一层除了各类的钱包,市场上几乎没有什么应用。
区块链目前面临的可扩展性三难困境包括:单个区块链系统只能拥有可扩展性、安全性及去中心化三种属性中的两种。结论是,我们必须依靠更复杂的工具来兼得三者。
为了提高扩展性,可以采取以下方法:
1. 分片:网络分片、交易分片和状态分片。网络分片将很多区块链异构组成区块链集合,其中每一条链都可以有自己的加密货币和共识算法。交易分片技术将网络上的交易分成不同的碎片,由网络上的不同节点碎片处理。状态分片通过在不同用户之间建立一个双向通道,把区块链上的许多操作在链外进行管理,等完成链外操作后多方签名确认后,才将最终结果上链。
2. 隔离见证:将交易信息和见证信息分离。比特币通过这种方式提升了扩展性。
3. 增加区块大小:区块越大,每秒处理量就越高。但这在具体实践中是有问题的,因为网络无法快速处理庞大的文件,所以这种解决方案的能力是有限的。
4. 共识层面进行改进:pow改为pos,DPOS,PBFT等。POS是通过持有的token的数量来决定参与记账的概率,DPOS是通过选举权来选取信任的节点,PBFT是通过客户端发送请求给主节点,节点选择接受和不接受来确定共识。
若假设消息内容不会被篡改,无拜占庭将军问题,则可以采用RAFT或PAXOS等共识机制。RAFT是通过领导者选举和日志复制来实现共识,PAXOS是通过多数决定提案是否通过来实现共识。