首页 最新资讯正文

【币安Binance】如果你还不懂区块链,那就看看这篇基础

2020bian 最新资讯 2020-05-30 16:05:25 811 0
由imfly 前言 作为建筑设计的一种实现,区块链与基础语言或平台有很大的不同。区块链是加密货币背后的技术,也是与虚拟现实虚拟现实同等的最热门技术之一。它本身并不是一种新技术,就像Ajax一样,所以它可以说是一种技术架构。因此,我们将从建筑设计的角度来谈区块链的技术实现。 不管你擅长什么编程语言,你都可以参考这个设计来实现一个区块链产品。同时,梳理相关的知识图谱和体系,帮助大家系统地学习。 基本概念 区块链的概念最近很流行。它来源于比特币等加密货币的实现,但目前,这一技术已逐步应用于各个领域。 什么是区块链技术?为了对这个问题有一个感性的理解,我们可以用谷歌地球的例子来做一个类比。Ajax并不是一项新技术,但当它被结合起来时,它使谷歌地球成为一种产品。同样,区块链并不是一项新技术,但当加密解密技术和P2P网络相结合时,比特币诞生了。 当学习Ajax技术时,技术人员,尤其是网络开发工程师,首先被谷歌地球的酷效果所吸引。现在,历史重演,许多人被比特币的疯狂发展所吸引,开始研究它背后的技术——区块链。 区块链最初是比特币等加密货币存储数据的独特方式。它是一种自引用数据结构,用于存储大量交易信息。每条记录从后向前依次链接。它具有公开、透明、不篡改、便于追踪的特点。 事实上,这一特性直接反映了比特币的整体特征,因此用区块链来总结加密货币背后的技术实现是非常直观和恰当的。区块链是一项技术。加密货币是由它开发和实现的一种产品(包括代币和没有代币的区块链产品),不能等同或混淆。与加密货币相比,区块链的名字比令牌更具视觉化、技术性和非政治化。它作为一种技术更适合研究和推广。 因此,当我们单独谈论区块链时,我们指的是区块链技术,这是一种用于具有开放、透明和可追踪数据的产品的架构设计方法,可以被视为广义的区块链。当在具体产品中提到区块链时,它可以指类似比特币的数据存储方法,可能是数据库设计或文件设计,这可以被视为狭义的区块链。 广义的区块链技术必须包括四个方面:点对点网络设计、加密技术的应用、分布式算法的实现和数据存储技术的使用。其他方面可能涉及分布式存储、机器学习、虚拟现实、物联网、大数据等。狭隘的区块链只涉及数据存储技术、数据库或文件操作等。 本文中的区块链指的是广义的区块链。 建筑图 从架构设计的角度来看,区块链可以简单地分为三个层次:协议层、扩展层和应用层。其中,协议层可分为存储层和网络层,两者相互独立但又密不可分。如图所示: 协议层 所谓的协议层指的是最低的技术。这个级别通常是一个完整的区块链产品,类似于我们计算机的操作系统,它维护网络节点,只提供调用的API。 通常,政府会提供一个简单的客户(通常称为钱包)。这个客户端钱包功能也很简单。它只能建立地址、验证签名、转移支付、检查余额等。这个层次是一切的基础。它建立了一个网络环境,建立了交易渠道和节点奖励规则。至于你想交易什么和你想做什么,它不问。一个典型的例子是比特币,当然,还有各种各样的两种代币,比如莱特,等等,以及本书中介绍的上亿图书硬币。这一层是开发人员在这一阶段聚集的地方,这表明加密货币仍处于初级阶段。 从所采用的技术来看,协议层主要包括四个方面:网络编程、分布式算法、加密签名和数据存储技术。其中,网络编程能力是每个人选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑的实现,可以用任何语言实现。加密签名技术使用直接简单(请参考书中相关的加密和解密文章,不建议自由播放,也没有太多的编码逻辑)。也主要使用数据库技术。只有点对点网络和并发处理的实现才是开发的难点。因此,人们特别喜欢网络编程能力强、并发处理简单的语言。因此,Nodejs开发了区块链应用程序,并逐渐变得更加流行,Go语言也逐渐兴起。 在上面的架构设计中,我进一步将这一层分为存储层和网络层。数据存储可以相对独立,有更大的选择自由,可以单独讨论。 选择的原则无非是性能和易用性。我们知道系统的整体性能主要取决于网络或数据存储的输入/输出性能。网络输入/输出优化空不大,但本地数据存储的输入/输出可以优化。例如,比特币选择了谷歌的LevelDB,据说它具有良好的读写性能,但许多功能需要开发人员自己来实现。目前,困扰行业的一个主要问题是加密货币交易的处理能力远远低于集中支付系统(银行等)的处理能力。)现在。除了输入/输出,所有方面都需要突破。 分布式算法、加密签名等。应该在实现点对点网络的过程中使用,所以这自然是网络层的事情,也是编码的重点和难点。Nodejs在《开发加密货币》一书中分享的内容基本上就是这一部分的内容。 当然,点对点网络也有不同的实现方式,它们将节点搜索、数据传输和验证等逻辑分开,同时将一致性算法、加密签名、数据存储和其他操作放在一起形成核心层。不管它们如何组合,这两个部分都是核心和底层部分,它们是协议层的内容。 扩展层 这个级别类似于一台电脑的驱动程序,使区块链的产品更加实用。 目前,有两种类型,一种是各种交易市场,它们是将法国货币兑换成加密货币的重要渠道。它们容易实现,进来快,成本低,但也有风险。 第二个是向某个方向的扩展,例如为第三方出版组织、论坛网站和其他基于十亿本书侧链的内容制作者提供定制服务。尤其值得一提的是“智能合同”的概念,这是每个人听到最多的。这是扩展级别的典型应用程序开发。所谓的“智能合同”是“可编程合同”或“合同智能”。其中,“智能”就是执行中的智能。也就是说,当某些条件得到满足时,合同自动执行,如自动转让证券、自动付款等。目前,还没有相对成型的产品。然而,不可否认,这将是区块链科技的一个重要发展方向。 对扩展层使用的技术没有限制,扩展层可以包括许多技术,如分布式存储、机器学习、虚拟现实、物联网、大数据等。编程语言的选择可以更加自由,因为它可以与协议层完全分离,并且编程语言也可以不同于协议层使用的开发语言。 就开发而言,除了在交易过程中与协议层交互之外,尽量不要在其他时间与协议层的开发相混淆。这一层更接近于应用层,也可以理解为一个B/S架构产品中的服务器。这不仅使体系结构设计更加科学,使区块链数据更小,网络更独立,而且保证了扩展层的发展不受限制。 从这个角度来看,区块链可以被构造成开发任何类型的产品,而不仅仅是在金融业。将来,随着底层协议的改进,任何需要第三方支付的产品都可以轻松使用区块链技术。任何需要权力确认、信用调查和追踪的信息都可以通过区块链实现。就我个人而言,我认为这个目标应该很快实现。 应用层 这个级别类似于计算机中的各种软件程序。这是一个普通人真正可以直接使用的产品,也可以被理解为具有B/S架构的产品中的浏览器。目前,这个级别的应用几乎是空白色。市场迫切需要这种应用来引爆市场,形成真正的扩张趋势,让区块链科技能够迅速进入普通百姓,服务大众。 每个人使用的各种轻量级钱包(客户端)应该被视为应用层中最简单和最典型的应用。很快,十亿图书将推出一个基于十亿图书网络的文档协作工具,这是一个典型的应用层产品。 受当前区块链技术发展的限制,亿本书只能从协议层开始,指向应用层,同时为第三方开发者扩展该层提供强有力的支持。这是一条真正理性的发展道路,因为它不仅能避免贪婪,还能避免跌倒在地。因为纯开发协议层或扩展层不能真正理解和验证应用层,它将脱离实际,使第三方开发人员难以使用它。如果只考虑应用层,那么市场上就没有真正坚固且易于使用的协议层或扩展层产品。 因此,我们必须全力以赴,采取完全开放的态度,通过社会的力量,共同做一件有意义的事情。这也被认为是对中国区块链技术的发展做出了一定的技术积累和微薄的贡献。 程序设计实现 许多小合作伙伴习惯于结合自己的技术背景来理解上述架构设计。这里,结合具体的编程语言,简单介绍几种产品,仅供参考。 C/C++ 这两种语言是不可逾越的。任何遇到瓶颈的开发都会找到它们。自然,他们应该是第一个被介绍的。与此同时,区块链技术的创始人比特币(协议层)使用的是C++?语言发展,到目前为止,没有比比特币更成功的区块链产品了。因此,不管你用什么语言开发,在正式进入这个行业的过程中,你应该首先学习比特币。 Qt用于比特币官方客户端钱包,Python用于第三方钱包,尤其是许多由第三方编译的开发库(API包)是由Nodejs设计的。 比特币的架构与上述架构设计基本相同。此外,因为一致性算法使用了PoW:工作证明)机制,所以也有一些特殊的挖掘过程。 其他竞争货币都是直接来自比特币的分支,因此编程语言是相同的,具体的技术选择和实现可能会有所改进。例如,莱特货币使用其他加密算法。 官方网站: 源代码库: Nodejs/JavaScript Nodejs平台强大的网络编程能力和简单快速的js脚本语言自然使它在区块链地区不可或缺。 沂沭就是这样一个区块链产品。沂沭币是它的协议层,它是使用著名的Express开发框架基于HTTP开发的。同时,采用了授权股权证书机制,并对其算法进行了改进,使其在处理交易时更加轻便,处理能力大大提高。它提供了一个强有力的合作机制,促进了数字出版和版权保护。侧链功能得到扩展,任何分散的应用程序都可以在此基础上开发,从而为专业作者、博客爱好者和开发者提供了很多便利。 《加密货币的发展》一书完全分享了它的源代码。从区块链的基本概念到代码实现,从基本原理到开发设计思路都做了详细的探索。到目前为止,很少有书从协议层面深入到代码中去解释区块链技术的实现。这算一本书。 官方网站: 源代码库: 大蟒 如果你是一个Python语言爱好者,我建议学习以太网的Python实现。尽管道事件引起轩然大波,但从技术实现的角度来看,还是值得学习的。 以太网广场正式定位为开发和管理分布式应用程序的平台。它的主要焦点是“智能契约”,并且已经为它定制了一种编程语言Solidity。 以太网广场的核心是以太网广场虚拟机(EVM),它允许用户根据自己的意愿创建操作。 以太网广场提供了围棋、Java、Python和其他语言的实现。基于Python的实现主要包括三个部分:Pyethapp是客户端部分;肾盂是核心库,实现区块链、以太网模拟器和采矿功能。Pydevp2p是一个对等网络库,实现了节点发现、合同代码传输、加密和签名等功能。这三个功能的组合是一个完整的区块链实现。后两个核心库一起形成了一个协议层。 此外,围棋以太网是围棋语言的完整实现。埃瑟伦姆(J)?是一个纯Java实现,作为一个库提供,可以嵌入到任何Java/Scala项目中。 在客户端,还有Rust、Ruby、Javascript和其他语言的实现。 官方网站: 源代码库: 去 在多核时代,围棋语言非常流行。它允许您以同步方式轻松实现高并发性,特别是在广泛使用的分布式系统、网络编程等领域。因此,在区块链开发领域,也有许多项目使用围棋语言。 其中,由Linux基金会领导的HyperLeger是名为Fabric的版本库之一。该项目试图为下一代交易应用程序创建一个开放的分布式图书标准,并支持一系列许可块(这种方法可能无法复制比特币强大的网络效应)。 结构的开发环境构建在VirtualBox虚拟机上。部署环境可以是自建网络,也可以直接部署在BlueMix上。部署方法可以被归档,并支持使用Go和JavaScript开发智能合同。 它使用PBFT分布式算法,在网络编程中使用gRPC进行P2P通信,并使用协议缓冲区来序列化要传输的数据结构。 就建筑设计而言,织物可能不同于比特币等区块链产品,但上述基本组件仍是不可或缺的。 官方网站: 源代码库: 其他编程语言,如C#?等等,还有具体的例子,这里就不一一列举了。 简而言之,对于不同的编程语言,具体的编码或架构设计可能会有所不同,甚至更好,但协议层使用的技术并没有太大变化。 其中,网络编程是重点和难点。其中大多数都没有现成的框架。它们是使用编程语言本身提供的库来设计和开发的。因此,与底层相比,开发人员的编码技能受到了很大的考验。 知识地图 根据以上分析,我们已经可以理解什么是区块链,以及如何实现它。顺便说一下,通过对编程技术知识的梳理,它自然会清晰得多。 根据我个人的理解,我把与区块链有关的知识分为以下五个方面: 基础知识 区块链是一种新技术,它背后涉及到大量的新概念和新理论。虽然这种知识没有直接反映在代码中,但它是理解区块链和掌握区块链技术的基础知识。因此,它应该成为区块链技术不可或缺的一部分。这一部分从基本概念开始到工作原理的描述,可以涵盖区块链的所有基础知识。 技术实现 区块链是一种技术,但是从上面的分析可以看出,它应该是一种架构应用,架构的实现应该是我们知识库的核心。如您所见,对于任何区块链产品,协议层必须包括四个部分:点对点网络、加密签名、数据存储和分布式算法。应用层还必须提供基本的应用程序,如钱包和客户端浏览器。因此,将这一部分分开也是合理的。 在扩展层,区块链技术可用于各种应用,如金融、物联网、网络安全、版权保护、电子商务等。这里可以使用许多现有技术。然而,如何与区块链结合,如何实现跨行业使用,自然是这部分内容的研究课题。因此,此处列出或涉及的技术应被归类为技术实施的重要部分。 发展环境 区块链是许多技术的结合体,有其自身的复杂性。单个应用程序严重依赖于开发环境。开发工具和环境构建是开发人员快速入门的重要内容。 项目实践 据说,在短短几年内,已经有数以千计的全球区块链产品,包括创新应用。一些优秀的开源产品和项目实践是最好的学习和研究材料。 开发文档 不用说,每个产品都有自己的开发文档。另一个是有意的开发人员组织和收集一些资源,这可以帮助我们节省大量的查询时间。 在考虑这一知识体系的过程中,我主要考虑的是读者是否能快速掌握区块链技术,并最终按照这些标签参考文章开始开发和实施区块链产品。此外,有意避免与特定编程语言和特定字段相关的单词。唯一的区别是这些节点下对应的文章标签。 因此,这些分类是非常中性的。我们也考虑过使用比特币、竞争性货币、智能合同、数字资产、智能资产和其他特定的实施领域作为分类方法,但我们害怕限制读者的思维。与此同时,随着区块链的发展,这张地图会不断地被修改。在这里,我想呼吁我想读这篇文章的朋友提供你宝贵的意见。让我们把这张关于区块链的知识分类图做得更科学、更合理、更方便使用。 摘要 本文描述了区块链的技术基础设施。需要再次强调的是,这只是一种实施方法,并不是所有的区块链产品。我们也期待更多的创新,并相信它们会出现。 编程实现列出了几种编程语言及其典型产品,因为协议层技术相对较低,并且没有很多现成的框架可供介绍或讨论。与此同时,具体的技术细节在几行文字中并不清楚。幸运的是,这些产品都是开源产品,所以你可以结合自己的技术背景,进一步检查相应的产品源代码,很快你就可以理解其中的奥秘。 我建议在我的博客上阅读更多内容: 1.Java JVM,集合,多线程,新特性系列教程 2.春季MVC,春季启动,春季云系列教程 3.Maven,Git,Eclipse,Intellij IDEA系列工具教程 4.Java、后端、建筑、阿里巴巴等大型工厂的最新采访问题 感觉不错,别忘了表扬+前进!

币安是做什么的:
币安是全球最大交易所,币安国际名称为binance,它主要业务有(币安钱包、币安智能链、币安矿池)等,目前币安也是国内最大的加密货币交易平台,在币安交易所可以快速的购买当前热门加密货币:币安币、比特币、狗狗币、shib等。

声明:本文来源于网络,仅供网友参考学习,欢迎关注

币安官方网站

评论

币安官方网站

币安Binance官方网站国内最大免费数字货币交易平台,支持对比特币、莱特币、以太坊、BNB币安币等主流数字货币交易。京ICP备2023038308号-3
关注本站微信号,享受更多服务!
Copyright ©2019-2020.Powered by©币安Binance