快好知 kuaihz

Youtube网红老师带你看懂区块链的作用

Youtube 的科技网红Siraj以风趣幽默的方式讲解科技热点而备受追捧,在这期内容中他讲到了近年来大热的区块链。

附有中文字幕的视频:

大家好,我是Siraj。这期我们讲讲不太一样的内容,那就是区块链,以及如何利用它来提升AI。

Internet Protocol Suite

万维网只诞生了几十年,而且发展了好几个数量级。我们共同定义了当中沟通的标准,称为互联网协议族(Internet Protocol Suite)。

最低层的链路层把数据放到线上,然后互联网层发送数据,接着传输层保持数据,之后应用层进行抽象,以我们所熟知并喜爱的APP的形式。对机器这运行得很好,但是当中缺失了一层。

那么有哪种协议能让这一过程不仅仅是交换数据,而且还交换价值呢?

当下的主流方法在前因特网时代就已经发明了,需要使用到集中式的清算所。有时机器需要等很多天,才能实现款项的转移。但是在其他方面,它们相互间以难以置信的速度进行交流。如果它们能够相互发送微支付,就像电力、存储空间和计算,这些都无需中间人的介入。

比特币和其他加密货币能够解决这个问题,它们将作为用于值转移的第五个协议层,其背后使用的区块链技术使这一切都成为可能。区块链首次让机器同意进行值转移,而无需中央机构介入。

在现实世界中,如果我创作了一幅画,只有我自己拥有这幅画。但在互联网上,如果我创建了一幅数字绘画,你可以复制它,然后我们俩都拥有这幅画。如果不通过记录这幅画拥有权的中央服务器,我们没有办法证明谁拥有它。我们必须信任服务器,即中间人。

区块链让我们以分散的方式达成共识,从而避免坏人错误地宣称所有权。不仅仅用于绘画,还可以适用于任何资产,比如:比特币。

如何用来改善AI

但怎么用它来改善AI呢?

一个用例是给数据集和机器学习模型赋予名声,如何知道你使用的数据和预先训练的模型是好的,并且没有被被篡改呢?你要相信唯一的来源,除非使用区块链。

DeepMind使用区块链为医疗数据创建了一个公开可验证的审计系统,当中记录了他们对患者数据的处理,因此患者能够知道他们的数据是否被使用以及当中的原因。一旦添加了数据被使用的记录就无法删除,这意味着患者可以验证是否有人篡改过任何条目。

另一个用于训练模型的P2P网络,除开使用AWS和谷歌云等服务训练AI。想象下一个系统,人们可以出租多余的计算能力帮助他人训练模型,以获得TensorCoin作为报酬,或者是完全由AI运行的公司。

区块链让数据库分散化,如果AI存在区块链中没有人能够控制它。那么它能在网络上作为独立实体存在。支付它所需要的服务,寻求最初的一系列规则。

一个例子就是自动驾驶汽车网络,完全由AI运行和维护。

让我们用Python构建简单的区块链,以便了解这个出色的数据结构的原理。

区块是什么?

首先让我们定义下区块是什么。为了简单易懂,可以说每个区块代表一个简单的交易,两台机器之间值的转换。根据一些重要的属性,对区块在其类别中进行定义。

指数代表了其在一系列区块中的位置,时间戳表明其创建的时间。还储存了发送者定义的数据,以及两个哈希值:一个是前一个区块的哈希值,另一个是自己的哈希值。区块的哈希值具有双重目的。这是其唯一的ID,并验证数据的完整性。

这里我们使用了流行的加密哈希算法SHA256,为每个区块生成一个256位的签名。

如何生成区块

那么区块是如何生成的呢?

用户在交易中提供一些数据,所以我们将其作为生成函数中的唯一参数。由于每个区块都是有顺序的,我们必须提取上一个区块,找到这个区块的指数和哈希值。也给它一个时间戳,因此我们知道它是何时产生的。

因此每个生成的区块通过储存其哈希值指向前一个区块,这是一连串的区块区块链。

第一生成的块称为创世区块,我们通过编写硬代码在其函数中定义属性。我们就用它来对区块链初始化,并将其存储为内存列表。

还记得我曾说过,区块的哈希值既作为身份有能够验证其完整性。我们可以用哈希值来确定新产生的区块是否有效。

给出一个新区块,以及上一个区块。首先我们可以通过其指数检查顺序,然后可以检查其上一个哈希值,是否与已经验证的前一个区块相符。最后计算新区块的哈希值,确保符合它存储的哈希值。如果通过检测,那就被验证了。

假设所有节点都存储了区块链的副本,我们需要有办法选择应使用哪个区块,以防它们间存在矛盾。假设两个节点生成了同一个区块数字,我们的解决方法是选择区块最多的区块链。因为它存在的时间更长,则更有可能是真实的区块链。

对于新的区块,我们会检查它在编码的方式上是否有效。如果它有更多的区块,则用新的代替我们的区块链,否则我们将认为其无效并拒绝。因为每个节点均存储区块链的副本,而且当发生交易时会不断生成区块。我们需要某种方法保持每个节点的同步,为此当生成新的区块时每个节点会将该信息传播给其他节点。

当一个节点连接到新的节点,它会查询其最新的区块。当遇到比现有区块指数更大的区块时,它会将区块添加到现有的区块链上,或者查询其整个区块链。

我们可以对节点进行封装,从而用户和其他节点能够进行查询,这是通过创建HTTP服务器。

我们能够对一些操作创建端点:

一种是在现有的区块链中列出所有的区块

另一种是将用户提供的数据作为参数,创建新的区块

还有一种是通过列出网络中所有其他节点,或者添加新的。

因此用户可以通过HTTP请求控制节点,然后它将通过P2P WebSockets与其它节点进行交流。

这就是我们简单的区块链,它很小,并不包括比特币区块链的所有功能。但它是一个例子。

Sybil 攻击

然而有一个我没讲到的关键特征,即工作量证明算法。面对Sybil攻击我们的区块链很脆弱,这是当不怀好意的人创建许多节点,在网络上获得不成比例的巨大影响。一旦他控制了51%的网络,他可以验证自己的交易,他可以对同一笔钱进行多次使用。

为了防止这种情况,比特币的挖矿节点进行大量的计算,审批每一笔交易,并获得比特币作为计算工作的报酬。

为了让新生成的区块被网络所接受,矿工必须完成工作量证明,当中包括区块中的所有数据,至少51%的节点必须达成共识,从而说明这个新的区块是有效的,能够被加入到区块链中。

那么坏人必须有比网络中半数更多的计算能力,对于比特币来说,这相当于更多的计算能力,要超过世界上500台最快的超级计算机的总和。没有人有那么多的计算能力,连马克·扎克伯格也没有。

这就是为什么比特币的网络仍然是安全的,即使达到50十亿美元市值,每周都会产生新的区块链用于不同的情况。

结语

当谈到区块链,要说的实在太多了。我们才刚刚开始探索,当我们用区块链作为改善AI的方式时会发生什么?

它可以帮助我们检测数据和模型的质量,当对其相互进行训练时能够创建P2P交换,创建之前不可能时间的业务,或者将AI发展的不同方面套现,甚至开发完全由AI运行的独立组织机构。

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:区块  区块词条  作用  作用词条  Youtube  Youtube词条  老师  老师词条