下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/1、前言区块链作为一种架构设计的实现,和基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下和VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。和此同时,梳理和之相关的学问图谱和体系,帮助大家系统的去学习探讨。2、基本概念区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性相识这个问题,我们可以运用谷歌地球的例子做类比,ajax不是什么新技术,但组合在一起就成就了产品谷歌地球,和之类似,区块链也不是什么新技术,但和加密解密技术、P2P网络等组合在一起,就诞生了比特币。技术人员,特殊是Web开发工程师,学习了解ajax技术最早是被谷歌地球酷炫的效果所吸引。而现在,历史再一次重演,很多人被比特币的疯狂发展所吸引,进而起先探讨其背后的技术——区块链。区块链原本是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透亮、无法篡改、便利追溯的特点。事实上,这种特性也干脆体现了整个比特币的特点,因此运用区块链来概括加密货币背后的技术实现是特殊直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。和加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化、去政治化,更适合作为一门技术去探讨、去推广。所以,目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透亮、可追溯的产品的架构设计方法,算作广义的区块链。而当在具体产品中谈到区块链的时候,可以指类似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算作狭义的区块链。广义的区块链技术,必需包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的运用等4个方面,其他的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操作等。本文的区块链,指的是广义的区块链。3、架构图从架构设计上来说,区块链可以简洁的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不行分割。如图:协议层所谓的协议层,就是指代最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅供应Api供调用。通常官方会供应简洁的客户端(通称为钱包),这个客户端钱包功能也很简洁,只能建立地址、验证签名、转账支付、查看余额等。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点嘉奖规则,至于你要交易什么,想干什么,它一概不过问,也过问不了。典型的例子,自然是比特币,还有各种二代币,比如莱特币等,本书介绍的亿书币也是。这个层次,是现阶段开发者聚集的地方,这说明加密货币仍在起步当中。从用到的技术来说,协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等4个方面,其中网络编程实力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是干脆简洁的运用(请看书中相关的加密解密文章,不建议自由发挥,没有过多的编码逻辑),数据库技术也主要在运用层面,只有点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程实力强,对并发处理简洁的语言,人们就特殊偏爱。也因此,Nodejs开发区块链应用,慢慢变得更加流行,Go语言也在慢慢兴起。上面的架构设计图里,我把这个层面进一步分成了存储层和网络层。数据存储可以相对独立,选择自由度大一些,可以单独来探讨。选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的I/O性能,网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如,比特币选择的是谷歌的LevelDB,据说这个数据库读写性能很好,但是很多功能须要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,须要全方位的突破。分布式算法、加密签名等都要在实现点对点网络的过程中加以运用,所以自然是网络层的事情,也是编码的重点和难点,《Nodejs开发加密货币》全书共享的基本上就是这部分的内容。当然,也有把点对点网络的实现单独分开的,把节点查找、数据传输和验证等逻辑独立出来,而把共识算法、加密签名、数据存储等操作放在一起组成核心层。无论怎么组合,这两个部分都是最核心、最底层的部分,都是协议层的内容。扩展层这个层面类似于电脑的驱动程序,是为了让区块链产品更加好用。目前有两类,一是各类交易市场,是法币兑换加密货币的重要渠道,实现简洁,来钱快,成本低,但风险也大。二是针对某个方向的扩展实现,比如基于亿书侧链,可为第三方出版机构、论坛网站等内容生产商供应定制服务等。特殊值得一提的就是大家听得最多的“智能合约”的概念,这是典型的扩展层面的应用开发。所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行,比如自动转移证券、自动付款等,目前还没有比较成型的产品,但不行否认,这将是区块链技术重要的发展方向。扩展层运用的技术就没有什么限制了,可以包括很多,上面提到的分布式存储、机器学习、VR、物联网、大数据等等,都可以运用。编程语言的选择上,可以更加自由,因为可以和协议层完全分别,编程语言也可以和协议层运用的开发语言不相同。在开发上,除了在交易时和协议层进行交互之外,其他时候尽量不要和协议层的开发混在一起。这个层面和应用层更加接近,也可以理解为B/S架构的产品中的服务端(Server)。这样不仅在架构设计上更加科学,让区块链数据更小,网络更独立,同时也可以保证扩展层开发不受约束。从这个层面来看,区块链可以架构开发任何类型的产品,不仅仅是用在金融行业。在将来,随着底层协议的更加完善,任何须要第三方支付的产品都可以便利的运用区块链技术;任何须要确权、征信和追溯的信息,都可以借助区块链来实现。我个人觉得,这个目标应当很快就能实现。应用层这个层面类似于电脑中的各种软件程序,是一般人可以真正干脆运用的产品,也可以理解为B/S架构的产品中的阅读器端(Browser)。这个层面的应用,目前几乎是空白。市场亟待出现这样的应用,引爆市场,形成真正的扩张之势,让区块链技术快速走进寻常百姓,服务于大众。大家运用的各类轻钱包(客户端),应当算作应用层最简洁、最典型的应用。很快,亿书将基于亿书网络推出文档协作工具,这个就是典型的应用层的产品。限于当前区块链技术的发展,亿书只能从协议层动身,把目标指向应用层,同时为第三方开发者供应扩展层的强大支持。这样做既可以避开贪多,又可以避开无法落地,是真正理性的开发路途。因为纯粹
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级数学计算题专项练习1000题汇编
- 二年级数学(上)计算题专项练习
- 荷花田管护合同(2篇)
- 南京工业大学浦江学院《土木工程施工技术与组织》2022-2023学年第一学期期末试卷
- 林口镇污水治理工程排水管网工程二期施工组织设计
- 瑞庆汽车发动机技术有限公司联合厂房施工组织设计
- 《醉翁亭记》说课稿
- 《用数学》说课稿
- 《我们的梦想》说课稿
- 科室结对子协议书(2篇)
- 国开2024年秋《机电控制工程基础》形考任务2答案
- XPS原理及分析(课堂PPT)
- 基于组态王655换热器实验控制系统
- 广传公派下《十二房》巨汉公传下谱序
- 中国船用柴油机技术发展历程
- (施工方案)墩顶吊篮圆弧段安装施工方案全解
- 青岛市市政工程安全文明施工管理标准
- iso20000信息技术服务目录
- 《农学蔬菜种植》ppt课件
- 小学二年级阅读练习(课堂PPT)
- GB31644-2018食品安全国家标准复合调味料
评论
0/150
提交评论