书接上文,我们继续分享区块链的单项技术发展。
数据层发展
区块链的数据随着时间增加而不断增加,这将导致两个问题。一是新节点的准入门槛增加,因为其海量的历史数据将会占用很大的存储空间,而对存储空间的高需求将许多没有高性能设备的个人用户拒之门外。二是可扩展性与安全性的冲突,如果存在大量的非验证节点,那么在进行验证时需指定全节点,这将导致安全性下降,但又不可能要求所有的账户都是存储全部交易记录,一方面是不现实,另一方面是会导致数据同步时间过长。因此,目前的数据层的发展方向为开发能完成验证操作但无须存储完整状态数据的新型节点,但仅有验证功能的新型节点仍无法避免因出块节点高门槛而带来的中心化趋势,未来可能需要在出块节点的轻量化上进行进一步研究。
目前含有验证功能的轻量节点有:
· 轻节点
轻节点的专业技术名称为无状态客户端,其与全节点是一组相对应的概念。全节点就是传统意义上的区块链节点,链中的每个区块都包含区块头、交易数量、交易列表三部分,而轻节点为了保证数据轻量化,只存储区块头,不存储全量的交易列表等信息。在新块出现时,轻节点会被额外提供新块中全部所需访问状态,在收到数据后轻节点通过默克尔证明来判断一笔交易是否在现在的区块链交易列表中,实现交易的验证,大幅降低了节点对存储空间的要求,因此轻节点能够运行在小容量的个人PC等终端设备上。当前的验证工作有了一些新进展,以太坊表示可以利用多项式承诺来代替默克尔树,好处是可以降低验证成本。
· 简洁区块链
新的加密货币协议Coda提出了一种比轻节点更加轻量的具有验证功能的节点,支持在移动端运行。这种简洁区块链节点只需要拥有当前的哈希默克尔根就可以通过一种密码学证明对交易进行快速验证。
共识层发展
近年来共识机制的不断进步促进了区块链的发展,是区块链能够被迅速和广泛应用的重要支撑。最开始流行的工作量证明机制(PoW)到权益证明机制(PoS)都是为保证电子货币的安全发行而设计的,在性能与拓展性方面的考虑较少。之后出现的验证池pool和拜占庭容错PBFT共识机制在性能上有了很大的改进,但相应的,在去中心化上做了让步。共识机制演化的愈发复杂,若要逐一解释清楚并非易事,不在密码学技术上做过多描述,仅介绍各类共识算法的大致特点。
合约层发展
合约层的智能合约是区块链在实际应用中实现自动交易功能非常重要的一环,智能合约的发展方向主要在于运行环境的突破,因为运行环境与区块链整体性能的约束,目前智能合约在实际应用仅能发挥”合约”的作用,而离实现”智能”还有一定距离。
区块链中的智能合约概念最早被以太坊提出,智能合约以代码形式写入区块链,在之后的交易中依靠条件语句触发合约规则的执行。但智能合约的执行会为整个区块链网络带来一定的安全隐患,因此智能合约一般会在沙箱环境中运行,目前以太坊的EVM与超级账本的Docker容器即是区块链中的沙箱环境。另外智能合约的编程语言种类也逐步增加,以太坊目前仅支持特定的Solidity语言,而后的超级账本还支持golang、JAVA、Python等语言。
目前智能合约还无法在高隐私保护或是跨链等复杂场景中应用,主要因为其受制于区块链整体性能的约束,而绕开区块链性能约束的办法主要为通过实现合约层与共识层的解绑,使智能合约运行在可信的硬件环境总,共识层仅记录智能合约执行结果,不过这类解决方案的安全性等问题还在持续的讨论中。
应用层发展
作为区块链的展示层,应用层中的应用场景一般就是与用户直接接触的业务场景。应用层有点像是平常的APP、web网页等前端应用概念,应用层将请求数据发送给区块链网络,在进行完数据处理之后,区块链网络又会将数据结果返回给应用层,使其与用户进行交互。
应用层的发展就是前台业务与技术的发展,几乎不属于区块链技术的范畴,因此不做过多讨论。