今天写一个能够一文读懂区块链的文章,以后谁再问我区块链是什么东西,我就把这篇文章发给他。

————————

个人技术公众号:解决方案工程师

欢迎同领域的朋友关注、相互交流。

————————

区块链技术概念于 2008 年在中本聪关于比特币的白皮书中提出。区块链与比

特币有着密切的关系,区块链是比特币的技术支撑,保证加密货币系统的正常运行,比特币是区块链的应用实现,扩大了区块链的知名度并促进其发展。

一、区块链的结构

区块链可以理解为一串加密的,互相关联的链式数据块。每个数据块中包含了比特币交易信息,用于验证交易的合法性和有效性。

上图为区块链构成模型,一个区块包含区块头和区块体两部分。区块头存储了区块的验证信息,包括版本号、时间戳、目标哈希、随机数、父块哈希和Merkle 根,各字段功能如下表所示。区块头浓缩了区块链的数据信息,并可唯一标识出该区块在链中的位置,用于追溯和查找。

区块体中存储完整的交易数据,通过递归计算,以 Merkle 树的形式汇聚,最

终形成一个 Merkle 根。Merkle 树的结构不仅提高了区块链的扩展性还保证了查找的高效性,N 个叶子节点的 Merkle 树最长查找路径长度为 lb(N),这种高效在大规模物联网中体现的异常明显。此外,区块体中还有用于限制区块大小的交易计数器,最大限度地利用网络带宽的同时也保障了区块链网络信息同步的高效性。

相邻区块通过哈希指针连接。哈希指针用于保护交易记录的完整性,在共识节点的本地视图中指定相邻块的排序,把哈希指针的数据字段保存在块的数据结

构中。指向块的哈希指针是该块中的连接数据字段的哈希码。当前块的哈希码被存储在该块的头部。每个区块都包含着父块的哈希值(创世区块除外),再加上时间戳信息,形成了区块链的链式数据结构,保证了数据的真实性和不可篡改性。

当同一时间挖出 2 个符合要求的区块时,即“分叉”情况,主链会等待下一区块

诞生,新区块会挑选最长的那条支链附着。“分叉”发生的概率很小,且只是暂时的,最终的区块链一定是唯一的最长链。

区块链采用广播的方式在 P2P 网络中公布新的区块。当网络中一个节点计算出符合要求的目标难度値时,首先会被广播到相邻节点,待验证通过后会继续向其他邻节点广播,直到网络中不少于 51%的节点授权则认为交易得到认证。若在此过程中交易信息不合理(账户余额不足或信息错误),则不会通过验证,节点将废弃该数据也不会再向其他节点转播。若验证通过后,区块链会决策出新区块的记账权,并广播全网实现同步。

二、数据加密

数据加密和身份验证是任何网络系统须提供的两项最重要的安全服务,一般来说,这两种服务可以使用公钥加密(非对称加密)作为安全框架。区块链网络

中的每个节点都生成一对私钥和公钥。

私钥由用户秘密保存用来加密/解密消息,私钥与数字签名函数相关联,该函数是将任意长度的输入消息输出为固定长度的签名字符串。

而公钥与验证函数相关联,该验证函数以相同的消息和该消息的公认签名作为输入。当签名函数使用相应的私钥和输入消息生成签名时,验证函数仅返回 true。

目前较为流行的非对称加密技术有 RSA、Diffie-Hellman 公钥加密算法、椭圆曲线加密算法(ECC),相比之下,由于椭圆曲线加密算法在提供相同安全等级系数的同时,密钥更小,加密解密过程更快,因此,区块链使用椭圆曲线签名算法(ECDSA)非对称加密技术实现数据认证(即签名和验证)和数据保密(即加密和解密)。

公钥加密具体过程如下图所示,众包场景下,工人使用其私钥对感测数据进行数字签名,每个拥有工人公钥的用户都可以对工人进行身份验证。数据加密也有类似的程序,工人使用任务发布者的公钥加密已签名的感知数据,只有发布者或其他拥有发布者私钥信息的用户才能解密数据。

三、共识算法

不同于传统的集中式授权体系结构,区块链是一个去中心化、共享的、可靠的分布式网络架构,由组成 P2P 网络的参与者管理,利用共识算法就交易顺序和合法性达成一致。共识算法指对等实体根据预先定义的协议来约束区块链网络中不可信节点,包括区块挖掘、验证、植入等工作。每个节点都在本地保留交易帐副本,这使得交易数据公开透明并且可以抵抗由单一故障点引发的系统故障,以此维护区块链的正常运行,避免 P2P 网络中发生拜占庭问题。目前,广泛使用的共识算法是 PoW 和 PoS。

工作量证明(Proof-of-Work, PoW 共识算法) 是最早的应用于比特币系统的共识算法,该共识协议的核心思想是通过引入矿工的算力竞争来保证分布式网络中共识的可靠性和数据的安全性。PoW 共识算法需要穷尽地查询加密哈希函数,以获得从候选块生成的部分原像,其候选块的哈希码满足预定义条件:给定可调节硬度条件参数 h,矿工搜索解决方案字符串 nonce,使得对于基于候选块数据组装的给定字符串 x 和 nonce 级联的哈希码(即目标块头 bh)小于难度系数目标值 D(h)。在比特币中,只有寻找出符合要求 nonce 的矿工才可以拥有当前区块的记账权并获得相应数额的酬劳。由于哈希操作的高复杂性,拥有更多计算资源的节点倾向于有更高的获胜概率。

因此,高计算功率和高能耗的要求成为低计算能力,低功耗物联网设备的一个挑战。除此之外,在频繁的小额支付中还存在交易费。在比特币系统中,交易

额越高,矿工验证此交易得到的回报,即手续费越高。因此,矿工更愿意去认证交易额较大的交易,而小额支付的交易则会迟迟得不到认证,这无疑为物联网系统中的用户增加了经济负担。更严重的是低交易处理能力,例如,比特币系统每秒处理 7 个交易。此外,高认证时延(比特币系统每个区块 60 分钟才能得到认证),同样不能满足呈指数增长的物联网用户对交易数据的实时要求。因此,尽管 PoW 可扩展性很好,但不适用于物联网系统。

权益证明(Proof-of-Stake, PoS 共识算法) 是为了解决 PoW 的高能耗缺陷而提出的替代方案。与依赖算力资源的 PoW 算法不同的是,Po S 算法使用币龄避免高计算复杂度的哈希运算。

币龄等于资产的价值乘以交易的生存时间。生存时间为最近一次交易时间到现在的交易时间。币龄类似 PoW 算法的算力,拥有更高币龄的节点有更大的概率赢得新区块的记账权,同时获胜者的币龄将被消耗(重置为零)。

由于获胜的概率直接受到币龄的影响,所以 PoS 共识算法对富有的矿工有利。除了比 PoW 节约能源之外,PoS 共识算法还可以在一定程度上保护网络,防止内部恶意的攻击。

成功的攻击需要用户拥有较高的权益,但是,系统中拥有高权益的用户更愿意维护网络的安全。因为一旦网络受到恶意攻击,拥有高权益的用户将会损失更多。但是,如果单个用户控制了系统的大部分股份,则可能由于权利集中而引发垄断。垄断者可能潜在地选择做一些恶意活动,比如双重支付或拒绝服务。

此外,Po S 中也存在一些 PoW 所具有的缺陷,例如,交易费,低 TPS(以太坊每秒处理 20 到 30 个交易)和较高的认证时延(以太坊中为 3 分钟)。

因此,Po S 共识算法并不是建立智能的分布式物联网系统的最佳选择。目前采用 Po S 共识算法的应用有以太坊,Peercoin和 Nxt。

概念验证(Proof-of- Concepts,PoW 共识算法) 根据 P2P 网络中节点的算力来计量节点的投票权或可信度。所有节点的 PoW 过程将共同模拟可公开验证的随机函数,用来选择区块提议的领导者。基于这样的设计范例,PoW 可以推广到 PoX 的框架中。使用 PoX,节点需要非交互式地证明超出 PoW 哈希值的可测量资源的权限。遵循非交互式零知识证明(Zero-Knowledge  Proof,ZKP)的生成计算验证范例,可以将 PoX 过程抽象为三个阶段。

(1)  初始化(随机种子或密钥的生成器):初始化阶段根据 PoX 规范为证明者和验证者提供在后续阶段中运行的必要信息。典型的非交互式 ZKP 系统(例如 zk-SNARK)必须查询可信的第三方密钥/随机种子生成协议,用来为证明者和验证者产生公共参考字符串。

(2)  执行(挑战和证明生成器):对于非交互式 ZKP,执行阶段要求证明者根据公共参考字符串生成随机挑战,该挑战构成独立不可妥协的计算问题,同时生成相应的证据。

(3)  验证:在验证阶段,验证者检查证明的正确性,仅基于证明者发布的信息

确定。

典型的基于 PoX 的共识算法有 Proof of exercise,Proof of retrievability,Proof of space等。PoX 方案可以被视为对基于 PoW 的 Nakamoto 协议的扩展,旨在实现两个主要的设计目标,即激励有用的资源提供和改善共识性能。 随着区块链技术的兴起,许多新的共识算法也应需而生,这些机制在能耗、可扩展性和吞吐量方面都有了一定的提高,如:Proof of activity , Proof of burn, Bitcoin-NG。

四、智能合约

智能合约是 Nick Szabo 于 1994 年提出的一系列自执行、可信赖的计算机编码程序。智能合约的主要组成部分包括地址、价值、功能和状态。当工人提交交易到智能合约地址时,网络中的所有节点将根据交易值和全局状态执行程序,实现相应的用户身份管理、任务分发和数据评估等功能。这样,智能合约就可以代替可信的第三方来验证交易对手之间的合约。

在众包中,可以设计智能合约并将其嵌入区块链系统以简化工作流程。用户通过向唯一的地址发送激活交易来触发智能合约的执行,在区块链上实现相应的

功能。一旦交易有效地触发智能合约,它将在区块链网络中的节点上自动运行。执行结果将由其他节点验证,有效的结果将作为区块内容存储,以供将来参考和审核。因此,智能合约可以起到协调者的作用,不仅有助于系统实现自动化执行,而且可以使其做出有效的决策。

除了方便性和准确性之外,智能合约还可以提高众包系统的安全水平。交易数据用数字签名加密,并由网络中的所有权益持有人审查,合约的任何改变都将

得到充分的监测、核实和确认。因此,潜在的恶意攻击和意外错误可以大大减少。

因此,将智能合约整合到众包中,尤其是用于无线物联网中的小额支付交易,并实现交易的自动化处理是很必要的。

五、系统设计

区块链网络是一个强大的分布式主干框架,其独特的去中心共识算法特性可用于平坦、开放的接入网络进行分散化数据处理和自组织数据驱动。区块链网络

框架,如下图所示。

从系统设计的角度来看,区块链网络可以从下到上抽象为四个实现级别:(1) 数据和网络组织的协议;(2)  分布式共识的协议;(3)  基于分布式虚拟机(Virtual Machine,VM)的自组织框架(例如:智能合约);(4)  人机界面的实现。

1.  数据和网络组织层

(1)  数据组织协议:交易是区块链的原子数据结构,由一组用户或智能合约创建,以指示令牌从发送者转移到指定接收者,记录着资产数据的变更。数字签名的交易记录被打包到称为“块”的加密防篡改数据结构中;然后按照时间顺序通过哈希指针连接成“块链”(线性,非线性);最后存储到本地分类账副本。

(2)  加密功能:提供了许多成分的加密功能,如非对称加密,同态加密,Merkle树,哈希函数,零知识证明(Zero-Knowledge Proof,ZKP)等,以在区块链网络中形成独特且安全的节点标识。

(3)  网络协议:区块链网络中的数据传输通常基于以 HTTP 为基础的远程过程

调用(RPC)协议实现,其中消息按照 JSON 协议进行序列化。网络协议的主要目标是在节点之间引入随机拓扑,提供 P2P 网络组织的手段,即对等/路由发现和维护以及 P2P 链路上的加密数据传输/同步,有效地传播信息以使区块链副本同步。

(4)  节点类型:根据启用功能,节点可以分类为轻量级节点,全节点和共识节

点。所有节点都需要启用路由功能以进行消息验证/传播和连接维护。轻量级节点(如钱包)仅将每个块的头部保留在其本地存储器中。全节点在本地存储规范区块链的完整和最新副本。与轻量级节点比,全节点能在没有外部引用情况下自动验证交易。共识节点实现了共识参与的功能,发布新的块并影响区块链的状态。

共识节点可以采用完整或轻量级存储。

2.  共识层

共识层为连接 P2P 上的可靠数据同步提供核心功能,以维护整个网络中区块

链数据的原创性,一致性和顺序。 在有权限访问网络中,区块链网络通常采用拜占庭容错(Byzantine  Fault Tolerance,BFT)共识协议,如:Paxos,PBFT,Ripple等共识协议。有权限共识协议依赖于半集中式共识框架和更高的消息传递开销来提供即时共识,并​以此换来高交易处理能力。

在开放访问网络中,概率拜占庭协议是基于包括密码零知识证明和激励机制设计在内的技术组合实现的,如 PoX。无权限共识协议更适合于区块链网络,其对节点的同步和行为的控制具有较为松散的特点。在有限延迟和多数诚实节点情况下,无权限共识协议以较低的处理效率为代价更好地提供了对可伸缩性的支持。

3.  全局 VM 层

作为较低层协议和应用程序之间的互操作层,VM 层将必要的 API 公开给应用程序层。当启用 VM 的功能时,允许网络中的节点以自主可执行程序的形式部​署到智能合约的区块链上。在分布式 VM 层上实现智能合约,可以保证共识协议​的稳健性。

4.  应用层

应用层提供最终用户可见的界面,如分布式应用程序,加密货币和区块链浏览器,具体应用如:众包、智能家居、智能电网、车辆通讯等。

综上所述,区块链技术的出现打破了原来集中式授权管理系统的经营模式,带了全新的技术方案,基于区块链的系统一般都具有下表所示的优势。

一文读懂:什么是区块链相关推荐

  1. 一文读懂~国内外区块链发展现状、趋势和政策

    前言 区块链作为点对点网络.密码学.共享机制.智能合约等多种技术的集成创新,提供了一种在不可信网络中进行信息与价值传递交换的可信通道.区块链技术无论是在构建价值自由流通的互联网,还是在企业基于&quo ...

  2. 一文读懂为什么需要跨链?跨链是什么?跨链实现技术?

    区块链的现状 从2014开始,"区块链2.0"成为一个关于去中心化区块链数据库的术语.区块链2.0 技术跳过了交易和价值交换中担任金钱和信息仲裁的中介机构.这使得人们的隐私得到保护 ...

  3. 区块链产业生态、存在问题及政策建议|一文读懂新趋势

    区块链产业生态.存在问题及政策建议|一文读懂新趋势 2017-03-03 09:47:50  来源: 腾讯研究院抢沙发 摘要:从技术上来讲,区块链是一种分布式的记账方法.说到记账,我们经历了从实物记账 ...

  4. hdfs文档存储服务器,一文读懂HDFS分布式存储框架分析

    一文读懂HDFS分布式存储框架分析 HDFS是一套基于区块链技术的个人的数据存储系统,利用无处不在的私人PC存储空间及便捷的网络为个人提供数据加密存储服务,将闲置的存储空间利用起来,服务于正处于爆发期 ...

  5. 一文读懂密码学中的证书

    一文读懂密码学中的证书 之前的文章中,我们讲到了数字签名,数字签名的作用就是防止篡改和伪装,并且能够防止否认.但是要正确运用数字签名技术还有一个非常大的前提,那就是用来验证签名的公钥必须真正的属于发送 ...

  6. hdfs读写流程_一文读懂HDFS分布式存储框架分析

    一文读懂HDFS分布式存储框架分析 HDFS是一套基于区块链技术的个人的数据存储系统,利用无处不在的私人PC存储空间及便捷的网络为个人提供数据加密存储服务,将闲置的存储空间利用起来,服务于正处于爆发期 ...

  7. 你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践

    导读:无论你的工作内容是什么,掌握一定的数据分析能力,都可以帮你更好的认识世界,更好的提升工作效率.数据分析除了包含传统意义上的统计分析之外,也包含寻找有效特征.进行机器学习建模的过程,以及探索数据价 ...

  8. 一文读懂DEFI借贷以及清算的含义

    目录 什么是DEFI 什么是DEFI借贷 DeFi借贷步骤 借贷产品的分类 被清算的三箭资本 什么是DEFI DeFi 是 Decentralized Finance 的简称,即去中心化金融,是由区块 ...

  9. 一文读懂主流共识机制:PoW、PoS和DPoS

    一文读懂主流共识机制:PoW.PoS和DPoS 目录 一文读懂主流共识机制:PoW.PoS和DPoS 01 PoW(Proof-of-Work)工作量证明机制 02 PoS(Proof-of-Stak ...

最新文章

  1. 【力扣网练习题】有效的括号
  2. 自己在CODING过程中遇到的问题以及解决(C/VC)
  3. CSS基础:text-overflow:ellipsis溢出文本的显示样式
  4. HDU Problem - 5101 Select(二分)
  5. 大数据导论章节答案_托福100+需要准备多久?考生大数据给你答案
  6. [react] React怎样跳过重新渲染?
  7. python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测
  8. 2017.6.27 跟开涛学spring3--spring概述
  9. 安装SBT环境运行Scala项目
  10. 百名花粉神秘参与3个月 荣耀9X满帧挑战计划被爆进入收尾阶段
  11. commons-logging slf4j log4j 区别
  12. caffe常用小工具
  13. windows最好用的mp3格式转换软件推荐
  14. 前端开发主流框架整理推荐
  15. 黑马程序员_面向对象简介
  16. sam卡和sim卡区别_PSAM卡、SAM卡与SIM卡
  17. PS抠发丝技巧 「选择并遮住…」
  18. 什么时候需要消息队列
  19. NFT 生成物及素材展示(小熊、性别形象、道具)
  20. html中怎样隐藏列,关于jquery:隐藏/显示HTML表中的列

热门文章

  1. 阿里巴巴在社交领域赶超,后院起火的腾讯要慌了
  2. NKOJ 4974 「NOIP模拟」乌鸦坐飞机【倍增优化DP】
  3. php地图封装,百度地图应用封装——静态图api
  4. uni-app小程序证件拍照
  5. linux触摸板设置密码程序6,《linux的笔记本(上网本)触摸板图形界面高级设置工具》v0.6 稳定版[安装包]...
  6. SAP License:看看你在哪个阶段
  7. 下载NetSarang的Xshell (完全免费)
  8. 机器学习之最小二乘法
  9. 八卦一下模型验证(一) (转自g9老大的八卦系列)
  10. Unity中的Lerp函数