主页 > 区块链 > 区块链“思前享后”:区块链架构与特点

区块链“思前享后”:区块链架构与特点

佚名 区块链 2021年12月15日

小元“前思后乐”为大家分享优质内容!————分享猿大家好:

我是Share Ape,Share是英文(SHARE),Ape是猿猴。你可以在微信公众号、微博、简书、掘金、今日头条、CSDN搜索“分享猿”找到我。我会等你哦!小元“前思后乐”为大家分享优质内容!今天小元给大家分享:区块链架构和特点

架构图

从架构设计的角度来看,区块链可以简单地分为三个层次,协议层、扩展层和应用层。其中,协议层又可分为存储层和网络层,两者相互独立但又不可分割。如图:

区块链_概览

协议层

所谓协议层是指最底层的技术。这一层通常是一个完整的区块链产品,类似于我们电脑的操作系统,维护网络节点,只提供Api供调用。通常官方会提供一个简单的客户端(俗称钱包),客户端钱包的功能也很简单,只能建立地址、验证签名、转账支付、查询余额等PC蛋蛋群吧!怎么找加拿大28群!!,这个级别是基础一切。搭建网络环境,搭建交易通道,建立节点奖励规则。至于你想交易什么,想做什么,它不能问,也不能问。一个典型的例子自然是比特币,还有各种次币,比如莱特币,而本书介绍的亦舒币也是如此。这一层是现阶段开发者聚集的地方,说明加密货币还处于起步阶段。

从使用的技术来看,协议层主要包括四个方面:网络编程、分布式算法、加密签名、数据存储技术。其中,网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑的实现。它可以用任何语言完成。加密签名技术简单易用(请阅读书中相关的加密解密文章,不建议随意玩,没有太多的编码逻辑),数据库技术也主要在使用层面,只有点对点网络的实现和并发处理是开发的难点,所以人们特别偏爱网络编程能力强、并发处理简单的语言。因此Nodejs开发区块链应用逐渐流行起来,Go语言也逐渐兴起。

在上面的架构设计图中,我进一步将这一层划分为存储层和网络层。数据存储可以相对独立,有更大的选择自由度,可以单独讨论。选择的原则无非是性能和易用性。我们知道,系统的整体性能主要取决于网络或数据存储的I/O性能。网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如比特币选择了谷歌的LevelDB。据说这个数据库读写性能不错,但是很多功能需要开发者自己实现。现在,困扰行业的一个主要问题是加密货币交易的处理量远不及当前的中心化支付系统(银行等)。除了I/O,还需要全方位的突破。

点对点网络的实现过程中必须用到分布式算法、加密签名等,所以自然是网络层的事情,这也是编码的重点和难点。《加密货币的Nodejs开发》全书基本分享了这部分内容。. 当然,也有点对点网络的单独实现,节点搜索、数据传输和验证的单独逻辑,将共识算法、密码签名和数据存储放在一起形成核心层。不管怎么组合,这两部分都是核心和底层,是协议层的内容。

区块链底层架构工程师_区块链架构包括_区块链架构与应用

扩展层

这个层面类似于电脑驱动,为了让区块链产品更加实用。目前有两种类型。一是各种交易市场,是法币兑换加密货币的重要渠道。实施简单,上手快,成本低,但也有风险。二是实现一定方向的扩展。例如,基于易书侧链加拿大28群哪里找呢?,可以为第三方发布商、论坛网站等内容生产商提供定制化服务。尤其值得一提的是大家最常听到的“智能合约”的概念,是典型的扩展级应用开发。所谓“智能合约”就是“可编程合约”,或者说“智能合约”,其中“智能”

扩展层使用的技术没有限制,可以包含很多。上面提到的分布式存储、机器学习、VR、物联网、大数据等都可以使用。编程语言的选择可以更加自由,因为它可以完全脱离协议层,而且编程语言也可以不同于协议层使用的开发语言。在开发方面,除了在交易时与协议层进行交互外,其他时间尽量不要与协议层的开发混在一起。这一层更接近于应用层,也可以理解为B/S架构产品中的服务器(Server)。这不仅使架构设计更加科学,

从这个角度来看,区块链可以用于开发任何类型的产品,而不仅仅是在金融行业。未来,随着底层协议的完善,任何需要第三方支付的产品都可以轻松使用区块链技术;任何需要确认、征信、溯源的信息,都可以借助区块链实现。我个人认为这个目标应该很快就能实现。

应用层

这个级别类似于计算机中的各种软件程序。是真正普通人可以直接使用的产品,也可以理解为B/S架构产品中的浏览器端(Browser)。这一级别的应用程序目前几乎是空白的。市场迫切需要这样的应用来引爆市场,形成真正的扩张趋势,让区块链技术快速进入普通百姓,服务大众。你使用的各种轻钱包(客户端)应该算是应用层最简单、最典型的应用。很快,易数将推出基于易数网络的文档协作工具。这是典型的应用层产品。

受限于目前区块链技术的发展,易数只能从协议层入手,面向应用层,同时为第三方开发者提供强大的扩展层支持。这样做不仅可以避免贪婪,还可以避免无法登陆。这是一条真正理性的发展路线。因为纯开发协议层或扩展层无法真正理解和验证应用层,会脱离现实,第三方开发者难以使用。如果只考虑应用层,市场上还没有真正扎实好用的协议层或扩展层产品。因此,我们要全力以赴,采取完全开源和开放的态度,利用社区的力量,共同做一件有意义的事情,

编程实现

很多小伙伴都习惯结合自己的技术背景来理解上面的架构设计。这里结合具体的编程语言,简单介绍几款产品,仅供参考。

区块链架构与应用_区块链架构包括_区块链底层架构工程师

(1)C/C++

这两种语言是不可逾越的。任何遇到瓶颈的开发基本上都会找到它们。自然,他们应该是最先被介绍的。同时,区块链技术的鼻祖比特币(协议层)是用C++开发的,迄今为止,还没有比比特币更成功的区块链产品。因此,无论你使用什么语言进行开发,在正式进入这个行业的过程中,你都应该先学习比特币。比特币官方客户端钱包使用Qt,第三方钱包使用Python语言开发。特别是很多第三方开发库(Api包)都是由Nodejs设计的。比特币的架构与上述架构设计基本一致。此外,因为共识算法使用了工作量证明机制(PoW:Proof of work),所以有一些特殊的挖矿过程。其他山寨币直接衍生自比特币这个分支,所以编程语言是一样的,具体的技术选型和技术实现可能会有所改进。例如,莱特币使用其他加密算法。

官方网站:

源代码库:

(2)Nodejs/Javascript

Nodejs平台强大的网络编程能力,以及js脚本语言的简洁和速度,在区块链领域自然是不可或缺的。亦舒就是这样一款区块链产品。亦舒币是它的协议层,采用著名的express开发框架,基于http协议开发。同时,它采用了授权权益证明机制(DPoS),算法的改进使得处理交易更轻,处理能力大大提高。提供强大的协作机制,促进数字出版和版权保护;扩展了侧链功能,可以基于它开发任何去中心化的应用,为专业作者、博主和开发者提供了很多便利。书”

官方网站:

源代码库:

(3)Python

区块链架构与应用_区块链架构包括_区块链底层架构工程师

如果你是Python语言爱好者,我建议你研究一下以太坊的Python实现。虽然因为The Dao事件引起了很多噪音,但从技术实现的角度来说还是值得借鉴和学习的。以太坊官方定位为分布式应用的开发和管理平台,其主要方向是“智能合约”,并为其定制了编程语言Solidity。以太坊的核心是以太坊虚拟机(EVM),它允许用户根据自己的意愿创建操作。以太坊提供了 Go、Java 和 Python 等多语言实现。基于python的实现主要包括三个部分:Pyethapp是客户端部分;pyethereum是核心库,实现了区块链等功能,以太坊模拟器和挖矿;pydevp2p是一个点对点的网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者的结合就是一个完整的区块链实现,后两个核心库共同构成了协议层。此外,go-ethereum 是 go 语言的完整实现;Ethereum(J) 是一个纯 Java 实现加拿大28群吧,它作为一个可以嵌入任何 Java/Scala 项目的库提供。在客户端,也有 Rust、Ruby、Javascript 等语言的实现。而后两个核心库共同构成了协议层。此外,go-ethereum 是 go 语言的完整实现;Ethereum(J) 是一个纯 Java 实现,它作为一个可以嵌入任何 Java/Scala 项目的库提供。在客户端,也有 Rust、Ruby、Javascript 等语言的实现。而后两个核心库共同构成了协议层。此外,go-ethereum 是 go 语言的完整实现;Ethereum(J) 是一个纯 Java 实现,它作为一个可以嵌入任何 Java/Scala 项目的库提供。在客户端,也有 Rust、Ruby、Javascript 等语言的实现。

官方网站:

源代码库:

(4)去

在多核时代,Go语言非常流行。它可以让您轻松地以同步方式实现高并发,尤其是在分布式系统和网络编程领域。它被广泛使用。因此,在区块链开发领域,也有很多使用Go语言的项目。其中,由Linux基金会牵头的HyperLeger(HyperLeger),存储库名称为Fabric,就是其中之一。该项目试图为新一代交易应用创建一个开放的分布式账本标准,支持许可的区块链(这种方法可能无法重现比特币强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机之上。部署环境可以自建,也可以直接部署在BlueMix上。部署方式可以docker化,支持Go和JavaScript开发智能合约。它使用PBFT分布式算法,在网络编程中使用gRPC进行P2P通信,使用Protocol Buffer对需要传输的数据结构进行序列化。在架构设计上,Fabric 可能与比特币等区块链产品有所不同,但上述基础组件还是不可或缺的。

官方网站:

源代码库:

其他编程语言,如C#等,也有具体的例子,这里就不一一列举了。总之,对于不同的编程语言,在具体的编码或者架构设计上可能会有差异甚至很大的差异,但是协议层所使用的技术并没有太大的变化。其中,网络编程是重点和难点。他们中的大多数都没有现成的框架。它们是使用编程语言本身提供的库设计和开发的。所以比较低级,比较考验开发者的编码能力。

知识图谱

区块链架构与应用_区块链架构包括_区块链底层架构工程师

通过上面的分析,我们已经可以了解什么是区块链以及如何实现它。对了,把里面的编程技术知识梳理一下,自然会清晰很多。

区块链库

根据我个人的理解,我将区块链相关的知识分为以下5个方面:

(1)基础知识

区块链是一项新技术,与之相关的是其背后的大量新概念、新理论。这些知识虽然没有直接体现在代码中,但是是理解区块链、掌握区块链技术的基础知识。因此,它应该成为区块链技术不可或缺的一部分。这部分从基本概念到工作原理的描述,可以涵盖区块链的所有基础知识。

(2)技术实现

区块链是一种技术,但是从上面的分析可以看出,它应该是一个架构应用,架构的实现应该是我们知识库的核心。可以看到,对于任何区块链产品PC蛋蛋QQ群薇!!,协议层都必须包括四个部分:点对点网络、加密签名、数据存储和分布式算法。应用层还必须提供钱包、客户端浏览器等基础应用。. 因此,将这部分分开是合理的。

在扩展层,区块链技术可以连接各种应用区块链架构与应用,例如:金融、物联网、网络安全、版权保护、电子商务等,很多现有的技术都可以在这里使用。但是,如何与区块链融合,如何实现跨行业使用,自然是这部分内容研究的课题。因此,此处列出或涉及的技术应视为技术实现的重要组成部分。

区块链架构与应用_区块链架构包括_区块链底层架构工程师

(3)开发环境

区块链是多种技术的结合,有其自身的复杂性。个别应用程序严重依赖于开发环境。开发工具和环境搭建是开发者快速上手的重要内容。

(4)项目实践

据说,短短几年间,全球区块链产品出现了数千种,其中不乏创新应用。一些优秀的开源产品和项目实践是最好的学习和研究资料。

(5)开发文档

不用说,每个产品也会有自己的开发文档。另一个是刻意的开发者编译的一些资源可以帮助我们节省大量的查询时间。

在考虑这个知识体系的过程中,我主要考虑的是读者能否通过按照这些标签查看文章,快速掌握区块链技术,最终开始开发和实现一个区块链产品。此外,它还刻意避免使用与特定编程语言和特定领域相关的词汇。唯一能区分的就是这些节点下对应的文章标签。因此,这些分类显得非常中性。我也考虑过使用比特币、山寨币、智能合约、数字资产、智能资产等特定领域作为分类方法,但恐怕会限制读者的思考。同时,随着区块链的发展,这张地图也会不断的进行修改。这里,我想上诉。希望看过这篇文章的朋友能提出宝贵意见,让我们把这张关于区块链的知识分类图更加科学合理,使用起来更加方便。

总结

在本文中,我们描述了区块链技术基础设施。需要再次强调的是区块链架构与应用,这只是一种实现方式,并不是所有的区块链产品都一样。我们也期待更多的创新。我相信它一定会出现。编程实现列出了几种编程语言及其典型产品。由于协议层技术比较低级,需要介绍或讨论的现成框架并不多。同时,具体的技术细节也没有在几行中明确列出。幸运的是,这些产品都是开源产品。您可以根据自己的技术背景进一步查看相应的产品源代码,很快就能了解其中的奥秘。

小远有一个梦想,就是用通俗的语言告诉大家关于区块链的事情。从博客文章开始!从视频开始!从一本书开始!如果你想让你的团队了解区块链!让您的公司了解区块链!让您的学生了解区块链!可以私信小猿或添加小猿微信与小猿预约,带你走进区块链世界!如果你是西安的朋友,小远可以有空来你公司给你讲解一下!只赚人气,不赚钱!!哈哈!!

更多内容请关注简书、微博、今日头条、掘金、CSDN。搜索“分享猿”就可以找到小猿了!!!

参考文章

广告位
标签: 区块链   编程语言   比特币