当前位置: 首页 > 科技 > 区块链 > 链游说第三十六期:从互联网到区块网_腾讯新闻

链游说第三十六期:从互联网到区块网_腾讯新闻

天乐
2020-08-24 23:35:49 第一视角

嗨,大家好,欢迎来到第三十六期的链游说,我是你们的好朋友——链游小熊。

互联网的问题与区块链

互联网这个概念你并不陌生,不管你愿不愿意,你都必须承认,你的生活已经被互联网掌控,你可以一个月不出家门,但你很难一个月不上网。随着社会的不断向前发展,越来越多的东西开始向网络转移,而且这一趋势越来越快。那么,互联网没有问题吗?当然有,你我都接触过网络的各种问题,比如数据泄露、计算机病毒、垃圾信息。

那么,如何解决这些问题呢?我们抛开法律层面、人文层面,单看技术层面的解决方案。这就涉及一个偏哲学的问题:互联网的实质是什么?互联网实际上是由一个个的网络设备和终端节点构成的,所谓的网络设备和终端节点,就好比你家的路由器连接着各种电脑、手机。在互联网从终端到终端的过程中,要经过众多的线路和网络设备,在这九曲十八弯的“取经路”上,其中任意一个环节出现问题,都可能导致网络的不可达。

中心化节点的损坏会导致数据丢失,硬件设备的损坏会导致网络直接宕机。即使硬件都完好无损,各个终端对于带宽资源的争夺也会导致网速过慢。就算确保一切都完好,依然会存在各种各样的网络攻击。这些情况可以归集为一个概述化的问题———中心化的网络结构中存在恶意节点,即所谓的“不可信网络”。

对于不可信网络中达成共识的问题,其实很多学者和专家都有相关的研究,但是直到比特币区块链系统出现前都没有一个实际可用的解决方案。在本章中,我们会尝试从不可信网络中达成共识这一问题的研究路径去看区块链网络的诞生,同时也为后面我们谈到的通证经济模型的设计问题埋下一个伏笔

点对点网络的互不信任问题

点对点系统意味着不存在中心节点,想要这样一个网络运行,就需要所有的使用者都拥有一个自己的客户端,这个客户端能够发送和接收交易,而且能识别其他节点发送的交易是否合法。要做到这一点,就需要保存一些基本的数据来记录所有参与者的行为。对单个节点尤其是普通用户的节点来说,满足7×24小时在线基本上是不可能的,那么节点连接网络的第一件事情就是通过其他在线节点获取自己在离线这段时间内的行为数据。

但是,在公开的网络中,其他节点并不都是可信的,甚至有恶意节点会故意传播假数据,新登陆的节点需要从其他节点获取数据,因此这就要求在系统的参与节点间有一套识别机制,或者能够判定数据是否正确,或者能够判定节点是否可信,即需要在互不信任的节点之间达成信任。

拜占庭将军问题

系统节点间的识别,其实就是点对点通信中的基本问题:如何在存在消息丢失问题的不可靠信道上通过信息传递的方式达成一致性,莱斯利·兰波特等人在1985年将这一问题形象地描述为拜占庭将军问题。

拜占庭是一座富饶强大的城堡,周边的10个部落都想攻占它,但只有5个以上的部落同时进攻的前提下,这些部落才能取得胜利,否则进攻的部落会失败且被其他部落吞并。而这些部落互不信任,还可能有背叛者。各个部落之间只能通过互派信使传递信息,互相告知进攻时间,以期达成协同。在这样的情况下,每个部落在同一时间会收到不同的时间信息,而怎么甄别信息的真假并达成进攻时间的一致性,就是拜占庭将军问题所要解决的问题。

在这个问题中,存在诚实节点和欺诈节点,信息通路有可能是畅通的,也有可能是不通的。在这样的环境中实现具有容错性的分布式系统,即在部分节点失效后仍能确保系统正常运行,这个问题是无解的。

所以,我们要想在这样的网络中实现一致性,只能在信息通路没有问题的情况下提出解决方案,也就是说在限定条件的情况下才有解决方案。

拜占庭将军问题的提出标志着关于分布式的可靠性理论的研究已经进入实质性阶段,那么具体实践的出现也就不远了。

非对称加密

在互联网这个不可靠渠道上传递隐秘信息,离不开加密技术的支持。在前文中隐含了一个识别交易是否合法的问题,也是一个认证问题的处理过程。传统的加密和解密都使用同一个密码,但是这套体系只适合在信任的人之间传递隐秘信息,而且最初的密码怎么传递给对方是一个很大的问题。

1976年,惠特菲尔德·迪菲与马蒂·赫尔曼在论文《密码学的新方向》中提出了公私钥加密体系,开创了非对称加密算法。这套系统避免了在不安全的网络上传递密码的安全隐患—使用私钥对信息进行签名后,使用公钥可以验证该签名是不是对应的私钥发出的。

使用非对称加密算法的过程是这样的。

(1)A和B之间进行通信的前提是,双方都需要使用非对称加密算法生成自己的公私钥。

(2)两人分别将自己的公钥发送给对方

(3)A使用B的公钥将要发送的信息进行加密并发送给B,B使用

自己的私钥将信息解密并获取信息原文。第三方即使截获密文并知道B的公钥也无法对加密信息进行解密。

(4)A使用自己的私钥对要发送的信息进行签名,并将信息和签

名发送给B。B可以使用A的公钥来鉴定签名,判断信息的原文是不是A发出的,从而保证信息不被篡改。

目前广泛使用的RSA算法、因比特币系统而广为人知的椭圆加密

法等,都是非对称加密算法

点对点网络

在传统的网络服务结构中,各参与节点并不是对等的,以互联网中的网站为例,信息和服务的提供方通过服务器提供服务,而使用者则通过访问服务器获取服务。网络中绝大多数的服务都采用这种 Browser/Server(浏览器服务器)或 Client/Server(客户端服务器)结构,即以中心化的方式提供服务。

图:基于服务器的模型 vs 点对点网络

1999年,肖恩·范宁编写的在线音乐共享程序纳普斯特( Napster)开始爆发,后续出现的电驴( eMule)、比特流( BitTorrent)开始被大范围使用,甚至占据了当时网络中大多数的流量,这些点对点对等网络开始被大规模使用。在点对点网络中,各个参与者之间是完全对等的,它们各自拿出自己的一部分资源提供对外服务其他对等节点可以直接访问这些内容。因此,所有的参与者既是资源、服务的使用者,又是资源、服务的提供者。

以点对点方式形成的网络,是一个非中心化的系统,因此服务更加稳定,不再依赖单个节点的可用情况。而且,从理论上来说,随时加入节点可以提升整个网络的性能,使其扩展性更强。同时,信息可以在任意参与者之间进行转发,不再需要通过固定的节点实现转发,可以更好地保护用户隐私。另外,由于在点对点网络中可以调用节点自身的资源,所以对部分服务来说,它们更倾向于采用这项技术来降低自己提供服务的成本。

默克勒树

默克勒树只是一种处理数据的思路。它是拉尔夫默克勒在1980年发表的论文中提出了这个思路,当时提出这个思路是为了生成数字签名证书的公共目录摘要。这种结构很适合用大量不同的数据生成一个简短的摘要,同时可以根据一系列关键路径形成一个数据包含的简短证明。

默克勒树的构造离不开哈希函数的配合,整个生成过程如下。

(1)将所有要包含数据的哈希值按照某个顺序进行排列,如果是奇数个,就将最后一个复制一份。

(2)根据排列后的顺序,将所有哈希值两两相合并生成新的哈希值,如果是奇数个,就将最后一个复制一份。

(3)重复(2)的过程,直到生成唯一的一个哈希值为止。

利用这套方案,可以很方便地比较两个节点的数据中不一致的部分,因此它在点对点网络中被广泛使用。对于它原本被提出的作用,可以使从根节点开始到指定节点的路径中通过的所有节点和相邻节点的哈希值形成一个证明链条,很方便地验证目标节点是不是在这个默克勒树中。

哈希运算

哈希运算是一种散列算法,就是将任意长度的信息映射到一个指定长度的目标域中。可以想象一下,将大量信息转换后放入一个很小的空间中,这个过程一定会带来信息的丢失,而在算法设计中,为了避免反向求解均采用不可逆算法。

要避免逆向求解,输入的变动和结果的变动一定是不相关的,也就是说,要根据一个指定结果找到相应的输入,只能通过改变输入的方式,不停地尝试。有算法就会有人尝试破解,由于计算过程的不一致,不同算法的安全性是不一样的。

在所有的哈希运算中,SHA(安全散列)算法是美国联邦信息处理标准认定的安全算法,目前来说它是很安全的,因为暴力计算的成本是很高的。比特币系统到处采用的SHA256就是这个算法家族中的一员,它是指将任意信息反映到一个256位长度的结果中。

那今天就和大家分享到这,感谢艾场,感谢链游玩家,感谢优贝迪联名播出,谢谢,我们下期见!

#链游玩家# #区块链# #艾场fieldchain#

提示:支持键盘“← →”键翻页
为你推荐
加载更多
意见反馈
返回顶部