LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 行走笔记:谢晗剑,祛魅比特币(一)比特币的共识机制

行走笔记:谢晗剑,祛魅比特币(一)比特币的共识机制

2021-04-22 行走 来源:区块链网络

本篇笔记来自一档有声播客类节目《晚风说》,还有另外一个名称也是微信公众号的名字:禅与宇宙维修艺术。

谢晗剑曾在币乎做过直播,今年的3月3日,当时的主题是“Nervos2021年路线图全解析”。行走当时没有输出那篇。这篇《比特币祛魅》会更科普,也会更好玩。

“祛魅”这个词是行走个人很喜欢的,带有哲学的多重意味。祛魅源于马克斯·韦伯所说的“世界的祛魅”。比特币基于区块链、密码学技术,高擎的是科学的旗帜,当然理应也可以祛除前科学时代的“魅”。但同时我们也能看到,在比特币社区、加密货币社区,对技术的不理解,对项目代币短期价格的执着,对财富的热忱追逐又产生了新的“魅”。祛魅和返魅一体两面,共生并存。

这场对话有两个多小时,行走会分四期输出笔记。今天是第一篇,谢晗剑主要以比特币为代表,介绍了区块链工作量证明POW的共识机制,分布式等概念。


以下,Enjoy::

谢晗剑:我应该是12年左右。那时候我在一家美国公司上班,我的一个同事给我们介绍比特币。那时候只有比特币。那时候我们公司每周五下午会开个ZOOM瞎聊,每次有个主题。因为公司大家都是远程办公,他突然冒出来说比特币这东西特别有意思。

会有点像最近特别火的Club house的感觉,一堆人瞎聊。

那个同事还做了PPT,介绍了比特币为什么厉害,为什么会像货币。我就觉得至少是很有意思。因为比特币是个软件,对于我这样的程序员,经常琢磨的是如何做一个手机APP,怎么做一个网站。现在出来一个项目,且不管是不是真的能做成,但它说我要做一个货币。这是跳脱了过去程序员设计产品的思维范畴的,所以我会认为很有意思。

刚好12-14年,比特币有一次冲高的涨幅,让更多人认识了它。也第二次进入了我的视野。我就觉得这东西居然有点像真的了。不像完全是一个骗局,而且因为价格已经开始有新闻在报道它。

这时候我开始真正投入时间研究比特币。而那个时候已经出来ASIC矿机,就是专业挖矿的机器了。这对于做技术的人是有吸引力的。因为和硬件相关,为了比特币这样的软件,居然有人真的投入资源去专门做一个硬件来运行它。就更像是真的了,而且好专业。

程序员特别喜欢感觉很专业的东西。就像买手机时会去看各种参数。

当我投入时间之后,就看到Quora问答网站上有个问题,问比特币到底有没有价值。就有一个人从技术的角度回答:

且不说比特币是不是一个货币,但它一定是一个分布式数据库,而且是之前从来没有过的分布式数据库。因为以前的分布式数据库都是运行在一个“温室”环境里的。比如阿里内部有很大的数据库,可能会有一千台、一万台服务器在后面支撑运行。但无论后面有多少台服务器,都是属于阿里这一家公司的。亚马逊、谷歌也都是一样的,都是属于一个公司控制的。

在2010年以前,这是想当然的模式。大家都会认为这是天经地义的。除此之外就没有其他的可能性了。Quora上的回答是说:

比特币告诉了我们一种新的范式,它不用于以往的模型。可能还是有一千台、一万台服务器,但是由不同人来控制的。虽然不同的人可以有不同的诉求,有不同的利益,甚至有些人会整天琢磨要如何破坏整个系统。但这些服务器依然可以和谐的运营,为全网所有人提供服务。

我对这个回答的印象非常深。它告诉了人们比特币的技术创新在哪。你可以不用关心比特币到底是做什么,仅仅从纯粹的技术角度看也是一个进步和创新。这样就会很有兴趣去研究为什么,我也因此被比特币吸引进去。


晚风说:在此之前,BT算分布式数据吗?

谢晗剑BT算是。但和比特币的区别是,BT没有共同一致的状态,或者说共同的数据库。

BT好像是一个群岛,分布式网络中有很多机器,每个人维护自己的机器。每天机器上都有一部分数据,至于群岛上所有数据加起来总和是什么东西,是没有人知道的。系统并不关心这个总和,只关心反正系统里会有某些集合。比如三张CD是这个服务器上有,另外5张CD是另外一个服务器上有。没有形成共同的东西。

对于比特币或区块链而言,最重要的是形成了共同的东西。区块链的系统中可能有一千台、一万台服务器,所有服务器都知道我们维护了一个共同的数据库,数据库里有1、2、3、4。我知道其他人也知道这件事情。这是很重要的区别。

晚风说:那时候你有想过做其中的一个节点,做其中的一份子吗?

谢晗剑:有。其实当你去尝试下载比特币的客户端,把它跑起来的时候就是节点了。当你还没有意识到你在做节点的时候,你就下载下来了。

当时最让我震撼的,或者说最让我惊奇的是,节点不需要一直运行,而我拥有的比特币还会一直在那。你的节点也不用运行,别人也可以给你转账。

比特币和以前见过的分布式系统特别不一样。如果接触过以前的软件,是会要求本地客户端是要运行的,才能做什么。但比特币的客户端不要求运行,别人也能给你转账。反正你的钱就存在某个地方,你也不知道在哪,它就很神奇的存在那个地方,还特别安全。

现在对于区块链世界的人来说是司空见惯的事情。但倒退十年,这会是很不一样的系统。这种感觉是很惊奇的。

晚风说:不需要每个人一直在运行,但永远有人在维护,这是通过哈希算法实现的吗?

谢晗剑:比哈希算法更复杂一些。我们就以比特币来说。首先第一个特点是全量复制的

网络中数据的集合要是每个节点都有的才被成为全量复制。对于共享知识的集合,每个节点都有100%的数据。这是巨大的区别。这意味着比特币的网络冗余度是很高的。如果系统中有一千个节点,意味着全部数据被复制了1000份,如果有一万个节点就复制了10000份.比特币会随着节点的增加,冗余度越来越高。

这也就是为什么一个节点即使关机,即使把数据删掉,数据也不会留。因为网络中还有9999、99999的节点还保留有全部数据,它们会备份数据。

第二个特点是,比特币的全量复制网络会有共识机制来维持。所谓共识可以简单理解为,共识系统中有一套算法可以保证所有节点看到的副本是一模一样的,每个字节都一样,100%一样。无论数据库发生怎样的变化。

比如Alice要给Bob转账,转100个币。Alice会减少100个币,Bob会增加100个币。相同的改动是所有的节点都会做的,都会在本地维护的数据中做相应的改动。这就是为什么即使你不在线,别人也可以给你转账的原因。

甚至你都没有用过比特币,但只要你有比特币地址。别人给你转账其实不是把指令发给你,而是把指令广播到整个网络。整个网络中都会知道Alice要给Bob转100个比特币。共识机制就会保证所有人都会做相同的修改。因为有这么副本,有共识机制,哪怕你不在线,也会有很多节点共同维持想象中的数据库。

等你回到链上,别人会告诉你比如三天前Alice给你转了100个币,我们都检查过了,转账没有问题,你同步一下。你就可以使用新收到的这笔转账了。

晚风说:这是通过多重博弈,有其他人存在来保证做记录的人都倾向于记录真实数据而不会说谎吗?

谢晗剑:这就涉及到比特币具体的共识机制是怎样的。比特币的共识机制是工作量证明。它是带有博弈机制的一个设计

具体来说,当刚才那个例子中Alice想要转账时,她会把指令广播给网络中的每一个节点。每个节点都会不停的处理交易。处理交易的方法是等一个固定的间隔,比特币是十分钟。节点会在这十分钟内收集它听到的交易。可能在这十分钟有很多人都发起了转账。节点可能收到了三十笔转账的信息,会把它们打包到一起。

这十分钟收集到的交易集合我们称之为一个区块。节点产生了区块之后就要解一个数学上的难题。只有解开了这个难题才有资格把新产生的这个区块广播给别的节点知道。如果我这个节点没有算出这个难题,那我就放弃了。可能还没有算出来会收到别人产生的区块。这就说明别人先把难题算出来了。

每隔十分钟,比特币网络中会自动产生一个数学上的难题。网络中所有的节点都会共同解这道题,比谁算得快。

解题的方法基本上靠猜,没有特别的捷径。只能特别随机的猜答案,验证一下是不是。如果不是就换下一个答案。所以总会有一个运气特别好的人,纯粹是运气好,第一下就猜中了,或者猜了3000次就猜中了,别人要猜1万次才能猜中。

这个运气特别好的人,因为找到了答案,就是把他打包的区块,就是十分钟交易的集合,附带上它猜到的答案广播给网络中其他所有的节点。因为其他所以有节点还在猜的过程中,但也会不停的看是否有其他人已经猜出来了。他们收到新的区块就会验证这个猜的答案是不是对的。如果是对的,它们就会接受这个区块。这个区块的交易就被处理了,大家再去等下一个十分钟接收新的交易。

为什么我们称这套系统是区块链?是因为随着时间的推移,平均每隔十分钟,就会有一个新的区块产生。新的区块总是用一个指针或箭头指向前面一个区块,就好像一串区块,不停在往后增加新的区块。这个过程很像一个链。

这个过程为什么会涉及到博弈呢?博弈是因为这1万个节点中有遵守规则的人,有不遵守规则的人。遵守规则的人会认为,给我发了一个新的区块,我验证是对的,就按照规则跟在这个区块后面去挖下一个新的区块了。

但是对于不守规则的人,收到了你的区块,也验证了这个区块确实是对的(解开了数字难题),但我选择把你的区块丢掉。假装没看见,还是在上一个区块上继续挖。为什么这么做呢?因为挖到新区块的人有奖励(目前是每个区块6.25个BTC——行走注)。这是一笔很大的奖励。那意味着这十分钟的奖励就归猜对数学难题的人了。这样没猜对的节点就有动力把正确的区块丢掉。

当然你作为节点可以这样做,但如果网络中只有你一个坏人,其他都是好人的话。如果其他人都接受了新的区块,都跟在新的区块后面挖,只有你一个人在老的区块后面挖。

比特币网络的共识是,大家只认最长的链。这是最关键也最简答的规则。

如果只有一个人就想使坏,在老的区块后面挖其他人都齐心协力在新的块后面挖。那新的块之后链的增长速度一定比你快。因为那后面有更更多的人在挖,你只有一个人。而解数学题的过程就是一个随机过程。大家都靠猜。那边可能有9999个人同时猜,这边是一个人在猜。所以你一定比别人慢。

这样推导一下更极限的情况是,只要有超过一半的人是好人,正确的链增长的速度就一定比做恶的链快

假设全网有1万个节点,我控制了4999个节点,剩下5001个节点都是好人控制的。我猜的速度就是4999台机器同时猜,好人猜的速度是5001台同时猜。只要时间足够长,好人的链长度比坏人长的概率是越来越大的。

这就是比特币中“51%攻击”的来历。它的含义是如果你掌握的算力,严格意义上不是节点而是算力。假设如果好人的算力超过了50%,这个网络就可以保证安全。如果坏人掌握了51%以上的算力的话,它就可以做各种各样的坏事。

刚才我说好人有5001个节点,这是做了简化的。其实是要掌握超过一半的算力。因为每个节点的算力是不一样的。

以上就是笔记的全部内容。

—-

编译者/作者:行走

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...