建议收藏,轻松搞懂区块链

未来已来,只是不均衡地分布在当下

大家好,我是菜农,欢迎来到我的频道。

本文共 5844字,预计阅读 30 分钟

区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"黑科技"之一。

在本篇中我们将掌握区块链的基本概念技术构成逻辑结构

一、基本概念

“区块链” 这个概念是由一个网名为中本聪的人在2008年发表的《比特币:一种点对点的电子现金系统》中提出的。随后他实现了一个比特币系统,并发布了加密数字货币—比特币。接下来出现了以太坊和超级账本这样的大型区块链项目。

那么在你的认知中,区块链是什么样的?下面整理了几种选项,看下是否有符合你认知的选项。

  1. 区块链是比特币,比特币就是区块链
  2. 区块链很值钱
  3. 区块链可以运用在任何领域
  4. 区块链是免费的
  5. 区块链是非常安全的

通常来说,选项1是大多倾向的结果。但比特币和区块链两者不能等同,实际上,区块链是比特币的底层技术,如果要举例比喻的话,就好比用面粉可以做包子,但不能说面粉等于包子,包子等于面粉。而这里的面粉就相当于是包子。当然了作为底层技术的存在,不仅仅应用于比特币的实现中,还有很多其他基于区块链技术的应用。

那么区块链究竟是什么?从比较专业的维度上看,可以从以下三点来解释

  1. 区块链是底层技术

作为一个底层技术,它是包含了 P2P动态组网基于密码学的共享账本共识机制智能合约 等关键技术

  1. 区块链是一个数字货币和账本系统

从货币学的角度看,区块链是数字货币系统的分布式共享账本系统,这是一个去中心化的、网内用户共同维护的账本系统。

  1. 区块链是互联网的基础设施

它提供了分布式去中心化的价值互联网,为更多大规模的共享、协作应用创造可能。

作为解释依据,这里提取了来自中本聪在2008年发表的《比特币:一种点对点的电子现金系统》中的一段描述:

时间戳服务器对以区块(Block)形式存在的一组数据是实施随机散列并加上时间戳,然后将该随机散列进行广播,就像在新闻后世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(Reinforcing),这样就形成了一个(Chain),即区块链,如下图所示:

文字较为苍白,我们看图可以很清晰的看出 区块链就是由 区块 构成的

1)区块

区块是区块链的组成单元,就像金字塔是由一块块石头组成的一样,区块链就是一个个区块组成的。

区块是由一系列特征值和一段时间内的交易记录组成的一个数据结构。区块的数据结构是由 区块头区块体 组成。其中区块头包含了当前区块的特征值,区块体中包含的是实际的交易记录数据。

1、数据结构

1️⃣ 区块头

区块头是由 80 个字节组成,主要由版本号、前一个区块的哈希值、Merkle根、时间戳、bits、Nonce 这几项区块的特征值组成。

  • ver: 版本号,表示本区块遵守的验证规则
  • prev_block: 父区块哈希值,指的是这个区块连接的上一个区块的哈希值
  • mrkl_root: mrkl_root 根,是该区块链交易的 Merkle 树根的哈希值(Merkle 是一种哈希树的数据结构)
  • time: 时间戳,区块生成的时间
  • bits: 区块的难度值,该区块工作量证明算法的难度目标,使用特定的算法编码
  • Nonce: 是一个随机数,为了找到满足难度目标所设定的
2️⃣ 区块体

区块体主要包括了 交易数量(n_tx)、区块大小(size)和长度不定的交易记录(tx 字段包含的交易列表) 等信息。但这只是比特币中的区块体结构,实际上区块体重可以包括任何内容,比如以太坊的区块体中除了交易数据还包含智能合约。

2)区块特点

区块是由计算机通过加密算法生成的。如果成功地生成一个有效的区块,该计算机(节点)就能获得一定的奖励,这个奖励就是加密数字货币,也就是所谓的 挖矿

加密算法并不是容易生成结果的,而是该区块的哈希值必须满足一定的条件。这个条件就是能够使得区块头中特征值相加生成的哈希值需要符合一定格式,比如难度值为 000,由于哈希值随着输入的不同而不同,因此计算机要不断尝试改变区块头的 Nonce 值直至最终生成的哈希值满足条件才算生成了一个有效的区块。

我们可以借助 Blockchain Demo 工具来尝试生成一个区块。

从图中可以看出在 HASH 一栏中的数据是红色的,说明该哈希值是无效的。因为未满足 000 开头的数据。那么我们需要再次计算后查看结果

可以看出这次的结果为绿色,是有效的,因为该数据满足 000 开头。我们将上面的区块结果进行解读,可以分为以下几部分:

  • 索引: 表示区块在区块链中的位置,其中第一个区块为 创世区块(索引为 0) ,第二个区块的索引为1,第三个区块的索引为2,以此类推。
  • 时间戳: 表示该区块的生成时间,根据时间戳可以判断区块链中各个区块生成的先后顺序。
  • 哈希值: 表示每个区块的唯一标识,也可称为区块的 数字指纹。哈希值的长度是固定的,而且和区块的内容紧密关联,一旦区块内容发生改变,该区块的哈希值也会发生改变。而且,区块中的哈希值还有 有效无效 之分,满足特定条件的哈希值是有效的,否则就是无效的。这个特定条件一般称称为 困难度(Difficulty)。父区块哈希值就是区块中特定区块前一个区块的哈希值。
  • **数据:**区块中的数据可以是任何内容,比特币区块链的区块中的数据为一串串交易记录。
  • Nonce: 是一个随机数,用来生成一个有效的哈希值。Nonce 会根据区块数据的不同而不同,每个区块都需要经过大量计算才能找到对应的 Nonce 值。
  • 创世区块: 区块链中的第一个区块,它没有父区块,故创世区块的父区块哈希值为空或者为 0。

2)运行原理

综上所述,区块链就是一个链表,而这个链表就是由一个个区块组成的,这些区块依次连接,形成一个不可篡改的链条,那么其中的运行过程我们也可以由此推出:

  1. 首先构成区块链的去中心化网络中的第一个节点,生成一个 创世区块
  2. 然后通过 挖矿 生成新的区块添加到区块链中
  3. 新的节点加入到去中心化网络中会先生成一个最新的区块链数据
  4. 随后每个节点生成的区块都会向网络中的其他节点进行广播
  5. 其他节点收到广播后会判断自己是否已经收到该区块,是的话就忽略,否的话会先校验该区块是否有效,如果是有效的区块则会添加到自己的区块链中

3)小结

  1. 区块链中的节点始终都讲最长的链条作为正确的链,并持续延长和维护这条链。当节点发现有更长的链条并且本身的链条不是最新时,就会使用最长的链条提花你当前节点的链条。若一个节点判断出本身的区块链是最新的,再收到新的区块信息时,节点就会把新的区块添加到自身链条的最后。
  2. 当一个区块链的节点掌握了整个区块链中 51% 以上的计算能力时,它就可以重写整个区块链。基于这个原因,区块链中的计算能力过度集中会很危险。只有一个庞大且均匀分布的区块链才比较安全。

二、技术构成

区块链主要由三个核心技术构成,分别是 共识机制、智能合约、去中心化网络

1)共识机制

共识机制是区块链中的重要机制,不同的区块链项目可能使用不同的共识机制。网络中的各个节点根据共识机制达成共识,共同维护整个区块链网络。

1、PoW 机制

工作量证明机制(Proof of Work,PoW),工作量证明就是一份证明,它用来确定完成了一定量的工作并可以因此获得一定的奖励。

工作量证明是一种对应服务与资源滥用,或是阻断服务供给的对策。一般要求发起者进行一些耗时的复杂运算,并且结果能被快速验算。在计算过程中耗用的时间和资源作为成本,据此来确定建立或惩罚,以此来维护系统的一致性。

工作量证明机制最常用的技术原理是哈希函数,工作量证明机制如下:

  1. 取得一些公开的数据,并加上一个随机数(Nonce)
  2. 以数据和随机数作为输入值计算哈希值
  3. 检查生成的哈希值是否符合一定的条件。若符合就几下这个随机数的值并退出。若不符合则改变随机数的值再重新计算。

由于工作量证明机制需要消耗巨大的算力,如果有人尝试恶意破坏,需要付出巨大的经济成本,这就防止了恶意的数据修改。

缺点: 只有第一个获取有效哈希值的节点能得到奖励,其他节点的计算会被浪费掉。

2、PoS机制

权益证明机制(Proof of Stake,PoS)试图解决在 PoW 机制中大量资源被浪费的问题。不同于 PoW 机制要求进行一定量的计算,PoS 机制要求提供的是保证金,或者说是一定数量数字货币的拥有权。

PoS 机制的工作原理是通过保证金来确认一个合法的块成为新的区块,收益为保证金的利息和交易服务费。提供证明的保证金越多,则获得记账权的概率越大。

比如系统中有A、B、C、D4个人,A有40个币,B有30个币,C有20个币,D有10个币,那么A获得记账权的概率就是D的4倍

PoS 机制的好处是在一定程度上缩短了共识达成的时间,不再需要大量消耗能源挖矿,其与 PoW 机制的区别如下:

3、DPoS 机制

股份授权证明机制(Delegated Proof of Stake,DPoS),与 PoS 机制基本原理相同,只是选举了若干代理人,由代理人执行验证和记账功能,工作原理如下:

在 DPoS 机制下,每个节点按其持币比例拥有影响力,51%节点投票的结果将是不可逆切有约束力的。其过程为:

每个节点可以将其投票权授予一名代表,获票数最多的前 100 位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的 10% 作为报酬。如果一个平均水平的区块含有 100 股作为交易费,每个节点将获得 1 股作为报酬

DPoS 的好处是大幅缩小了参与验证和记账节点的数量,可以达到秒级的共识验证

4、DAG 机制

有向无环图(Direct Acyclic Graph,DAG),DAG 是一个没有有向循环的、有限的有向图。它由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点;从任意一个顶点出发都不能通过这些有向边回到原来的顶点

传统的区块链只有一条单链,而在一条单链上无法并发打包区块。而DAG 是一种拓扑结构,在区块打包时间不变的情况下,可以并行打包N个区块,那么区块链的交易容纳能力就可以变成原来单链情况下的N倍。

2)智能合约

智能合约不是区块链的必要组成,它是区块链 2.0 之后出现的技术。如果把区块链比作一个公司,智能合约相当于公司中的规章制度,员工工作的时候会依据规章制度形式,而在有智能合约的区块链中,链上的节点会依据智能合约进行工作。

智能合约不只是一个可以自动执行的计算机程度,它还是一个基于区块链的参与者。它对接收到的信息进行回应,它可以接收和存储价值,也可以向外发送信息和价值。

智能合约具体是指运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、存储和发送价值的脚本

特点

  • 不可篡改
  • 分布式
  • 自动触发
  • 不依赖第三方

3)去中心化网络

去中心化网络不同于中心化网络。在中心化网络中,需要中心服务器,是一种星型的辐射结构。

  • 中心化网络

中心化网络

  • 去中心化网络

我们演化成区块链的形式:

三、逻辑结构

从架构上来说,区块链大致可以分为4层,从下到上依次为 数据层网络层合约层应用层

1)数据层

数据层是区块链的逻辑架构中最基础的一层,功能主要包括区块数据的存储、哈希值和 Merkle 树的计算以及链式结构的生成,其中进行数据的存储时需要重点考虑数据存储的性能和稳定性。在比特币和以太坊中的存储功能选择的是 LevelDB数据库。

数据层的功能是把交易数据存储到区块中并将区块加入到区块链中。当节点之间发生交易后会将交易数据广播到区块链的去中心化网络上,网络中其他节点负责校验这些交易。交易被确认有效后会存储到区块中,并加入到区块链。

2)网络层

网络层主要包括 P2P 网络共识算法 两个组成部分。P2P (Peer to Peer)网络也称为点对点网络对等网络,根据去中心化程度的不同可以将其分为以下三种:

  • 纯P2P网络

    • 节点同时作为客户端和服务器

    • 没有中心服务器

    • 没有中心路由器

  • 杂P2P网络

    • 有一个中心服务器保存节点的信息并对请求这些信息的客户端作出响应
    • 节点负责发布信息(因为中心服务器并不保存文件),让中心服务器知道哪些文件被共享,让需要的节点下载其可下载其可使用的资源
    • 路由重点使用地址,通过被一组索引引用来获取绝对地址
  • 混合P2P网络

同时含有纯P2P网络和杂P2P网络的特点

在 P2P 网络中,各个节点需要对区块链中的各个区块达成共识才能共同维护同一分布式账本。这个共识的机制就是共识算法,比较最为常用的共识算法有工作量证明机制(Proof of Work,PoW)、权益证明机制(Proof of Stake,PoS)、股份授权证明机制(Delegated Proof of Stake,DPoS)

3)合约层

合约层的功能使得区块链中的区块具有可编程的特性,并且赋予了区块链智能的特性,在区块链中智能合约的作用如同一个智能助理,对区块链中的数据和事件按照预先设定的逻辑进行处理。

4)应用层

应用层泛指基于区块链技术并结合具体业务场景开发的应用,包括加密数字货币钱包、交易所、去中心化应用等。

四、分类

随着区块链的快速发展、区块链的应用范围越来越广,不同的区块链应用之间也有了比较大的差异

1)公有链

公有链是对外公开、任何人都可以参与的区块链。公有链是真正意义上的完全无中心化的区块链。它通过加密技术保证交易不可篡改,在不可信的网络环境中建立共识,从而形成去中心化的信用机制。公有链使用于数字货币、电子商务、互联网金融、知识产权等应用场景。

2)联盟链

联盟链仅限于联盟成员使用,因其只针对成员开放全部或部分功能,所以联盟链上的读写权限、以及记账规则都按联盟链规则来控制。联盟链适用于机构间的交易、结算、清算等B2B场景。超级账本项目即属于联盟链。

3)私有链

私有链对单独的个人或实体开放,仅供在私有组织,比如公司内部使用,私有链上的读写权限,参与记账的权限都由私有组织来决定。私有链适用于企业、组织内部。

4)特点比较

5)侧链

侧链的概念最早产生于比特币的应用过程中,侧链实质上是指遵守侧链协议的所有区块链。侧链协议是一种可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地比特币主链的协议。

侧链本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。

6)闪电网络

在比特币交易网络中,最为人诟病的问题便是交易性能:全网约每秒7笔左右的交易速度远低于传统金融交易系统。同时,等待6个区块的可信确认将导致约1个小时的最终确认时间。

为了提升性能,比特币社区提出了闪电网络等创新的设计。闪电网络的主要思路十分简单—将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。闪电网络的工作原理是用比特币拥有权的承诺来替代拥有权

五、总结

区块链的主要特点包括去中心化、去信任、集体维护、匿名性、可靠的数据库。

  • 去中心化: 区块链技术基于P2P去中心化网络,区块链网络上的节点都是平等的,没有中心服务器,故区块链是去中心化的。
  • 去信任: 区块链中的数据都是公开透明的,交易数据通过加密技术进行验证和记录,无须第三方信任机构的参与,故有去信任的特点。
  • 集体维护: 区块链由全网节点共同参与维护,某一节点上数据的更新需要其他节点进行计算和验证,不会受少数节点控制。
  • 可靠的数据库: 区块链中的每一个节点上的数据都是全网数据,单个节点的退出或瘫痪不会影响整个系统。

好了,以上便是本篇的所有内容,如果觉得对你有帮助的小伙伴不妨点个关注做个伴,便是对小菜最大的支持。不要空谈,不要贪懒,和小菜一起做个吹着牛X做架构的程序猿吧~ 咱们下文再见!

今天的你多努力一点,明天的你就能少说一句求人的话!

我是小菜,一个和你一起变强的男人。 💋

微信公众号已开启,菜农曰,没关注的同学们记得关注哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33587.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

都说区块链可信,到底信了个啥?

‍‍ 题图摄于北京二环路 【前言】不时有朋友向我询问某某区块链项目怎么样。我通常只给他们讲一点:要考察项目中区块链的信任体系。不管项目方说得怎样天马行空,看懂其中的信任机制,就基本可判断其项目的价值。 最近热门词汇层出不穷&#x…

如果你还不懂区块链那就out了(二)--区块链的演化及应用场景

前面我们介绍了很多区块链的知识,可能大家会有以下几个疑问: 1、区块链用于溯源,如果供应链上的参与方自己造假,在中途将实物替换掉,区块链宣称的不可更改不就无效了吗? 答:造假会有相应的惩罚措…

总搞不懂区块链各共识机制的优缺点?来听听这位十多年经验技术老兵的吐血分享吧!

2018区块链技术及应用峰会 (BTA)中国 倒计时5天 2018,想要follow最火的区块链技术?你还差一场严谨纯粹的技术交流会——2018区块链技术及应用峰会(BTA)中国将于2018年3月30-31日登陆北京喜来登长城饭店。追求专业性?你要的这里全都有&#xf…

区块、链和共识

区块、链和共识 💡 区块链的基础数据结构 准备 Hash Hash也称散列、哈希。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出(更多解释见知乎) 特点是:相同的输入一定得到相同的输出,不同的输…

都2021年了,还不知道什么是区块链就out了 | 从区块链数据结构到应用

序言 在现阶段及后10年都是发展主流的数字化经济的催动下,区块链技术越来越火爆。那么比特币的区块数据结构是如何构成的,区块链有什么特性,我们用区块链能用来做什么?我们一起来探讨下。 区块链诞生背景 2008年11月1日&#xff0…

基于区块链的内容社交平台,他们凭什么说比知乎更吸引人?

本堂茜 渡鸦区块链专栏记者 张杰拥有10多年的软件开发经验和创业经验,自称是“互联网老兵,区块链新秀”。随着互联网的发展,渐渐的他们不再满足于做线下的软件外包项目,更想在互联网方面做。 他们在互联网方面做了很多SAAS服务。例…

在清华讲区块链,高晓松竟这样解读共识与Token

本文仅代表作者观点 作者 | 李画 编辑 | 秦晋 高晓松2019年的第一期《晓说》,在母校清华大学做了以一场没有"诗和远方"全是苟且的演讲:《5G与区块链:文创产业的重要赛道》。他认为,5G与区块链是文创/内容产业在未来最重…

朋友聚会上,当你被cue聊聊区块链时.....

来源 | 白话区块链 责编 | 晋兆雨 头图 | 付费下载于视觉中国 转眼间,又到了一年一度的同学聚会。这次班长牵头,把班上绝多数同学都叫了过来,甚至还请了班主任王老师到场,摆了好几大桌。 一时间觥筹交错,各个都喝得满…

家用2kw风力电机满负荷的发电量有多少

家用风力发电机2kw的一天的满负荷发电量是48度电,3级风发电5级风满负荷发电,电机是永磁发电机,足功率发电,纯铜线圈缠绕,叶片是增强玻璃钢材质的

PyTorch搭建LSTM实现时间序列预测(负荷预测)

目录 I. 前言II. 数据处理III. LSTM模型IV. 训练V. 测试VI. 源码及数据 I. 前言 在上一篇文章深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中,我详细地解释了如何利用PyTorch来搭建一个LSTM模型,本篇文章的主要目…

TensorFlow搭建LSTM实现时间序列预测(负荷预测)

目录 I. 前言II. 数据处理III. 模型IV. 训练/测试V. 源码及数据 I. 前言 前面已经写过不少时间序列预测的文章: 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)PyTorch搭建LSTM实现时间序列预测(负荷预测&#xf…

TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)

目录 I. 前言II. 数据处理III. LSTM模型IV. 训练/测试V. 源码及数据 I. 前言 在前面的一篇文章TensorFlow搭建LSTM实现时间序列预测(负荷预测)中,我们利用LSTM实现了负荷预测,但我们只是简单利用负荷预测负荷,并没有利…

深度学习--Matlab使用LSTM长短期记忆网络对负荷进行预测

一、LSTM描述 长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络…

电力负荷预测数据集

电力负荷预测,用电量以及温度、湿度、风速、降雨等数据,每15min一组,共计13个月 下载链接:https://download.csdn.net/download/ncusz/82632972

Python画用电客户日负荷曲线图

Python版本:Python3.6.2 一、日负荷曲线 摘自百度百科,日负荷曲线是描述一日内负荷随时间变化的曲线。 二、数据处理 数据:申请的爱尔兰开源用户用电数据,txt格式,一个文件将近400M,用写字板打开,很卡。 截…

基于改进粒子群IPSO与LSTM的短期电力负荷预测

短期电力负荷预测是电力系统安全调度、经济运行的重要依据 , 随着电力系统的市场化 , 负荷预测的精度直接影响到电力系统运行的可靠性、经济性和供电质量。LSTM 为短期电力负荷预测提供了一个新的研究方向。本文将LSTM用于短期电力负荷预测 , 提出基于LSTM 的短期电力负荷预测模…

电力负荷预测三篇综述总结

三篇综述链接: 深度学习方法在负荷预测中的应用综述(论文阅读)光伏发电量和用电量的概率预测研究综述(1)光伏发电量和用电量的概率预测研究综述(2)光伏发电量和用电量的概率预测研究综述&#…

记录一次生产服务器CPU400%满负荷处理过程

记录一次生产服务器CPU400%满负荷处理过程 文章目录 记录一次生产服务器CPU400%满负荷处理过程步骤猜测解决方法反思总结 步骤 top命令 31779进程 占 CPU 361% ,通过最后的COMMAND可以判断是java进程 通过jvm的 jsp -l命令 查询 31779进程 是 zipkin-server-2.…

Python 多进程下开多线程满负荷工作

最开始只是有这样一个想法,后来想实现一下 本文只是写一个例子,实现了开多个进程,每个进程下面开多线程,每个进程执行单独一个任务,并行执行,进程下的多线程执行任务,并发执行 import multiprocessing import threading import timedef m_test():for i in range(25):tthreadin…

磁盘IO满负荷性能分析

磁盘IO满负荷性能分析 2011-06-26 22:30:59| 分类:linux优化 |举报|字号 订阅 磁盘IO满负荷性能分析(一) 有个项目最近发现在执行一些oracle数据库的数据补入的sql语句时非常慢,经查发现来自存储的硬盘io会冲到100busy devic…