网赚论坛

 找回密码
 免费注册
查看: 474|回复: 0
打印 上一主题 下一主题

比特币的另类视角(二)——到底,什么是比特币?(下)

[复制链接]

20

主题

20

帖子

80

积分

Ⅰ级财主

Rank: 1

积分
80
跳转到指定楼层
楼主
发表于 2017-10-30 18:05:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说到比特币是“比特币是人类在数字世界复制最原始的货币交易的所有尝试中,到目前为止,第一个接近成功的,也是唯一接近成功的一个。
先来说“第一个”。

之所以是“第一个”,因为比特币第一个解决了大型网络(1000节点以上)的“分布式共识”问题。在此前,这个问题的解决方法都仅限于不超过100个节点。而很显然的,如果要做的是“数字货币”,那么如果只能支持100个节点,说明这种货币流通范围仅限于某小区高层公寓的3层,这显然称不上货币。

当然,上次,我们已经用斧子的例子说了这东西很难。

但是有多难呢?

难到我准备以后单开一篇来讲这个……

……


……

其实这东西的难点在之前石斧的那个故事里都提了——

你挨家挨户地去说,虽然麻烦点,但是也就能忍了。

但是别人凭什么你说什么就信什么啊!你说你和张三交易了,万一你跟所有人说了就跟赵六没说呢,然后你再跟赵六做交易,还用之前那招双重支付。

于是,在不相信你的前提下,其他人怎么确认你没骗他们,跟他们说的和跟别人说的一样?

这个时候,就要靠八卦的力量了:


每个人收到你说的话之后,先不相信,而是先跑到每家串门顺便八卦一趟:

“喂,村头二蛋去张三家买斧子了,你们都听说了么?没错,用的他打鱼挣的钱!”

这样一来,你要是作弊了,眼睛雪亮的群众也能看出来——只要大多数人没被你买通散播假消息的话。

这就是传统的分布式共识算法,或者说叫拜占庭容错算法。

然而,这东西有多麻烦大家大概已经看出来了——

你要公布这么一条交易,需要你先往每人家里跑一趟,然后全村每个人每人都往另外的所有人家里跑一趟。如果村子里有100个人,一共要跑99^2=9801趟。

如果村里有10000个人呢?


这就是为啥传统的分布式共识(拜占庭容错)算法不能应用于超过100节点的原因。

那么,中本聪在比特币里用了什么“魔法”才使得在上万个节点的网络,人们也能达成共识的呢?这就是:



呃,不对,其实是:




这估计是大部分人对于比特币最不能理解的东西了——我好好的买一把石斧,中央怎么就决定我去挖矿了呢?

咱们先把挖矿的问题抛到一边,回到张三他们的村子里来。

————————————————————————————————————

张三这个村子现在有个问题。

人与人之间缺乏相互的信任。


每天村头到村尾都是这种言论:

“震惊!张三的石斧竟然卖给了这个人!”

“村头二狗买石斧的真相!女人看了会沉默,男人看了会流泪!”

“二狗与张三不得不说的故事!村里知道的不超过十个人!”

甚至

“二狗并没有买张三家的石斧,全世界都被他骗了!”

“真相!其实,张三把石斧卖给了她!”

“用了一辈子石斧,石斧的危害你们知道吗?不转不是中国人!”

……


为什么会出现这种情况呢?

为什么网上谣言满天飞?

为什么社会上人与人之间的信任与日剧减?!

因为,说假话的代价太小了。

所以,有了谣言500条的法律。

所以,有了网络实名制。

然而,除了这些,还有一个更直接的做法——加大造谣的代价就好了。

例如:

给我转一百块钱发帖一次……




但是,这样似乎就达不到去中心化的效果了,因为那样我就有了控制每个人说话的权利。

那么,反正只是要付出代价就好了,那么……

直播烧100块钱发帖一次。




(注:毁坏人民币是违法行为)


加上了成本的话,显而易见,造谣的成本变高了,于是没事闲的乱造谣的人就会变少了,开马甲造谣的成本也更高了(因为烧钱才能说话,不管你是不是马甲),虽然说拿钱发帖的问题仍旧存在,但是,雇人拿钱发帖的成本也变高了。

——————————————————————————————————

回到虚拟货币和分布式共识。

在虚拟货币的世界里,无论是造谣入刑还是网络实名制,类似的方法其实大家也都想过,都试过了。但是这两者都很难做到,前者需要非常复杂的机制(以太坊就弄了个这种东西叫slasher用在他们的新POS共识算法里,好像刚刚部署了),后者还是需要权威节点来验证身份(这种被称为许可链)。

于是,中本聪采取了最直观的方法,就是烧钱。

然而,烧钱这个东西怎么放到数字世界里呢?这个代价得有以下这几个特点,1,得方便验证,你说我烧钱了然后p了张图,别人怎么判断真假呢?可是你要录视频总不能让每个人为了收一条信息就下个几十兆的视频吧;2,得“无法获益”——烧纸的话说不定有人拿它烧水呢,万一有人开了个烧纸发电的公司,或者这人就是收废纸的,那么他能从中获益而其他人不能,所以又不公平了。所以这东西得真的对任何人都没好处才行。3,而且还得容易估计难度,比如你说不烧钱改撕钱,撕成小块才行,你觉得好像很难,结果别人有碎纸机。

于是,有什么纯粹的,公平的,好验证的,不能利己也不能利人,专业浪费钱,而且浪费得非常有效率的办法呢?


中本聪陷入了深深的思考……

突然……


这玩意还真他喵的有!

叫工作证明(Proof-Of-Work)。

这东西是干啥的呢?这东西最早发明出来是防止恶意电子邮件的。例如黑客黑了邮箱开始大量群发带病毒的邮件或者广告,怎么防止这种情况呢?POW规定每封邮件都得符合某个特定格式,就是邮件头后面带几位的冗余的字符,使得邮件头的哈希值小于某个值,这封邮件才会被接受。

不理解哈希函数?没关系,这个东西就相当于对于每封邮件,扔骰子扔出个6才能发。

我觉得这个机制的设计者一定玩过这个。


这技术设计得非常巧妙,因为如果是真的想发邮件的人,根本不在乎扔几次骰子。这其实是电脑在后台帮你扔,就算要扔10分钟也无所谓,写邮件的时间都不止这些。但是对于群发垃圾邮件一发几千几万封的人而言,这个成本就相当大了。

而中本聪一看——这不正是理想的烧钱方法吗?(扔骰子并不符合之前提的三个特点,但是哈希函数符合,在这里就不赘述了)

于是,POW就被用于比特币了,它有了另外一个大家耳熟能详的名字——

挖矿。

————————————————————————————————————

现在,没人说假话了。


然而,问题来了。如果网络真是这样的,唯一会发生的结果就是没人说话,除了拿钱发帖的。

于是,伴随着代价的,还得有奖励制度。

而奖励制度,是只给说真话的人的。

这个奖励还不能太少,肯定得比烧的钱要多,要不然肯定还是没人说话。

例如烧100块,奖励101块……


于是,比特币变成抢红包的游戏了。

但是有个问题,得防止有人浑水摸鱼——什么意思呢?每个消息是真是假怎么判断?得通过大家验证过真假才行。可是如果红包发太快,大家就只顾着抢红包没人管消息真假了。

那怎么办呢?中本聪想出了这么一个抢红包的游戏。

1,10分钟在群里发一个只有一个人能抢到的红包,条件是一次掷出100个6,然后说一句真话,收到大多数人的确认。

2,然后呢,一旦有人宣布自己满足了条件,大家就检查发的消息是否是真话,以及是不是真的掷出了100个6。

3,一旦确认,你可以按下确认键,然后开始抢下一轮的红包。但是如果你没检查就按确认键,那么万一他不满足条件被大家看出来了,你后面无论过了多久抢到的红包都不算数。

(我们假定说真话和判定一句话的真假的难度远小于扔骰子的难度)

于是,大家设想一下这个抢红包游戏会出现什么样的结果呢?

首先,如果红包足够大,那么即便条件苛刻,也肯定会有人愿意去扔骰子。

其次,如果有人说了假话,或者在投骰子的时候作弊,即使他抢到了红包,理智的人都不会冒险在检查之前去点确认。因为检查花不了多久,但是万一他说的是假话,你之后抢的红包可能都白抢了。

于是,理智的人也不会说假话,那代表了他们的骰子白扔了。更何况说真话也不比说假话难多少。

再次,如果别人真的抢到了红包而你很不甘心不想点确定想继续抢。然而,首先既然是扔骰子实际上你重新扔并不会降低你成功的概率。然后,如果你没点确认而继续抢而且也抢到了,但是你已经慢了,如果大多数人对之前抢到红包的人点了确定,你还是白抢了。

于是,我们得到了一个非常理想的结果:

1,大家都说真话。

2,大家都会去积极的校验别人是不是说了真话。

3,大家也愿意每次有人说完真话之后接受这个结果。

4,接收结果之后,大家会立即开始下一轮。

————————————————————————————————————————

红包游戏补上了比特币的最后一块拼图。


让我们忘了表情包,回顾一下比特币是怎样一步一步成型的。

1,货币在数字世界最简单的存在形式——记录交易的账本,用哈希函数和链式结构来保护账本不被篡改(这个没讲但是挺容易理解的)。

2,用共识算法来防止双重支付……

然而,传统共识算法太慢了,于是,我们给这个问题加了个限制,让每个节点说话的时候都要付一定代价。于是,由于恶意节点的能力被削弱了,这个共识算法可以应用于上万个节点了。

3,但光有代价没有奖励会让大家都不说话,于是加了一个红包游戏——这个红包游戏同时达到了鼓励大家说话,说真话,听别人说的真话,以及一直玩这个游戏的目的。

这就是比特币了。(此处应有掌声)


如果我们的网络是没有延迟的,这套系统就够用了,然而可惜的是,我们的网络是有延迟的,也就是说,每个人说的话,不能保证即时传到每一个人那里。

放在计算机理论里,这叫异步拜占庭容错问题,是拜占庭容错问题里最难的,难到什么程度呢?

难到我还是要单开一篇讲这个问题。


反正,有条著名的定理告诉我们任何分布式系统都不可能同时达到“容错”,“一致”和“可用”三个性质。也就是说,我们现在的系统是容错一致和可用的,有了延迟之后,还想要容错和可用的话,就得牺牲一致性了。

所以,比特币达不到一致性,但是他加了一个对付不一致的机制——

4,最长链共识——通过所有人都同意最长链的方法,对发布的区块达成一致。

这东西讲起来很复杂也很无趣,所以就简单说一下——基本思路就是虽然网络里大家听到的东西不一致,但是我们保证过一段时间之后(例如一个小时),一个小时之前的信息在所有人那里一致的可能性是99.9999……%。就相当于,新闻刚出来的时候谣言满天飞不要紧,我们让谣言飞一会……过几天在看,会发现


很多人把最长链共识当做是工作证明算法和传统拜占庭容错的本质区别,在我看来并不对。工作证明其实可以说是一个对只对同步网络有效的共识算法,而由于网络延迟,不得不加入了最长链共识。最长链共识虽然会导致小小的分叉和孤块,但是实际其实并没有带来什么不确定性,而只造成了6个区块确认的延迟,而传统异步BFT在这么大的网络里的延迟可能比这更高。于是,在我看来这个东西并不本质,介绍比特币的时候老提最长链啊,6个区块啊,分叉啊什么的,只是把原本简单的概念复杂化了而已。

————————————————————————————————————

到了这里,关于比特币的介绍终于告一段落了。本来其实想跳过这些直接讲一些有趣的观点的,但是发现果然还是得换个角度,重新介绍一下比特币——的确它的设计很巧妙,许多设计中同时达到了多个目的,以至于很多科普文章不知道如何将它们拆开讲。但是其实,它的概念,其实远比很多科普文章讲的简单得多。中本聪也绝对不是什么ai,或者穿越者,他没有“发明”这些看起来不明觉厉的机制。尽管这其中有一些天才的想法和巧妙的设计,但大部分,有些是前人总结的经验,有些是现成的算法,有些则是现实社会的规则在虚拟世界中的延伸。

这点我在之后的文章里会重点去说——我们所处的世界,实际上就是一个分布式的世界,因为人类不像是蚂蚁或者蜜蜂又或者星际虫族或者异形,人与人之间本身个体差异就不大,就可以看成去中心的节点。而如果人类社会需要组织,就需要分布式共识,而无论是工作证明,权益证明还是拜占庭容错算法,其实都可以在人类社会发展进程中的社会形式里,找到对应的东西。

下一部份,终于轮到“为什么比特币是唯一的一个”了。


转自公众号 区块链演义
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2025-4-14 22:58 , Processed in 0.280800 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

快速回复 返回顶部 返回列表