写点什么

关于区块链的学习笔记(二)

用户头像
姬翔
关注
发布于: 2021 年 08 月 09 日
关于区块链的学习笔记(二)

需要说明的是,我写这些并不是鼓励或是推荐购买任何数字货币。投资是自己的事情,需要自己做决定,并承担后果。

工作量证明机制

上次我们简单介绍了区块链是什么样子,为什么叫“链”,但在去中心化系统中还要很多问题没有解决,今天就要聊一个最重要的特性:工作量证明机制。由于去中心化需要假设网络中所有结点都是不可信任的,那么如何解决数据的一致性呢,具体来说要解决以下这些问题:

  1. 以谁的数据为准?

任何结点都可以修改自己所下载的账本,也就是说任何人都可以伪造账本。那么谁的数据才是对的?在去中心化的网络下,我们认为,大多数人认识的数据是对的。只要我控制了一半以上的结点伪造同一份账本,那么相当于整个账本都被我修改了。

2.“大多数人”的问题

在网络世界中我可以用程序伪造出无数多的人出来投票,而计算机并不能直接分辨出是人还是狗,是生物还是程序。

3.意见分歧问题

在同一时刻,有多个人都在告诉别人这账应该这么记:有人说 A 给 B 转了 10 块钱,有人说 A 转了 20 块钱给 B,而且他们的数据都合法,那么整个网络应该听谁的?


为了解决这些问题,比特币使用了 Proof-of-Work 工作量证明机制,也就是我们常说的挖矿。所谓的挖矿其实就是用大规模的计算来找到一个符合系统要求的区块 ID,而找到方法只有暴力破解。通过这种“极度消耗算力”的方式来提高成本,可以遏制或是解决下面几个问题:

  1. 修改几乎变得不可能

生成一个区块需要大量长时间的计算,那么我们去修改数据内容也是一样的,要伪造一个区块,就要修改后面所有的块,从而使修改整个链的成本非常之高。

2.能掌握 51%算力的人变得几乎不可能

除了伪造一条链的成本很高外,还要控制大多数人的算力,和第一条加起来使得伪造一条链几乎变得不可能。

3.解决分歧

一方面,费这么大劲儿找出来的区块 ID 已经有效降低了大家有意见冲突的概率;另一方面,就算是出现了合法冲突的区块(同时出现多个合理的区块,即区块链出现分支、分叉),也就是多个合法的账本,也因为挖矿成本太高,矿工们只能赌跟进其中一个,大多数人选择的那一个分支的链就会越来越多,另外一边也就无人问津从而作废了。


这个 pow 机制(即上文所说的 Proof-of-Work 工作量证明机制)成本这么高,但却是目前去中心化系统中最安全的玩法。这里可以再多说几句,这个挖矿算法并不是比特币开创的,其原型叫 Hashcash,最早是 1992 年一篇论文里提出来的,初衷是限制垃圾邮件。简单说 Hashcash 一开始要求邮件发送方对邮件头计算一个 160bit 的 SHA-1 哈希值,且其前面需要有 5 个 0,也就是 20bit 的 0,接收端会检查。这样做是因为对于正常邮件来说这点算力没什么,但对于需要大量发送垃圾邮件的人来说,这就是一个很大的成本了。


比特币的挖矿具体来说也和这个类似,它要计算一个前面若干位全是 0 的哈希序列值。在作者写这篇专栏文章的 2017、2018 年,这个难度是要在前面找到 18 个 0,一般的电脑和服务器就不要想了。


要想详细说明整个挖矿机制,需要再介绍一下加密和哈希值的一些知识,这部分我们留在下次再进行分享。

用户头像

姬翔

关注

还未添加个人签名 2018.12.05 加入

还未添加个人简介

评论

发布
暂无评论
关于区块链的学习笔记(二)