关于智律网ailawai.com

智律网团队是一群心怀法治梦想的人。借助互联网,我们试着让法律服务变得简单方便、公开透明。 越来越多的客户通过智律网解决了他们的法律问题,相信你也可以一样。欢迎各领域的朋友与智律网展开丰富多样的合作,互相合作,共同发展!

关注智律网

微信扫一扫关注智律网
随时随地与我们联系哦

区块链是什么,如何简单易懂地介绍区块链?

随着比特币的暴涨暴跌,其底层技术——区块链再度进入大家视野,令我等不得不加以关注。区块链到底是什么,缘何号称为颠覆性的技术,对未来将产生什么影响?本文将以极其通俗的方式,对区块链进行展开讲解。

 

一、区块链是什么,如何简单易懂地介绍区块链?

先摆结论,区块链的颠覆在人们找到了一个低成本解决信任问题的方案。

不少回答举例不懂TCP/IP照样打王者荣耀,照样淘宝购物,道理没错,区块链技术确实很复杂,未来的区块链技术非专业人士确实相当难完全理解。但是为了体会区块链的魅力,我们可以了解最简单的区块链技术版本,就是号称区块链1.0的比特币。因为转账系统是最直接需要彼此不信任的个体之间解决信任问题的应用场景,了解了比特币,也就能一窥区块链在解决信任问题中的魅力,也就能理解未来可能落地的应用场景。因此本回答以讲解比特币来尽量帮助大家理解区块链技术。

 

二、比特币的诞生

话说2008年,正值美国金融危机肆虐全球,美国央行带头量化宽松,就是疯狂印钞票,然后把这些绿色纸片片借给大家,让大家去消费投资,让经济这潭水活起来。不难想象,经济体里钱突然多了起来,我们的钱是不是就不值钱了?原来经济体总共有一万块钱,你的一块钱值多少钱,如果央行多印了一万块钱,简单理解是不是你一块钱的购买力就缩水一半?这就是所谓的通货膨胀。

央行所拥有的这种发行纸币的权力、这种任性,掌握了经济体的生杀大权、更掌控了我们私房钱的实际价值,这令互联网极客很不满,他们不喜欢这种中心权力,他们喜欢互联网这种去中心化的机构,他们想用互联网技术来颠覆目前的中心化货币、甚至颠覆整个世界。于是乎,中本聪横空出世,一篇奇文诞生了比特币。

让我们再听听他文章的名字:BitcoinA Peer-to-Peer Electronic Cash System。先了解一下,啥叫个Peer-to-PeerPeer啥意思,Peer就是对等的人,大家都是对等的、是身份相同的,咱们直接Peer-to-Peer,不要经过任何中间实体,咱们直接对话、直接操作,这就是Peer-to-Peer,根本就不要中介、不需要中心,此所谓P2P技术(对等计算)。其实,我倒觉将P2P理解为person-to-person更加直观,就是我们作为一个人、做为平等的人,咱就直接对话,person-to-person,不要任何中介,这样就不会有任何中心,大家都在互相person-to-person。简而言之,在 P2P技术中,网络中的参与者既是服务器(Server),又是客户(Client),既是资源提供者,又是资源获取者。

我们中国习惯上将Peer-to-Peer 翻译成“点对点”,仿佛是point-to-point一般,多少有些歪曲。如此一来,中本聪的大作就翻译成了《比特币:一种点对点的电子现金系统》,这个系统的目的就是要去中心化。那我们看看中心和点对点有什么区别呢?我们现有的支付体系是中心化的,体现在两个方面:第一,货币政策是由各个国家中央银行规定的,这就导致了可能的货币滥发,中本聪想要建立一个没有中心机构、并且规则明确的货币供应方式;第二,现有的支付体系是中心化的,比如说在淘宝上购物,钱是打进支付宝的,当我们收货以后钱再由支付宝打入卖家账户。支付宝所扮演的就是中心化的机构,因为买家与卖家彼此的不信任,必须要一个中心化的机构来扮演信用中心,大家都与信任中心发生联系,陌生人的买卖就实现了,淘宝成功了。但是这样做有两个缺点:一是信任中心权力越来越大,如果马云异想天开、给自己的支付宝账户多添几个零,我们能知道吗?二是,这些信用中心是要收费的,我们要为这种信用提供费用。中本聪想要建立的支付体系,就是要克服上述这些弊病,所以比特币网络最重要的特点就是:去中心化、公开透明,从技术上解决点对点的信任问题;并且将比特币的总量恒定在2100万枚,从而避免可能的通胀。

 

三、比特币的转账

去中心化,意味着陌生人之间的转账支付是直接进行的,没有第三方提供信用担保,这怎么可能呢?nothing is impossible,中本聪就设计出来了,当然技术上很复杂。我们这里先打个比方介绍一下,感受一下这根葱的厉害。

比如Alice要向Bob转账,注意两人互相不认识,毫无信任感,那如何直接转账呢?在我们目前的具有中心的网络下,AliceBob转账100元,银行收到Alice请求,并检查Alice账户余额,如果大于100,便减少100,同时Bob账户增加100余额。所有人的账户都是非公开的,权力掌握在中心机构手中。但在本聪的设计中,在一个去中心化的网络中,每一个用户自己都有一个账本,这个账本记录了从第一枚比特币诞生以来的所有交易记录,Alice要向Bob转账5btc,会在村口喊一句“Alice要转账5btcBob”,村口居民张三听到Alice的声音,掏出自己的小本子,检验了一下Alice的账户,发现Alice5btc,便写下AliceBob转账5btc。同时也喊出“Alice要转账5btcBob”,这样村民一传十十传百,直到每个村民都把这笔交易记录在自己的账本上。这样,每一个村民的账本都是一样的,这就是所谓的去中心化账本。在去中心化的网络中,刚才说的各个村民就是体系中的各个节点。这个去中心化的体系中每个节点的账本都是一样的,所以它几乎不可能摧毁。传统网路中,如果银行体系被破坏了,那么大家的账目就混乱了。但是在比特币网络中,每个节点都明确的记录了本聪开比特币以来的所有账目,即使节点几乎都炸毁了,只要还剩一个节点、就可以还原出所有记录,除非瞬间摧毁整个互联网。

我们要记住,在去中心化网络中,所有人都是不可信任的,这是我们的前提,上述例子中,居民自发记账,有没有可能记错呢?当然可能,张三如果跟Alice有仇,给人家肆意篡改,到时候我们该相信哪个账本呢?在大家都不互相信任的体系如何做到这点呢?首先要做的是要先验证这条消息是不是Alice本人发出的,这里用的办法就是签名,Alice广播这条信息的时候要在信息下签个名,当然网络上要数字签名了,大家收到这个信息以后要对照一下字迹,发现确实是Alice发送的,就承认这条信息是真的,验证数字签名的算法叫椭圆曲线数字签名算法,是一种非对称加密算法。

非对称加密算法,听着都很可怕,这里只能举个例子,听听气质,听完气质长精神。什么叫非对称加密呢?那要先明白啥叫对称加密。在传统的对称加密过程中,比如我要传递一个秘密数字给佐尔格,加密方式就是给这个数字加上33。当然佐尔格要知道这个加密方式,当他看到写着223这个数字的纸条的时候,他就会用223减去33,等于190。这个190就是我想传递给佐尔格的数字;佐尔格看后非常震惊,马上通过秘密渠道告知斯大林:德军要用动用190个师闪击苏联。

这种加密方式的关键在于、双方要实现约定加密方式,但如果事先无法约定怎么办,或者这种加密方式被敌方所窃取或者所破解了怎么办?这就是我们在很多谍战片里的情景,一旦密码本丢失,整套密码系统就完蛋了。

那么,有没有一种办法,即使对方知道了加密方式也破解不了信息?这个可以有,这就是非对称加密。

你知道了我的加密方式,竟然都破解不了我的信息,这个非对称加密要满足如下条件:有一个解密方式A与加密方式B,我要传递信息M,使用加密方式B进行运算,得到加密信息X=FMB),这个过程的好处在于,即使你知道我的加密方式B和加密后得到的信息X,你依然无法算出我的原始信息M,而原始信息M=FXA),即原始信息必须使用解密方式A算出。这里的A称为私钥,B称为公钥——意思就是私人密钥和公开密钥,比如特工小孙需要接受情报,他大可以放心的把公钥在网络上公布,任何想要给他发送信息的人只要按照公钥B的方式进行加密,得到加密信息X,小孙只需要对X使用自己的私钥解密即可,这样就避免了对称加密中加密方式的传递和破解问题,只要小孙保管好自己的私钥,这个体系几乎很完美,但是大家基本没听懂,对吧?

所以这里必须要举一个例子,一个非常简化的例子,简直就是一个小游戏、小魔术。大家提提神,我们一起小游戏。你现在随便想一个三位数,但你别告诉我,因为怕被旁人听见,你加密后告诉我,你把你想好的这个三位数乘以91,然后告诉我最后三位就行了;然后呢?然后我就知道你想的那个三位数是多少了,办法很简单,就是我把你告诉我的最后三位再乘以11,所得到数字的最后三位就是你想的数字。

那我们试一下,假定你想好的数字是321,想把这个数字加密后告诉我,于是你用91乘以321,等于29211,然后你告诉我最后三位是211,随后我用211乘以11,得到数字2321,这个数字的最后三位不正是你想告诉我的321吗?哇塞,好神奇。

或许有朋友觉得,是不是碰巧了啊。你321这个数字太特殊了啊。Ok,我们再来一次。这回你想好的三位数是598,然后你乘以91,这个乘以91就是公钥;598乘以91=54418,其最后三位是418,所以你把418告诉了我。于是我拿出了我的私钥11,乘以418,得到了数字4598,其最后三位是598,不正是你真正想要给我传递的598吗?我乘以11就是解密的过程。此所谓:公钥加密、私钥解密。就算别人偷听到了你秘密告诉我的418、并且也知道这是经过公钥加密的——也就是乘以91了,但他只要不知道我的私钥、也就是不知道乘以11,那他看着418照样无法解密,只能看着418干瞪眼,无法破解出598这个真正信息。

这就是非对称加密的牛逼之处——“公钥加密,私钥破解”,而传统的对称加密就是加密和破解用的是同样的密钥,而非对称用的两套密钥——“公钥加密,私钥破解”。

此时此刻,估计有盆友觉得震惊了,为什么我一乘11,直接就解密了呢?因为91乘以11等于1001,任何三位数乘以1001的后三位就是三位数本身。

大家注意,刚才这个例子只是一个极其简单的非对称加密。人家比特币所用的非对称加密那是相当的复杂,叫什么椭圆曲线数字签名算法。我们在刚才的例子里面,我们只说了单向的公钥加密、私钥解密,比特币世界里的椭圆曲线算法更神奇,不但有公钥加密、私钥解密,还有私钥加密、公钥解密,私钥可以推出公钥,但公钥推不出私钥。有了这点公钥和私钥的概念,我们可以讲述一下比特币系统下AliceBob转账的过程。

你作为一个比特币的用户,自然会有一个钱包,这个钱包下面可以生成一大堆的地址和对应的密码,由用户自主选择一个,甚至每一笔交易都使用一个新的公钥(当然只能是收款),这样可以避免任何人对你的追查,如果你频繁使用一个公钥,这些交易记录大家还可以推出一些有限信息,比如频繁程度,额度大小等,可以对你的财富做一些推测,你的隐私会受到威胁。在比特币的世界里我们把钱包里的地址叫公钥,把对应的密码叫私钥。我们可以简单理解公钥就是我们银行卡账号,私钥就是银行卡密码。我们每一个人在比特币世界里可以有茫茫多的银行卡,而且每张银行卡并不与你本人任何身份信息绑定,这就是比特币的匿名性。任何人只要有这个私钥,也就是密码,就可以操纵对应银行卡,也就是公钥里的比特币。

现在Alice要向Bob转账5btcAlice会把这条信息用自己的私钥加密并发送到Bob的地址,也就是Bob的公钥,其实就是Alice先使用Bob的公钥加密一层信息,把这条加密后的信息再使用Alice自己的私钥加密一层,这时信息已经被加密了两层,一层是Bob公钥,一层是Alice私钥。大家收到这条信息以后,会用Alice的公钥来验证加密信息是不是Alice发送的,其实就是用公钥解密了Alice这层信息,从而验证了这条信息确实来自于Alice,但是这条信息还使用了Bob的公钥加密,Bob再用自己的私钥对这条信息进行解密,也就是用自己的密码打开了银行账号,也就是用自己的私钥打开了自己的公钥。

理论上如果你找到了一个私钥,那么你就是可以操纵其余额的,因为私钥是可以推出对应的公钥的,然后你就可以像上述一样对这个地址的记录进行数字签名,相当于就掌握了这个地址。反过来说,如果你的私钥丢了,那这个地址上的整个钱也就消失了,你想申诉?申诉个nothing,整个比特币世界是去中心化的,就没有中心机构可以申诉。

早期有很多用户不知道其中厉害,还将私钥保存在电脑里,结果被黑客入侵,私钥被盗,其中的比特币就全没了。所以,千万不要把私钥存在联网的电脑,可以写在纸上,再把纸放在鞋垫下面,这样不但安全、还能增高。或许有人担心,既然私钥是随机生成的,那么有没有可能大家生成了相同的私钥呢?有可能,nothing is impossible,但这种可能性有多小呢?小到了只有零可以与其媲美,所以大家不用担心私钥重合的问题。

现在要谈另一个重要问题,就是如何验证广播信息的真实性。也就是Alice广播说她要给Bob5个币,但有可能她在骗人,因为她只有3个币,怎么能给Bob5个?对呀,如何确认Alice的话是真的呢?以下我会把Alice当做你来说,这样你更有感觉、更有feeling

如果要是有中心机构银行,那就好办了,就只要统计你的余额就好了;而比特币只储存交易记录,只验证这笔交易中涉及比特币的来源与去向,并不是对于你的余额进行检验。比如你要转账两枚比特币,这两枚的编号分别是12;系统并不关心你总共有多少枚比特币,而是检验编号1的比特币上次发送到了你的公钥,而且并没有再被发送出去,那这个比特币就可以被转账发送出去;编号2也同理,如果你只转账2btc,那么系统到此就判定结束了,如果你需要转账3枚,那么你就必须再援引一个btc的交易记录,我们说过,它记录了比特币诞生以来的所有交易记录,每一项资产和交易记录都是公开可查的!这就是公开透明的特点。别忘了,我们是与陌生人打交道,时时刻刻都是不信任。

事实上,Alice传达的信息中:我要给Bob转账5btc。这5btc都是有编号的,我们可以查这5btc上一次是从哪里转到Alice这里的?这5个币有没有从Alice这里转走?如果都满足,那就表明Alice可以转走这5个币。所以比特币是一种去中心化的账本大家听出点意思了吧,比特币世界算你的余额,是算从你这个账户诞生开始每一笔收支,加减到现在你的正值,由于每一笔交易都是全网验证过的,每一笔交易的比特币都是有来龙去脉的,所以可以说它是相当安全的。当你在电脑上下载比特币客户端的时候,系统会一次性的下载所有交易记录,而且会验证一遍,一般需要一天一夜的时间,好麻烦啊;不过只要验证一次、就一劳永逸了。

 

四、比特币的制造:区块链与挖矿

大家听到这里,比特币转账的方式有了大体的感觉。大家此刻心中一定憋了一个问题、大问题,货币是各国央行发行的,而比特币是去中心化的,那谁来发行比特币呢?也就是说,比特币是怎么创造出来的。比特币是挖出来的,使劲在网络里挖,就能挖出金矿比特币,简称“挖矿”。挖矿,这当然是很形象的说法,到底啥是个挖矿呢?这里就必须要引入我们的主题概念——区块链。

在比特币的世界里,每时每刻,都会发生很多比类似Alice转账Bob的交易,把每十分钟内的交易记录打包在一起,就叫区块——block。把比特币一诞生就开始的所有交易记录都链接起来,也就是把这些区块连接起来,就构成了区块链——Block chain。那比特币怎么产生的呢?没有比特币,你交易个nothing,估计有人都急了。别急,马上到关键所在了。

却说每十分钟的交易信息被打包记录,这就是一个区块;整个网络上的电脑都在抢夺这个区块的记账权利,谁抢到这个记账的权利,谁就可以获得这个区块创造出来的比特币。2009年,中本聪创造了第一个区块,被称为“创世区块”,其本人就获得了第一个区块奖励的50枚比特币,这也是比特币世界的第一笔交易记录,永远载入这个区块里。(每一枚比特币都是追根溯源有据可查的)。

所谓挖矿,就是抢夺记账权利,从而获得奖励,奖励就是比特币。为什么会有人不停的挖,因为比特币世界里每十分钟生成一个区块,哪个电脑抢到了记账权、构建了这个区块,哪个电脑就获得该区块的奖励,这就是挖矿。既然可以不停的挖,那比特币这种虚拟矿产就是“取之不尽用之不竭”的喽?NO,绝非如此,比特币的数量是有最高限额的——2100万枚比特币。所以比特币这种矿是越挖越少,中本聪设计的特别妙,就是每个区块的奖励每四年减半。我们刚说了,中本聪造出第一个区块的时候、获得50枚的奖励,四年后,就是到了2013年、奖励就减半了,2017年再次减半。所以当下每个区块的奖励是12.5枚比特币,等到了2140年比特币产量就将趋于0,从而将比特币的总量恒定在2100万枚。截止目前,网络世界已经创造出1500w枚比特币。

简而言之,挖矿就是抢夺生成区块的权利、抢夺记账的权力,也就是抢夺为全网服务的权力。一旦抢到这个权利,所奖励的比特币就写在得到的区块上,然后系统告知整个区块链的所有节点,获得全网确认后,这个区块便成为合法的新增区块,整个区块链又多了一个区块。

现在大家关心的是,既然那么多电脑都争夺记账权,那系统是如何决定谁来记账的呢?中本聪真的很本聪,他的设计是出一道很难的数学题,谁最先算出来,谁就创立了这个区块,谁就获得奖励。这可不是一般的数学题,是一种很傻很傻的数学题,名字叫hash算法。

这个hash算法听着很harsh,这会儿先打住,我们再回顾一下刚才的概念,再继续。

 

五、公钥 私钥 钱包 比特币之间的关系

刚才说到比特币世界里的公钥和私钥。公钥就是地址,私钥是密码。公钥就是银行卡账号,私钥就是银行卡密码。所谓钱包就是一种电脑软件,它可以帮你生成一系列配套的私钥公钥,你可以随意选择一个公钥作为收款地址,并且使用配套的私钥继续使用它。比特币只有交易记录,所以你的每一个公钥上所谓的余额就是账本上显示的谁向这个地址转账了,私钥作为密码的作用就是可以援引这个公钥的交易记录并对其签名。一个公钥,如果没有私钥与之配套,那就不能对这个公钥进行签名,也就无法发送从这个公钥向外转账的交易记录了。

比特币的公钥是公开的,任何人都可以查看关于这个公钥的所有交易记录。也就可以知道这个公钥有多少“余额”;每一枚比特币原则上是可以跟随其交易记录一直向上追索的。不过这是这比较麻烦的,因为比特币的最小单位是10-8次方,这个最小单位还有个名字——聪,中本聪的聪。比特币的单位如此小,一枚比特币可能是很多更小数字组成的,比如是0.005 0.780.215之和,所以其来源可能会非常细小,但所有交易记录都摆在这里,谁想去追踪这些所有的细分的来源都没有问题。举个具体的例子,你的某一枚比特币并非是一个人给你转过来的,可能是三个人给你转的,比如张三给你转了0.3个比特币,李四转了0.5个比特币,王二麻子转了0.2个比特币,然后这三者凑成在一起、形成了你手头的这一枚比特币,这些交易记录都是公开的,任何人都是可以检索的。甚至你还可以检索张三转来的那0.3个比特币是谁给他的,反正是可以一直向前追,最终追到中本聪的创始区块。

 

六、比特币——账本而已

这里必须要明确指出,在比特币世界里是没有实体存在,没有那种类似于钞票这种实体的存在,有人在网页看到了比特币的样子、跟金币似的,那是忽悠人的。比特币——无影无形,我们可以将之想象一个账本,系统里每个节点都有的账本。这个账本记录了从创世到现在的转账记录而已,你的所谓财富其实就是每个条目一条一条的累计。账本的第一条是:创世区块,比特币系统转账给中本聪50btc。你说中本聪收到任何实体的money了吗?完全没有!但是在比特币系统里,中本聪已经在账目上拥有了50个比特币,以后中本聪想要给别人转账,他就可以援引一下这条交易记录,证明自己接受过50个比特币,然后再写一条交易记录要把这个转给谁。明白了吗?整个比特币系统就是一个账本,没有任何实体支撑。

就好比小朋友之间拿一个本子写上AliceBob5枚可爱币,BobAlice玩一会游戏机。明天Bob又写上我付给Alice5枚可爱币,借她漫画书看一看。这中间没有任何所谓的可爱币,但是AliceBob煞有介事的写在账本上,而且二人都当真的时候,这可爱币就成真了。比如我们假设Bob账目上富裕5个可爱币,有一天Bob看上了同桌Tom的一根棒棒糖,但是Bob并没有现金支付。他就对Tom说,能不能把这根棒棒糖给我,我在小本子上给你记账5个可爱币。Tom说你有病吧?你拿个本子神叨叨的给我记录一下我就给你糖吃?Bob说,你别看这记一下,这条记录表明你就拥有了我的五个可爱币,你可以去找Alice借漫画游戏机,不信你去试试。Tom将信将疑的答应了,随后带着小本子去找Alice,在上面记录一条Tom转账5可爱币给AliceAlice欣然同意,并借给Tom游戏机玩了一天。第二天TomBob说,太神奇了!你这可爱币还有吗,能不能再跟我换一点?Bob呵呵一笑,这可爱币,看不见摸不着,就在这个帐本里。而且很遗憾,我并不能伪造,我收到的可爱币必须是别人写记录给我的!Tom小朋友并没有见到所谓的可爱币,但他似乎感受到了那个账本的魔力,好像真的就有像棒棒糖形状的可爱币藏在其中。

是的,比特币就有这个魔力,虽然只是个账本,但仿佛就是一枚一枚的金币。好了,大家现在应该已经理解了,比特币就是一个去中心化的记账,而且是公开透明的账本,任何随时都可以查账。

 

七、比特币转账——签名认证:hash算法

关于比特币的转账的问题,我们先前已经说过,但很粗略,尤其是在签名认证这个点上,几乎是一嘴带过,现在好好说一说。

比特币是如何转账的呢?我们还是以AliceBob转账5btc为例,Alice需要声明一下她要转账的这笔钱是哪来的,比特币其实没有余额的概念、只是一堆交易记录,首要需要声明要转账的五个btc是哪里来的、是谁转给你的。那里Alice可以胡乱声明吗?不行,因为她所声明的这些交易记录都会被检验,系统会自动对之进行核对,一旦发现有冲突就会拒绝这个声明。假设这5btc分别来自两笔交易,张三转账2btcAlice,李四转账3btcAlice。然后Alice要写明,我将这5btc转账给Bob。交易其实就算完成了。但是其它节点要对这个交易做两点验证:其一、这条信息是否Alice是所发,其二、Alice所声明的交易记录是否为真。后者比较容易,就是系统的自动核对。但前者如何进行?

现在就是要好好讲讲:如何验证信息是否为Alice本人所发的。不妨想想生活中我们使用信用卡也需要签名来确认是否为本人所使用一样,这里需要的是数字签名。具体流程是结合了第一集提到的的非对称加密和hash算法的。

这个hash算法是只能验证不能求解,什么意思?我们举个简单的例子,体会一下hash算法的精神;比如根号17202这个数的后几位小数是9291430,系统只发送9291430这个数,有没有可能猜到是哪个数的开平方后的后几位小数呢?这就太难了。但也有办法,那就是穷举法,一个数一个数去尝试,说个最笨的方式,你就从1开始尝试,最后终于尝试到了17202,惊喜地发现,这位仁兄、的开根号、的后几位、就是9291430,然后你就很激动地告诉大家:这个数就是17202。大家一算果然是,你好牛啊,你是花魁啊!

咋样,这就是hash算法,它的加密规则是公开的,就是将原本的数字开根号取后几位小数,但你很难靠这几位小数推测出来原本的数字,唯一的方案就是暴力破解、穷举法,最终可以将原本的数字验证出来,这就叫hash算法。注意,刚才只是说的一个简单的例子,真正的hash肯定是很harsh的,是很复杂的,但都是这个气质。

现在我们把hash算法这个过程抽象为h,我们要加密的信息记为M1,则hash值为hM1)。我们知道hash值是不能反推出来的,而且也不存在说另外一条信息M2,使得hM2=h(M1)

AliceBob转账这个过程中,Alice要需要发送两部分内容:一是援引的之前的交易记录,二是此番Alice要向Bob转账的交易记录,此两者构成了Alice要向Bob发送的整体信息,我们将之记做M1,可以想象这些信息都已经数字化了,即便AliceBob这两个人也是以公钥或者说是地址来代替的,双方都是匿名的嘛;我们只是为了表达方便,才直接说成AliceBob,其实是Alice用她这个地址给Bob的那个地址转账。

如果Alice只发送这个整体信息M1,别人怎么确定就是Alice发送的呢?这一切必须要获得比特币世界所有人的认可啊。所以Alice在发送M1之前,还要对之签名。怎么签?签什么?那就是Alice要对整体信息M1 hash一下,你就可以简单地认为、对M1进行了开根号,然后得到最后三位是369,也就是hM1=369。然后我们以第一集所讲的91×11为例,Alice私钥为11,公钥为91。那么Alice就会把这个hM1),也就是369乘上11的后三位059,连同信息本身发送出去。这就是Alice完成了数字签名。

Alice周围各个节点收到信息以后呢?首先使用Alice的公钥也就是91对这个059进行解密,也就是059×91=5369,取后三位还原出信息为369。然后再对Alice发送的原文信息M1进行hash,发现结果也为369,这不就验证成功了吗?这信息的确是Alice所发送的。

再略微展开一下,这里使用了跟Alice私钥配对的公钥,因为只有配对的公钥私钥才能解密,所以这个解密成功表明了确实是Alice发送的信息;其次,对Alice发送的原文进行了hash计算,发现也是369,也说明了Alice发送的信息没有被别人篡改。所以这些从哪里转来的又转到哪里去的信息确确实实是Alice发送的,然后大家再核对这些交易记录跟已有的账本是否冲突;如果不冲突,我们就确认了这条交易记录。即Alice的地址向Bob地址转账5btc这个记录有效。等到Bob想要花掉这5btc时候,他就需要援引这条交易记录,同时对内容进行hash,再用这个公钥地址配对的私钥进行签名,同时发送信息,周而复始,妙不可言。中本聪,你是大葱中最聪明的那根葱。

现在我要把刚才的验证过程再简单地梳理一下:ALICE在发送整体信息M1之前,先对M1进行了hash,发现结果是369,于是用私钥处理了369,也就是乘以11,将后三位059连同信息本身发送出去。这就是Alice完成了数字签名。Alice周围各个节点收到信息以后,先用Alice的公钥也就是91对这个059进行解密,即就是059×91=5369. 又发现将Alice原文信息M1进行hash,发现结果也是369,从而确认这天信息的确是ALICE发送的。你们说妙不妙,众妙之门,此门最妙。

 

八、区块、hash、挖矿

好了,明白了转账过程,我们要进一步讲解区块、区块链,只有这样我们才能真正明白“挖矿”的原理,了解比特币是如何创造出来的。

我们先前是这样简单描绘的:在比特币的世界里,每时每刻都会发生很多类似Alice转账Bob的交易,我们把每十分钟内的交易记录,就叫做区块。把比特币一诞生就开始的所有交易记录都链接起来,也就是把这些区块连接起来,就构成了区块链——Block chain。整个网络上的电脑都在抢夺新生区块的记账权利,谁抢到这个记账的权利,谁就可以获得这个区块创造出来的比特币。现在要对此深入解读。

我们可以这样想象,每一个区块就是一个块、一个方方的区块;每个区块都有自己的标记、也就是有自己ID。这个ID可不是随便定的,而是整个区块的hash值,也就是将这个区块的所有信息hash之后所得的那个数字,这个hash值是唯一的,并且与此区块绑定;

每个区块的第一层是上一个区块的hash值,表明这个区块排在上个区块后面,然后中间层是这一个区块的交易记录,底层是一个随机数。一到三层的内容会生成区块的hash值,即本区块的id。所谓挖矿,就是去猜底层的随机数,一旦才对了随机数,也就解出来这个区块的hash值。为什么呢?因为本区块的前两层信息是公开已知的,而只有底层随机数是不公开的,所以谁猜到了随机数,也就可以解出本层的hash值。

那这个随机数又是怎么猜的呢?是用暴傻方式猜的,又暴力又傻逼的方式,此所谓穷举暴力尝试法。就是各位矿工一个数字一个数字地试,直到有人到率先找到第一个符合这个规则的hash值。简单地说,就是新区块的hash值已被网络所确定,而矿工在不断计算、并核对,一旦哪位算对了,网络就给予确认,然后奖励他比特币。更确切地说,是网络事先定下了一个规则、一个公开的规则,比如说:要求这个hash值前面有150开头,哪个矿工率先找到第一个符合这个规则的随机数、就算猜出了这个hash值,他就会向全网广播“各位挖矿的labor们,你们不用算了,我算出来了,这个随机数是xx,这个hash值是xxx”,正在埋头苦干的矿工们一验算,发现这货算出来的hash值果然满足规则,嘴里嘟囔了一句shit,赶紧把这个hash值作为本区块的表示,并在这个区块的基础上继续计算下一个区块的hash值,心中默念:下回就该我抢先一次了。

由于hash值是这个区块的唯一标识,而且随意更改一点信息就会显著改变这个hash值,所以比特币世界的历史交易记录是不可能被篡改的。具体来说,每一个区块的hash=上一个区块hash 本区块的交易记录+本区块的随机数。如果我们篡改了交易记录,这个hash值就会改变,这就不被认证,就不允许了。所以一旦生成一个区块,其配套的hash值成为唯一标识,且不可更改。

估计很多朋友更关心区块底层的随机数,那到底起了一个什么作用。首先当然是让矿工去猜去计算、去暴力尝试,另外它还起到一个作用,就是去平衡算力,从而保证是平均每10分钟产生一个区块。如果矿工的设备变得先进了,引进了什么阿尔法狗呀、猫呀的都来了,那全网算力就提高了;那怎么办?很简单,就会增大随机数的难度,还是能平衡在每10分钟左右产生一个区块。比如,本来系统要求hash值前面有150开头,但如果算力上升,系统就要求寻找hash值开头必须有200,难度就陡然加大了;反正是不能让你上房揭瓦,好好挖矿,就是10分钟一个区块。

 

九、区块链的形成及小总结

我们从头梳理一下比特币的运行过程。200913日,中本聪创立了比特币系统,当时全网没有算力,只有他在挖矿,所以很顺利,它计算出了满足第一个区块hash条件的随机数,并计算出了此区块的hash值,同时得到这个区块的奖励,50btc

最初几个月,几乎没人来参与,渐渐地人一点点的变多,每个时刻开始有交易产生,随着全网算力的提升,系统要平衡hash值的计算难度,为了保证有人记录10min左右的交易记录,因为10分钟的交易记录不多不少刚刚好。如果hash值太简单,一秒钟就被人破解出来,所生成区块的交易记录就存储得太少;反之,如果计算难度太大,那每个区块需要打包的交易记录又太多,所以就要用合适随机数难度、将之平衡到十分钟一个区块。

现在,这个系统有一定的矿工维系这记账的责任,有一定的玩家有日常的交易需求,矿工们开始辛勤的挖矿即不断尝试每个区块的随机数直到尝试出来符合当前hash值规则所要求的hash值,当尝试出一个随机数并成功时,会马上向全网广播“我成功啦,我得到奖励了,兄弟们赶紧在我后头继续挖啊”,大家会将他公布的随机数进行验证,发现基于这个随机数所求得的hash值确实所要求的hash值规则,那大家就认可了,并这个区块的标题就定为这个hash值。基于这个hash值,大家再去奋力计算一个区块的hash值,如此go on and on,区块链就形成了。

区块链,它到底是怎么链在一起的呢?难道一个区块和一个区块之间真有一条链子吗?是这样的,区块就是每10min的交易记录,区块链就是区块连接起来的整体,这就记录了所有的交易信息,所以中本聪09年的那个区块叫创世区块。每个区块所包含的信息是:上一个区块hash值(表明连接关系) 本区块的hash值(id 本区块交易记录 本区块随机值(用以调整本区块hash值难度)。

这下子大家明白了,区块之间为什么能链起来,就是因为每个区块都包含了上一个