区块链笔记:区块链概念、相关对比、技术特点、CAP定理、FLP定理、价值网络

什么是区块链

对于区块链这个技术名词出现在很多文章里面,有很多解释。站在技术角度来说,它是指一种数据的记录格式,任何系统都要记录数据,区块链对于其他的数据库或者工具有什么不一样的地方呢?

  • 记录数据的方式:它把持续不断产生的数据分成一个个的区块(data block),每一个区块之间通过哈希值将前后的区块进行链接。

  • 每一个区块:由区块头和区块体组成,区块头包含摘要信息,如区块哈希、梅克尔根、区块时间戳等,不同的区块链系统会有不一样的设计。区块体是主要存储数据的地方, 包含交易事务的数据,这里的数据主要看区块链系统是面向什么样的功能和场景的,在面向结算支付领域,这些数据可能是结算支付的交易信息,如果是面向一些实体应用的,如:农产品溯源、企业进销存等包含的可能是具体的表单数据,总结来说区块体中包含的是一些业务数据。

区块链技术

指以区块链账本格式为中心的一系列技术的组成,一个完整的区块链系统,至少要包含如下的核心技术栈:

  • 共识算法:用于保持每一个不同节点之间账本的一致性。

  • 密码算法:除了对区块头和事务数据进行哈希计算,主要应用就是进行签名(确权)。

  • 脚本系统:相当于区块链系统中的一个发动机,用于驱动各个不同的智能合约,指令集的调用,以及每个节点之间通过p2p网络进行连接,也就是网络服务。

  • 账户模型:用来标识链上的使用者,具体有很多分类。

  • 区块链账本:用于存储数据。

  • 网络服务:每个节点之间通过p2p网络进行连接。

区块链即指一种特定的存储结构,又是以区块链账本格式为中心的一系列技术的组成,它们共同组成了区块链的技术生态。

区块链与比特币的关系

  • 比特币是使用区块链技术开发出的第一款应用软件:这款应用软件站在数字货币的角度所作出的设计,比特币的底层技术栈就是前面我们所说的区块链核心技术。

  • 区块链的概念是通过比特币技术白皮书带出来的:在比特币白皮书中并没有block chain这样一个说法,block chain是后人阅读白皮书后所作出的一个总结。

  • 区块链的技术定义随着发展是超出比特币本身的范畴的:比特币作为区块链的首个应用,有它所特殊的历史地位和价值,但技术本身并不会停止,区块链技术的发展一直不断的迭代,包括底层技术格式、密码技术的选用、共识机制的设计、脚本系统功能等,这些是超出比特币本身范畴的。

区块链与数据库的关系

  • 区块链系统就是一个数据库系统,本质上就是一个账本数据库

    • 账本数据库:用于存储区块数据,是存储的基本部分。
    • 围绕这个存储部分由共识算法来维持各个节点的账本数据的一致性,由密码算法实现各个区块之间的链接,实现数据的签名和确权,由账户模型来表达这个数据是由谁产生的,谁发起的,以及流转给谁的,由脚本系统来具体驱动这些脚本数据的验证,执行等操作。
  • 区块链与传统数据库的对应关系

    • 区块链账本存储:对应于传统数据库的数据库文件
    • 脚本系统:对应于传统数据库的SQL执行引擎,它是可编程的。
    • 账户模型:对应于传统数据库的数据库用户,它是与密码相关的一些功能。
    • 密码算法:对应于传统数据库的身份验证&数据验证
    • 共识算法:对应于传统数据库的分布式数据库共识,两者差异并不大,传统数据库系统通常在机房内部运行,是一个理想网络环境;而区块链系统对于公链来说,它是一个运行在互联网网络结构上的,它的共识机制会更多考虑异步网络一致性的保证。
    • 经过以上对比可知,区块链系统可以看做是一种结构别致的数据库系统

区块链系统的技术特点

  • 点对点网络:区块链网络不是一个分布式网络,而是一种p2p(点对点)网络,p2p网络每个节点都是对等的,不像分布式网络是把一个任务从服务器分布到很多节点上进行分工处理。

  • 共识验证:所有在区块链网络上产生的数据,都要通过一个共识协议,在所有节点上进行验证。随着后期技术迭代,也有一些轻量级的节点,可能不会做很完整的验证。但是从最完整的全节点的角度来说,每个产生在区块链节点中的数据,都要通过共识机制的验证,也正因为如此,区块链系统通常具有一定的不可篡改性。

  • 不可篡改性:这个不可篡改性需要看网络的广泛度,如果节点是一个私链,也就是运行在自己的服务器上,那谈不上有什么不可篡改性。不可篡改性一定要求网络足够广泛,如比特币,节点网络遍布世界各地。

  • 数据确权:在区块链系统中所有的上链数据都是通过密码算法进行签名的,因此所有数据都是可以确权的,每个人所产生的数据都要使用自己的私钥来进行签名,虽然不知道具体是谁,但数据是具有所有权的。

  • 隐私保护性:通过密码技术进行所有权的确权,也保证了隐私保护性,没有谁可以轻易篡改和泄漏,在区块链系统中通过密码系统标识账户,与真实信息有一定的隔离性,也就是隐私保护性。

  • 价值网络:这是区块链系统的灵魂特性,因为前几个特性,区块链就有条件形成了价值网络,也就是说在这样一个网络里面可以传递带有价值的数据,这些数据在链上进行全网公证,并且具有不可篡改性,同时实现数据的确权性,实际上使得这些数据就具备了资产的特点,这也是区块链网络可以称为价值网络的原因。

与区块链系统两个相关定理(CAP、FLP)

  • CAP定理:对于区块链系统有三个基本指标,构成了一个不可能三角

    • C : Consistency 一致性:在p2p对等网络系统,它的数据存储在很多个节点上,在很多节点上的数据能否保持一致。
    • A : Availability 可用性:系统性能各方面是否是一个可用的系统,如果一个系统的性能过低,它就不是一个可用的系统。
    • P : Partition Tolerance 分区容错性:在网络中,一旦发生故障,这个系统是否具备良好的容错性继续运行。
    • 为什么叫不可能三角:在「异步网络」中,互联网就是一个典型的异步网络,而家庭网络和企业网络不能算是异步网络,它们是一个理想的网络状态。在网路情况比较复杂的情况之下,我们很难同时完成这三个指标,以比特币为例:它要保证一个数据的分区容错性,一旦节点之间的通信发生故障,它还能继续的运行下去,那它就要牺牲一定的可用性。一个可用性很强的系统如云服务系统是集中式的,而比特币并不想做成一个集中式的系统,否则就失去区块链的意义了。当要保持一个分区容错性的时候,就不得不在可用性上做出一些牺牲,它所牺牲的就是一些性能,它是每十分钟经过一个区块, 每10分钟有足够的时间把产生的区块在全网中广播,这就付出了一个性能的代价,只为了让节点保持一个一致性。换言之,如果我们设计了一个区块链系统,它的可用性很强,那必然整个网络就一定带有中心化的特征的。举个例子:EOS,它采用21个超级节点来进行区块的产出,整个网络中所有的区块,都是在这21个超级节点中轮换的来生产的,它提升了性能。它不像比特币,在整个网络中通过一个工作量的证明,去随机的选择一个节点来产生区块。EOS采用相对中心化的方式来产生的区块,牺牲了一定的容错性,但增强了可用性和一致性。为什么牺牲了容错性呢?因为所有的区块都是在这指定的节点中产生,那指定的节点如果发生了任何问题,比如一旦受到攻击,更容易产生数据错误,这个就叫CAP不可能三角。另外,在很多学科里都有不可能三角定理。
  • FLP定理:在网络可靠,同时又允许存在节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。

    • 区块链网络中的数据是最终一致性的,也就是主链确认。
    • 节点必须是独立验证的,应该是弱交互或无交互验证。
    • 每个节点都要保存独立完整的账本数据才最安全。

区块链系统与价值网络

价值网络是区块链的核心功能,在设计区块链相关的产品的时候,一定要始终的把这点凸显出来,否则区块链系统的价值是非常有限的。如果只是用来存储数据,转发数据,数据共享,那现有的互联网各种各样的大数据系统完全可以胜任,区块链网络系统的真正价值在于可信网络的价值传递,它的价值网络。

  • 区块链系统内部的数据,都是必然经过了网络中各个节点的验证的。
  • 网络中转发的数据,都是有用户所有权(通过密钥签名)的。
    • 这里的密钥签名特指一个公开密钥算法。
    • 在区块链中的指椭圆曲线密码算法以及其他类似不对称密码算法。
    • 它有一个私钥和公钥,所有用户产生的数据都会使用自己的私钥进行签名,这就使得所有上链数据具备用户所有权。
  • 上链存储的数据(写入区块的数据),都是有用户所有权的。
  • 所有权可以在网络中进行转移,且网络提供证明。
    • 区块链网络具备一种审计能力,这就是为什么区块链系统是一个可信网络系统。
    • 这样的可信网络系统为我们实现数据资产化提供了技术支持。
  • 可溯源且不可篡改。
    • 可溯源是因为数据本身就是一个个的区块,区块中的事务也是一个个环环相扣的。
    • 所有数据都要经过公证之后才能进行存储的,所以任何个人是无法进行篡改的。
发布了431 篇原创文章 · 获赞 251 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/104793696