前言
区块链是之前各种技术的结合后一种新的应用模式,包括了数学函数、加密技术、分布式共识算法、P2P网络等一系列技术体系,是当下热门的技术之一。单纯从技术的角度解释区块链,是一种分布式数据存储记录的模式,去中心化的节点记录方式,网络中各个节点共识后记录数据。
架构图
从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。如下图所示:
1、应用层
这个层面可以理解为B/S架构的产品中的浏览器端(Browser)。主要是区块链的展示层,包括各种应用场景和案例。如以太坊使用的是 truffle 和 web3-js。区块链的应用层可以是移动端,web端,或是融合进现有的服务器,把当前的业务服务器当成应用层。这个层级的改进貌似也给区块链可扩展提供了潜在的新方向,但结构上来看貌似并无直接联系。
2、扩展层
这个层面与应用层更加接近,也可以理解为B/S架构的产品中的服务端(Server)。包含智能合约、各种侧链应用以及各种数据的存储和分享。
智能合约主要是指各种脚本代码、算法机制以及智能合约等。第一代区块链严格讲这一层是缺失的,所以它们只能进行交易,而无法用于其他的领域或是进行其他的逻辑处理,合约层的出现,使得在其他领域使用区块链成为了现实,以太坊中这部分包括了EVM(以太坊虚拟机)和智能合约两部分。这个层级的改进貌似给区块链可扩展提供了潜在的新方向,但结构上来看貌似并无直接联系。目前还没有比较成型的产品,但不可否认,这将是区块链技术重要的发展方向。
扩展层使用的技术没有限制,可以包括分布式存储、机器学习、VR、物联网、大数据等等。编程语言的选择上,可以更加自由,因为可以与协议层完全分离,编程语言也可以与协议层使用的开发语言不相同。
从这个层面来看,区块链可以架构开发任何类型的产品,不仅仅是用在金融行业。在未来,随着底层协议的更加完善,任何需要第三方支付的产品都可以方便的使用区块链技术;任何需要确权、征信和追溯的信息,都可以借助区块链来实现。
3、协议层
协议层可以分为存储层和网络层。
其中,区块链网络本质是一个P2P(Peer-to-peer点对点)的网络,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,可以无需中间环节和服务器的介入。每一个节点既接收信息,也产生信息,节点之间通过维护一个共同的区块链来同步信息,当一个节点创造出新的区块后便以广播的形式通知其他节点,其他节点收到信息后对该区块进行验证,并在该区块的基础上去创建新的区块,从而达到全网共同维护一个底层账本的作用。所以网络层会涉及到P2P网络,传播机制,验证机制等的设计,显而易见,这些设计都能影响到区块信息的确认速度,网络层可以作为区块链技术可扩展方案中的一个研究方向。
区块链的底层数据是一个区块+链表的数据结构,它包括数据区块、链式结构、时间戳、哈希函数、Merkle树、非对称加密等设计。其中数据区块、链式结构都可作为区块链技术可扩展方案对数据层研究时的改进方向。