区块链的认识与总结

Posted 一个小码农的进阶之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链的认识与总结相关的知识,希望对你有一定的参考价值。

1 区块链基础概念

中心化服务器 ==》 分布式系统 (点对点网络) ==》 区块链网络

1.1 区块链的由来

区块链系统的分类

  • 公链系统:无准入限制的去中心化分布式区块链系统,对地域无限制, 节点可以随进随出,属于单链区块链系统。
  • 联盟链系统:具有严格准入限制 的弱中心化分布式区块链系统,地域相对固定,节点需要审核进入,属于多链系统,一个通道表示一条链,联 盟链系统一般支持多通道。
  • 私有链:纯中心化区块链系统,除了具备链式数据结构以外,本质上与 现在传统的互联网业务系统没什么区别。

演进过程:比特币 ==》以太坊 ==》超级账本

  • 比特币 ==》点对点的电子现金系统(去第三方+可信执行)
  • 以太坊 ==》去中心化的区块链操作系统
  • 超级账本 ==》准入许可
    • 比特币和以太坊都是公链,超级账本是联盟链

联盟链和公链的区别就是 网络准入是否有限制

为什么要用区块链?它的特性是什么?

  • 透明:人人记账保证人人获取完整信息,从而实现信息透明;
  • 可信:节点间决策过程共同参与,共识保证可信;
  • 防篡改:数据一旦写在全网范围内经过验证写入区块链中,则很难被修改或者抹除;
  • 可追溯:发生的任意一笔交易都有完整记录,可以针对某一状态在区块链上追查与其相关的全部历史信息;
  • 隐私保护:单一节点包含了完整的区块校验逻辑,无需依赖其他节点,因此不需公开身份,提供了隐私保护前提。

什么情况适合使用区块链?

  • 什么样子的数据适合上链:需要共享的、需要具备可信度的、不能被篡改的且需要追溯的
  • 是否多方协同写入:只有一个写入者的区块链是毫无意义的,参与的各方都可以具备写入权限,相互制约
  • 多方是否相互信任:如果多方可以相互信任,那么中心化的系统将是最好的解决方案
  • TTP(Trusted Third Party-可信任第三方)是否可以解决问题?(同上)

1.2 区块的数据结构

不管是公链还是联盟链,区块的构成都是由区块头+区块体 的方式构成。区块中都包含一些共同的属性:

  • 区块头中包 括但不限于:版本号、父区块 hash、交易 merkle root、时间戳等等;
  • 而区块体则都是交易列表。


    prevBlockHash:父区块 hash;
  • timestamp:创建区块的时间戳;
  • version:区块的版本号;
  • merkelroot:区块所打包交易的 merkel tree 的 root。

最重要的是父区块 hash 和 merkle root 两个基础属性,它们是打包交易并延长成区块链的最基本的必须的属性字段。

  • 父区块 hash 是区块间链接的 桥梁;
  • merkle root 是实现交易的聚合校验与快速校验的技术手段,同时也是确 保已打包交易不可篡改的一个技术手段

MerkRoot是如何保证交易不被篡改呢?

我们可以看到merkleRoot是由每个交易分别做hash,然后再两两递归做hash,最终得到merkleRoot。那么一个交易被篡改,则MerkleRoot的值就一定会发生变化。

综合来看:区块链是一个不可篡改的数据操作集合

注意:这里的不可篡改指的是改的难度非常大,因为只要修改一个区块,那么后续的区块都需要修改

世界状态

世界状态是系统当前时间点所有状态的集合,交易是具体的某一个操作,世界状态在操作的驱动下发生改变,转化为下一个状态。

1.3 交易的数据结构

不管是公链系统,还是联盟链系统,交易都是以集合的方式存放在区块体中 的。在 Bitcoin 中是以 vector 的方式进行存储,在 NewSpiral 中是以 list 的方式进行存储。

1.4 区块链的数据结构

区块链是一个链式的数据结构,它是由 经过共识区块 按照 时序的顺序 进行链接而成的一条链式结构,通过区块 头中的父区块 hash 进行链接。

1.5 区块链的数据存储

不管是公链系统,还是联盟链系统,全节点的存储都是全量冗余存储的。即 每个节点都存储了全量的重复的区块和交易信息。当系统中的某个节点出现异常时,其他节点还能够不受影响,并且当节点恢复时可以随时再同步数据。

节点与网络

所有 节点 的 服务 和 数据库 都是一样的,数据的同步通过 共识同步 来实现

应用往一个节点存数据,那么这个节点就会广播,通过共识算法,如果其他节点认可这个数据,那么就会进行数据同步。

注意:图中应用系统只连接了两个节点,实际上它是可以连接任何一个节点的。

区块链的每个节点都存储的是全量数据,因此如果存储数据过大也会有性能问题。

这里的应用系统服务器不是去中心化的存在,联盟链才是去中心化。

数据同步

数据同步有两种情况:

  • 如果节点正常,那么就通过不断通过共识来同步数据;
  • 如果节点宕机一段时间后重启,则会通过 批量同步 来读取其他节点上的数据。

批量同步比共识快,以上图为例因为共识需要向其余三个节点进行广播。

共识是基于消息通信来确保数据的同步,它的效率取决于两方面:

  • 网络通信
  • 采取的共识算法的效率

1.6 涉及到的概念

1.6.1 通道

通道主要有两个作用:网络分片数据范围控制,数据的共识只在一个通道内进行。

如下图所示,1,3,4,6四个节点在一个通道内,他们之间会进行数据同步(共识)。同时1,6还与2,5在一个通道内,他们之间也会进行数据同步。

1.6.2 共识算法

共识的本质就是分布式系统的数据一致性

BFT类共识算法:定期选举处出一个领导者(Leader),由其接收并排序区块链 交易,领导者 产生区块 递交给所有其他节点(follower)进行验证,并“举手” 表决,通过“投票”+“协商”推翻不合格的领导者。

流程

  • 步骤1:投票挑选Leader(O(n^2))

  • 步骤2:Leader收集交易进行提案

  • 步骤3:Replica投票(由leader收集,O(n))

  • 步骤4:收集投票形成共识证明

1.6.3 智能合约

  • 业务上:业务规则定义
  • 技术上:可执行代码

执行流程

  • 第一步:应用 调用 节点服务;
  • 第二步:节点生成一笔交易,交易中会声明你想要调用哪个智能合约(tx的本质就是调用只能合约);
  • 第三步:调用本地具体的只能合约;
  • 第四步:返回智能合约的执行结果。

注意事项说明

  • 区块链中的每个节点都会执行一遍智能合约,也就是所说的 共识,这一点和传统的分布式不同。
  • 共识完成之后,应用才能查询结果

合约和交易的区别与联系

  • 合约是交易的规范,交易是合约的实体。
  • 合约定义了功能的边界,交易则用来具体触发功能。

1.7 数据上链过程

  • 步骤1:上链前处理阶段:业务数据处理 ==》进行数字签名 ==》转化为待上链数据
  • 步骤2:上链处理阶段:广播 ==》区块共识(步骤2执行完就已经上链完成)
  • 步骤3:智能合约处理阶段:合约逻辑处理 ==》修改默克尔数状态

预言机(Oracles)

作用:提供第三方可信的外部数据

1.8 区块链如何实现防篡改 & 可信追溯

区块链系统的存储内容中可以分为 不可篡改存储可修改存储 两部分内容。

  • 不可篡改存 储用于存储交易历史(即区块);
  • 可修改存储 用于存储可变数据,包括以世界状态为主体的业务数据和通道信息、参数信息、 节点信息等管理数据。

防篡改的数据,指的是已完成共识,并延长到区块链上并持久化了的 历史区块数据(历史交易数据)

这些数据是不能通过直接进行修改的,它只能通过发起新的交易,去申请修改这些数据的最新状态。

共识算法

另外,区块链系统的节点都是全量且冗余的方式进行区块数据存储的;所以, 单个甚至多个节点对数据库的修改仍然无法影响其他节点的数据库,因为好的节点数据总是正确一致的,它们能够最终保持正确的区块数据在正确的区块链上持 续延长。除非能控制整个网络中超过共识算法要求的安全阈值(POW 中是 51%, 大部分 PBFT 的系列算法是 1/3)的节点同时修改,但这几乎不可能发生(也确实 没发生过)

链式结构

在区块链中,每个区块都包含上一个区块所有数据包的 数据指纹 (哈希值),计算当前区块的数据指纹(哈希值)时,同时包含了上一个区 块的数据指纹(哈希值),形成链接关系。所以,一旦任何一个区块发生了变动, 后面相连的所有区块数据指纹(哈希值)都会有所变动,所有人都能看见和发现数 据被篡改,并且所有人都会不认可这种无效的数据。区块链中的所有节点分布式 的,节点都做了全量冗余的数据存储。区块链数据是会实时同步给所有节点记录 的,所有节点都知道区块的正确顺序,和对应的内容,也能查阅到相关数据,这就是区块链防伪、防篡改的特性,这就保证了区块链中区块数据的不可篡改。

简而言之,区块链实现防篡改与可信追溯,是基于全量的分布式冗余区块数据存储+共识算法机制+密码学来保证的。

1.8 区块链技术栈 & 区块链技术产品

区块链技术栈

  • 共识算法——CFT、BFT、POW
  • P2P通信——RPC、MQ
  • 数据存储——FS、mysql、LevelDB
  • 智能合约——虚拟机(JVM、EVM)
  • 密码学算法——哈希运算、数字签名
  • 账户模型——世界状态模型、UTXO模型

区块链技术产品

  • NewSpiral
  • HyperLedger Fabric
  • BitCoin

当下阶段,很多人对于区块链的认识依然是不全面的

  无论是在区块链刚刚被认识的早期阶段抑或是经历了多次洗牌的当下阶段很多人对于区块链的认识依然是不全面的在很多人的眼中所谓的区块链只不过是他们实现暴富梦想的工具割韭菜,打概念成为了他们投身到区块链的既定动作很显然,在这样一种狂热且激进的思想的引领下区块链的发展进入到了不健康,不理性的发展周期里。
  究其原因,对于区块链的本质和内涵缺少一个完整且全面的认识无疑是一个关键原因所在。事实上区块链并不是什么神奇的存在它就是一种技术并且是一种比以往的任何一种技术都要底层的技术既然是一种技术区块链本身就需要进行商业化的落地和应用才可以将自身的价值和作用发挥到最大。
  然而,不幸的是人们却并未把握区块链的这一本质和内涵而是把区块链看成了一个商业化的应用在这样一种思潮的影响之下我们才看到了以发币或者ICO为代表的一系列的乱象的出现很显然,这样一种发展模式对于区块链的伤害是相当大的从某种意义上来讲这也是区块链的发展之所以会走这么多的弯路的关键原因所在。
  既然区块链的本质是一种较为底层的技术那么,元宇宙的本质和内涵是什么呢其实,元宇宙的本质和内涵就是一个商业化的应用并且是一种囊括了诸多的技术的比较具有想象力的商业化的应用既然元宇宙是一种商业化的应用那么,它更多地追求的是一种商业化的落地和应用,更多地追求的是用户和流量更多地追求的是与资本之间的关系。
  通过分析区块链和元宇宙的本质和内涵我们可以非常明显地看出区块链需要也必然与元宇宙实现深度的融合才能将自身的功能和作用发挥到最大。而元宇宙则是需要不断地从区块链这里汲取营养,才能走得更远,走得更加坚实。
  明确元宇宙和区块链的用户和服务对象
  在很多情况下,人们之所以会将元宇宙和区块链混为一谈,另外一个很重要的原因在于人们并未真正搞清楚元宇宙和区块链的用户对象而仅仅只是将两者看成了一个雷同的存在当人们对于元宇宙和区块链的用户对象失焦的时候是很难抓住重点很难实现聚焦的。
  通过上文的分析我们知道了区块链的本质是一种技术并且是一种相对较为底层的技术既然区块链是一种技术那么,它的用户和服务对象更多地是B端用户更多地是那些商业化落地和实践的玩家如果我们对C端用户去谈论区块链的技术无异于在自说自话。
  这是那些区块链投机者之所以会用概念和噱头来蒙蔽C端用户的关键原因所在也是区块链沦为一种概念和噱头的根本原因人们之所以会用区块链来发币或者ICO就是抓住了区块链这种技术并不容易被C端用户理解和接受的特点,以此来割韭菜。
  相对于区块链的底层和基础,元宇宙则是一个直接面对消费者,直接面对用户,直接面对C端用户的存在。对于元宇宙来讲,它要做的,并不是将算法优化,并不是数据传输快速,而是要将这些看似枯燥无味的技术,尽可能多地商业化,尽可能多地被更多的C端用户接受。
  说到底,区块链是一个以B端用户为服务对象的存在,而元宇宙则是一个以C端用户为服务对象的存在。认识了这一点,我们才能对元宇宙和区块链有一个更加明确的认识,我们才能对元宇宙和区块链的未来发展有一个更加清晰的认知,我们才能跳出混沌不堪的发展状态,真正进入到一个全新的发展新阶段。

以上是关于区块链的认识与总结的主要内容,如果未能解决你的问题,请参考以下文章

区块链的现实之痛与解决之道(区块链的爱与恨)

区块链的技术理念

当下阶段,很多人对于区块链的认识依然是不全面的

认识区块链

区块链的宿命,数字经济的局

区块链的几种认识