他山之石,可以攻玉区块链底层的通用架构

他山之石,可以攻玉区块链底层的通用架构

我将站在山顶,看着山脉和小山。在进入底层区块链的开发之前,我们需要了解底层区块链的总体架构是如何设计的,并从上到下检查区块链的底层结构,并且要清楚以便自信。

其他山脉的石头也可以用作玉石。在介绍底层区块链的一般架构之前,我们不妨先从对比特币以太坊和Hyperledger架构的解释开始。

比特币架构

根据中本聪(Satoshi Nakamoto)的论文《比特币:对等电子现金系统》中对比特币系统的描述,我们可以整理出下图所示的比特币系统体系结构。

比特币系统架构

如图所示,比特币系统分为6层,从下至上分别是存储层,数据层,网络层,共识层,RPC层和应用程序层。

其中,存储层主要用于在比特币系统的操作中存储日志数据和区块链元数据,而存储技术主要使用文件系统和LevelDB。

数据层主要用于处理比特币交易中的各种数据,例如将数据打包成块,将块保持在链状结构中,对块的内容进行加密和哈希处理以及确定块的内容。添加数字签名和时间戳,将交易数据构建到Merkle树中,并计算Merkle树的根节点的哈希值。

由块组成的链可能是分叉的。在比特币系统中,节点始终将最长的链视为正确的链,并在此后继续添加新的块。

网络层用于在比特币底部构建P2P网络,支持动态加入和离开多个节点,有效管理网络连接,并为比特币数据传输和共识提供基本的网络支持服务。

共识层主要采用PoW(工作量证明)共识算法。在比特币系统中,每个节点都会连续计算一个随机数(Nonce),直到找到满足要求的随机数为止。在一定时间内,第一个找到合格随机数的人将有权打包该块,从而建立了工作量证明机制。从PoW的角度来看,您发现PoW和分布式锁具有相同的作用和相同的作用吗?

RPC层实现RPC服务,并为客户端提供JSON API,以访问区块链的基础服务。

应用程序层主要承载各种比特币应用程序,例如比特币开源代码中提供的比特币客户端。该层主要用作RPC客户端,以通过JSON API与基础比特币层进行交互。此外,比特币钱包和衍生应用程序都建立在应用程序层上。

以太坊体系结构

根据以太坊白皮书“下一代智能合约和去中心化应用平台”的描述,以太坊架构如下图所示。

以太坊体系结构

如图所示,以太坊体系结构从下到上分为7层,分别是存储层,数据层,网络层,协议层,共识层,协定层和应用层。

存储层主要用于在以太坊系统运行中存储日志数据和区块链元数据,存储技术主要使用文件系统和LevelDB。

数据层主要用于处理以太坊事务中的各种数据,例如将数据打包为块,将块维护为链式结构,对块的内容进行加密和哈希处理以及确定块的内容。添加数字签名和时间戳,将交易数据构建到Merkle树中,并计算Merkle树的根节点的哈希值。

与比特币的不同之处在于,以太坊引入了交易和交易池的概念。交易是指一个帐户将签名的数据包发送到另一帐户的过程。事务池存储由节点验证的事务,并将这些事务放置在矿工挖出的新块中。

以太坊事件是指以太坊虚拟机提供的日志界面。调用事件时,相应的日志信息将保存在日志文件中。

像比特币一样,以太坊系统也基于P2P网络。网络中的每个节点都具有客户端角色和服务器角色。

协议层是以太坊为相互调用系统模块提供的协议支持,主要包括HTTP,RPC协议,LES,ETH协议,Whipser协议等。

以太坊基于HTTP客户端实现HTTP支持,并实现HTTP方法(例如GET和POST)。当外部程序通过JSON RPC调用以太坊的API时,它们需要使用RPC(远程过程调用)协议。

耳语协议用于DApp之间的通信。

LES的全名是Light Ethereum Sub-protocol,它允许以太坊节点在同步获取区块时仅下载区块头,然后在需要时获取区块的其他部分。

共识层在以太坊系统中有两种共识算法,即PoW(工作量证明)和PoS(权益证明)。

合约层分为两层。底层是EVM(以太坊虚拟机),上层智能合约在EVM中运行。智能合约是在以太坊上运行的代码的总称。智能合约通常包含两个部分:数据和代码。智能合约系统对协议或合同进行编码,并由特定事件触发以触发执行。因此,原则上,它适用于安全性,信任和长期协议或合同方案。在以太坊系统中,智能合约的默认编程语言是Solidity,对于学习JavaScript语言的读者来说,学习Solidity很容易。

应用程序层包括各种衍生应用程序,例如DApp(去中心化应用程序)和以太坊钱包。对于开发人员来说,它是目前最活跃的层。

超级账本架构

Hyperledger是Linux基金会于2015年发起的一个开源项目,旨在促进区块链数字技术和交易验证。该项目的目标是促进跨行业开发以及区块链和分布式会计系统的开发。合作。

当前,该项目最著名的子项目是Fabric,由IBM领导。根据官方网站的描述,Hyperledger Fabric是基于模块化体系结构的分布式计费解决方案平台,具有高度的灵活性,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性。

Hyperledger Fabric提供了独特的灵活和可扩展架构,使其与其他区块链解决方案有所不同。我们必须基于经过全面审查的开源架构为区块链公司的未来做好计划。 Hyperledger是快速构建企业级应用程序的起点。

当前,Hyperledger Fabric经历了体系结构的两个主要迭代,即0.版本6和1.版本0​​。其中,0. 6版本的体系结构相对简单,Peer节点在其中集成了许多功能。一是模块化和可扩展性差。 1.版本0​​已将0.版本6的对等节点功能模块化。最新的1. 1版本目前处于Alpha阶段。

在1. 0版本中,对等节点可分为对等节点和订购者节点。对等节点用于维护状态(状态)和分类帐(分类帐),而订购者节点负责就分类帐中的每个交易达成共识。

身份验证节点(背书对等体)也被引入到系统中。身份验证节点是一种特殊类型的对等节点,负责同时执行链码和事务身份验证(认可交易)。

Hyperledger Fabric的分层体系结构设计如下所示。

Hyperledger Fabric分层体系结构设计

Hyperledger Fabric可以分为7层,分别是存储层,数据层,通道层,网络层,共识层,协定层和应用程序层。

存储层主要存储分类帐和交易状态。分类帐的状态存储在数据库中,并且存储的内容是在所有交易过程中出现的键值对信息。例如,在交易处理的过程中,可以通过调用链码来执行交易来改变状态数据。状态存储数据库可以使用LevelDB或CouchDB。 LevelDB是系统的默认内置数据库,而CouchDB是可选的第三方数据库。区块链的分类帐存储在文件系统中。

数据层主要由三部分组成:事务,状态和分类帐。

其中有两种交易类型:

状态对应于交易数据的更改。在Hyperledger Fabric中,对区块链的状态进行版本控制,由键/值存储(KVS)表示。关键字是名称,值是任何文本内容,版本号标识此记录的版本。这些数据内容由链代码通过PUT和GET操作进行管理。如存储层中所述,状态被永久存储在数据库中,状态更新由文件系统记录。

分类帐提供所有成功状态数据更改和更改尝试失败的历史记录。

分类帐是由订购服务构建的完全订购的交易区块组成的哈希链。

分类帐可以存储在所有对等节点上,也可以存储在几个订购者节点上。此外,分类帐还可以重做所有交易的历史记录并重建状态数据。

通道层是指通道(Channel),它是一种Hyperledger Fabric数据隔离机制,用于确保交易信息仅对交易参与者可见。每个通道都是一个独立的区块链,因此多个用户可以共享同一个区块链系统,而不必担心信息泄漏。

网络层用于为区块链网络中的每个通信节点提供P2P网络支持,是确保区块链分类帐一致性的基本服务之一。

在Hyperledger Fabric中,节点是区块链的通信实体。 Node只是一种逻辑功能,多种不同类型的Node可以在同一台物理服务器上运行。节点共有三种类型,分别是客户端,对等节点和订购服务。

其中,客户端用于将用户的交易请求发送到区块链网络。

对等节点负责维护区块链分类帐。对等节点可以分为授予对等节点和授予对等节点。终止对等方对交易进行身份验证。认证逻辑包括:验证交易的有效性和对交易进行签名;以及提交对等方接收打包的块并将其写入区块链。与节点类似,对等也是逻辑概念。结束对等端和提交对等端可以同时部署在同一台物理计算机上。

订购服务将接收交易信息,将其分类并打包成块,然后将其写入区块链,最后将结果返回给提交的同伴。

共识层是基于共识算法(例如Kafka和SBTF)实现的。 Hyperledger Fabric使用Kafka对事务信息进行排序,提供高吞吐量,低延迟的处理能力,并支持集群内的节点容错能力。与Kafka相比,SBFT(简单拜占庭算法)可以提供更可靠的排序算法,包括对节点故障和一定数量的恶意节点的容忍度。

合约层是Hyperledger Fabric的智能合约层区块链,默认情况下由Go语言实现。区块链运行的程序称为chaincode以太坊,它保存状态和分类帐数据,并负责执行交易。在Hyperledger Fabric中,只能提交批准的交易。事务是对链代码上的操作的调用,因此链代码是核心内容。同时,还有一种特殊的链代码,称为系统链代码,用于管理功能和参数。

应用程序层是Hyperledger Fabric的各种应用程序。

此外,由于它是一个联盟链,因此Hyperledger Fabric中有一个模块专门用于管理联盟中的成员,即成员资格服务提供程序(MSP),MSP用于管理成员身份验证信息,客户端和peers该节点提供成员资格授权服务。

区块链一般架构

到目前为止,我们已经了解了比特币,以太坊和Hyperledger的体系结构设计。根据不同的使用场景,这三种设计有所不同,但是我们仍然可以抽象出一些共同点。我们可以基于这些共同点设计企业,即企业联盟链的基础架构。

本文提供的联盟链的基础体系结构如下图所示。

联盟链的基础架构

我们将区块链的底层分为6层,从下到上分别是存储层以太坊,数据层,网络层,共识层,激励层和应用层。

存储层主要存储事务日志和与事务相关的内容。其中,事务日志是基于LogBack实现的。事务的内容由内置的SQLite数据库存储,并且可以基于JPA实现对SQLite数据库的读写。链上的交易元数据信息由RocksDB或LevelDB存储。

数据层由块和块“链”(块的链结构)组成。其中,该块还将涉及将事务列表存储在Merkle树中以及计算根节点的哈希值。交易的内容也需要加密。由于联盟链中有多个节点,为了有效管理节点数据并确保数据安全,建议为不同的节点分配不同的公钥和私钥进行加密。

网络层主要为共识和数据通信提供基础支持。在区块链中,每个节点都是数据的发送者和接收者。可以说每个节点既是客户端又是服务器,因此需要基于长连接来实现。我们可以在本地基于WebSocket建立持久连接,也可以基于第三方工具包实现持久连接。

共识层使用PBFT(实用拜占庭容错)共识算法。与公共链的挖掘机制不同,联盟链更加关注每个节点信息的统一,因此可以节省挖掘并直接达到共识的目标。

激励层主要是硬币和代币的发行和流通。在公共链中,激励是公共链的灵魂。但是在财团链中没有必要。

应用层主要是联盟链中各种产品的登陆。通常,联盟链的应用层是面向行业的,可以解决行业内的问题。

Java Edition Consortium Chain的部署体系结构如下图所示。

Java版本的财团链的部署体系结构

联盟链由一个超级节点和几个普通节点组成。除了普通节点的功能外,超级节点还具有在联盟中实施成员管理,权限管理和数据监视的能力。因此,与完全分散的公共链相比,联盟链是部分分散的,或者联盟的“链”是分散的,但是联盟链的管理是集中的。

建议整个开发环境都基于Spring Boot 2. 0来实现。基于Spring Boot开发,您可以保存许多xml配置文件,这可以大大简化项目中POM文件配置的复杂依赖性。 Spring Boot还提供了各种启动器,可以实现自动配置并提高开发效率。

本文转载自互联网,如有侵权,联系删除

相关推荐

【外汇课堂】什么样的币是有价值的?

【外汇课堂】什么样的币是有价值的?

【外汇课堂】什么样的币是有价值的? 在我先前关于华尔街投资大师的文章中,分享他们的投资经验时,他们都谈到了持有有 价值 的股票。将此概念引入数字货币意味着可以长期持有

2021-09-03 118

他山之石,可以攻玉区块链底层的通用架构

他山之石,可以攻玉区块链底层的通用架构

他山之石,可以攻玉区块链底层的通用架构 我将站在山顶,看着山脉和小山。在进入底层区块链的开发之前,我们需要了解底层区块链的总体架构是如何设计的,并从上到下检查区块链

2021-09-02 184

2020年去中心化加密货币交易所的交易额信息

2020年去中心化加密货币交易所的交易额信息

2020年去中心化加密货币交易所的交易额信息 对于 加密货币 行业而言,2020年是非常重要的一年。随着比特币价格飞涨并达到历史新高,这个新兴行业终于开始受到主流关注。同时,以

2021-09-01 162

发布评论

点击我更换图片