zoukankan      html  css  js  c++  java
  • 区块链是如何实现数据的安全共享和业务协作的?

      区块链是如何实现数据的安全共享和业务协作的?

      区块链,简单来讲就是在解决信任问题的基础上实现了数据共享和业务协作。

      那么,作为一种分布式的底层基础设施,区块链是如何做到数据共享的呢?它为什么不可篡改?而它又是为什么在多节点之间建立信任的?在《区块链100问》的“技术开发篇”中一一给出了答案。

      区块链如何做到数据共享?

      区块链技术关心的并非是数据的共享,而是数据控制权限的共享,此处的权限主要是指数据的修改和增加的权力,它主要包含两个含义:一是谁可以进行数据的修改;二是以何种方式进行修改。

      在互联网模式下,数据读取、写入、编辑和删除一般都伴随着身份认证操作,只有特定的人才能对数据进行修改,而在区块链模式下,尤其是公有链体系下,任何人都可以参与对数据的读写,并且以分布式账本的方式构建了一个去信任的系统,参与读写的各个组织或个体可以互不信任,但能对系统存储数据的最终状态达成共识。

      简单地说,区块链式共享和互联网式共享的本质区别在于区块链共享的不仅仅是数据,而是数据的控制权。

      由于网站运营方完全控制了中央服务器,这些组织可以随意地编辑和处理数据。

      虽然组织也需要在一定的法律和协议下完成数据修改等行为,但由于其是掌握资源的一方,个人用户很难享有完全的控制权。

      举一个简单的例子,某一用户上传了一张照片到网站平台上,并且希望朋友们能看到这张照片。排除掉一些非法要素,这张照片最后的控制权是归谁呢?

      显然,从用户的角度来看,这张照片是归自己所有的,但事实上,这些社交网站才是真正的控制方,他们可以随意的进行修改,用户却毫无办法。

      也就是说,在现有互联网体系下,只要掌握了网站平台的运营权,就能完全地控制平台上的数据。

      而在区块链体系下,数据不被任何权威方掌握,其权限是由规则来进行控制的,这些规则的主要目标是来规定什么样的信息是有效的,同时还规定了参与者应当如何对其进行反馈。

      这些规则通常是预先定义的,加入区块链网络的参与者必须遵守规则。

      当然,从技术上来说,参与者可以自行忽略某些规则,并根据自身利益来构建一些无效的数据。

      但是,由于区块链共识机制的存在,其他参与者可以根据预定义的规则将这些无效数据排除在网络之外。

      总的来说,区块链根据技术层面的规则体系来规范数据的写入行为,而互联网是通过权力和资源来控制数据,这是区块链式共享和互联网式共享的根本性区别。

      区块链是以权限分享的形式,让每个参与者同时作为数据提供方、验证方和使用方,共同维护区块链数据的安全和有效性。

      为什么区块链可以做到不可篡改?

      区块链是从零开始有序的链接在一起的,每个区块都指向前一个区块,称为前一个区块的子区块,前一区块称为父区块。

      每个区块都有一个区块头,里边包含着父区块头通过算法生成的哈希值,通过这个哈希值可以找到父区块。

      当父区块有任何改动时,父区块的哈希值也发生变化。这将迫使子区块哈希值字段发生改变,以此类推,后边的子子区块,子子子区块都会受影响。

      一旦一个区块有很多后代以后,除非重新计算此区块所有后代的区块,但是这样重新计算需要耗费巨大的计算量,所以区块链越长区块历史越无法改变。

      以现在每秒都有新的交易产生,所以需要趁着新的交易没有产生的那一瞬间,快速运算出破解程序的结果,从而实现篡改。

      但以目前计算机的能力来看,攻击所用的时间比正常的交易时间多得多,所以基本不可能伪造成功。

      另一种方式是掌握全部节点的50%以上的节点来篡改,这就相当于相同的一个账本,分散记录在互联网任何一个角落的计算机上,除非能控制这里大多数的计算机,但这是非常难以实现的,否则将不可能进行篡改。

      区块链系统中不同节点之间是如何建立信任的?

      在区块链系统中,不存在任何中心化节点帮助它们互相连接,当一个节点A第一次加入网络中来时,那它首先会通过一种算法找到距离它最近的一个网络节点。

      节点将一条包含自身IP地址的消息发送给相邻节点,相邻的节点再将这条消息向与自己连接的节点进行分发广播,以此类推,最终导致新节点的IP地址在全网进行分发,每个网络节点都知道节点A的地址,可以与之建立直接连接。

      节点A在找到相邻最近的节点之后,还会向与它相邻的节点索要它们已知节点的IP地址列表,拿到这些节点的IP地址列表之后,节点A便可以主动与这些节点建立直接连接。

      当节点A加入到网络中之后,一般会与正活跃的节点连接。如果难以找到这样的节点,节点A会根据自己得到的IP地址列表,来找到那些长期稳定运行的节点,这种节点就是种子节点,通过种子节点能够帮助节点A更快速的发现网络中的其他节点。

      新节点建立更多的连接,使节点在网络中被更多节点接收,保证连接更稳定。

  • 相关阅读:
    MySQL5.7安装教程(压缩版)
    ASP.Net 添加 Interop for Word, excel 插件
    OpenLayers-加载地图数据(Google Map)
    OpenLayers学习方法
    OpenLayers 项目分析——(二)源代码总体结构分析{感谢原作者对于大家的贡献!}
    OpenLayers项目分析——(一)项目介绍{感谢原作者为大家的贡献!}
    OpenLayers 项目分析——(三)BaseTypes {感谢原文作者对于大家的贡献!!!}
    GeoServer安装及配置过程(配置shapefile)
    如何查询postgreSQL 里面某个数据库中所有用户定义的数据表的名字
    WebGIS(PostgreSQL+GeoServer+OpenLayers)之三 OpenLayers客户端数据显示
  • 原文地址:https://www.cnblogs.com/yyuyu/p/13232294.html
Copyright © 2011-2022 走看看