《迅雷链精品课》第二课:区块链核心技术框架
全新架构名为区块链技术,它不是凭空出现的一种技术,而是把分布的网络、密码学以及共识机制等好多成熟技术整合起来形成的架构。掌握区块链知识的关键之处在于理解它的整体架构。平常情况下,我们剖析它可以从两个维度入手,一个维度是“五层结构”,也就是数据层、网络层、共识层、合约层、应用层,另一个维度是在这个基础上提出来的“三层扩展模型”,即Layer 0、Layer 1、Layer 2。
首先有这么一点,在数据层,核心要点在于解决数据的存储以及不可篡改的这一问题。然后呢,常见的存储方式涵盖了文件存储、关系型的数据库像是 MySQL,还有非关系型的数据库。接着是,区块链凭借区块内交易数据生成的默克尔根也就是 Merkle Root,达成了任何微小的交易改动都会被马上察觉,达成了数据的不可篡改以及简易支付验证功能。最后,在数据模型设计这方面,比特币开创了基于交易的数据模型,也就是 UTXO 即未花费交易输出。每一笔交易,皆由输入也就是资金来源以及输出也就是资金去向所构成,所有的交易,如同链条那般,借由UTXO串联起来,致使每一枚比特币的流转路径,均可追溯。而以太坊,为了能够支持复杂的通用应用,采用了基于账户的模型,能够像银行系统那样,直接去查询某个账户的当前余额或者智能合约状态,极大地提高了应用的开发效率。
负责把那些分散的众多节点联成一个整体的是网络层,也就是P2P网络。比特币的P2P网络是构建于TCP协议之上的,其节点发现主要依靠DNS种子节点以及硬编码的种子节点,目的是保证网络在任何情形下都能够实现互联。以太坊的P2P网络采用的是Kademlia算法,简称为Kad,其节点发现是基于UDP协议的币圈合约,一旦找到邻近节点,就会切换到TCP协议来进行稳定的数据传输。
一个被称作共识层的,是区块链的那个“核心关键部分”,它的职责在于,去协调散布在全网各处的众多节点,以此来确保,数据记录能够达成那种一致性状态。在传统的分布式系统当中情况有所不同,因为所有节点都是由单一机构进行管理的,所以通常而言,仅仅需要应对节点出现崩溃状况时的“崩溃容错”(CFT)这种情况就可以了。然而呢,在那种去中心化的公有链环境里,任何一个方面都具备提供节点的可能性,并且在这一系列节点当中,很有可能存在着一些试图破坏规则的不良节点,所以呢,就务必要采用一种能够去容忍类似这些行为的“拜占庭容错”(BFT)算法才行。
区块链的可编程特性是由合约层赋予的,一个早在1994年就被提出的概念,智能合约,因缺乏可信执行环境而当初没有落地,去中心化且不可篡改的区块链,刚好为智能合约提供了理想的运行土壤,把合约代码写入区块链后,其执行过程具备透明性、结果不可被篡改并且全程能够追溯,能有力防止违约情况发生,以太坊率先实现了图灵完备的智能合约,支持开发者构建去中心化应用(DApp)。DApp一般是借助Web前端,与运行于以太坊节点之上的智能合约,经由JSON-RPC界面达成通信来达成的。其他像是Hyperledger Fabric等联盟链平台,尽管不供给数字货币,然而其智能合约同样能够达成繁杂的商业逻辑。
对接区块链世界跟现实应用的桥梁是应用层以及接口层,不管是比特币节点还是以太坊节点,均给出了丰富的JSON-RPC或者gRPC接口,开发者能够运用Go、Java、Python等主流语言便捷地接入区块链,查询数据集或者发起交易。
针对于区块链所存在的可扩展性方面问题,社区提出了明晰的“三层扩展模型”,Layer 0是基础设施层,涵盖网络、存储以及计算资源,这层高处在去中心化的公链里难以被单个一方予以控制,Layer 1是链上改进,也就是针对区块链自身的数据层、网络层、共识层或者合约层实施优化,比如改进共识算法或者调整区块数据结构。第2层属于链下方面的改进,在不对主链进行改动的情形下,借助闪电网络、侧链、状态通道等相关技术来分担主链承受的压力,虽然这些方案有可能会引入中心化模块,不过在当下是提升性能的最为有效并且最容易实施的途径。
新兴一种的分布式体系架构,是区块链,借助精巧地整合现有技术,缔造出了信任传递的全新模式。以这个五层构造或三层架构为框架,我们不但能够系统地把握其基础内容,更能够凭借此剖析接连不断的新项目,透过表象洞察实质,辨认其真正的技术创新之处。
币圈合约带单-丽金财经




