本文阅读大概需要15分钟。
前几天和女票聊区块链,聊得特别嗨,于是就有了这篇文章。
大学修读货币银行学课程,要做一次案例分享,依稀记得自己狂侃索罗斯狙击港币。班上有个女生分享的主题是《划时代的新货币体系——比特币》,时至今日依然印象深刻。她说的去中心化、公开透明、保护隐私、无国界等概念依然深谙于心。
最后她还不忘提醒我们投资比特币,言之凿凿的说比特币前景不可限量。可惜,当时的我,对这种和Q币差不多的虚拟货币嗤之以鼻,更何况当时一个比特币的价格高达100元人民币。
看着今天的比特币价格,有种莫名的忧伤。曾经有一个成为富人的机会摆在我的面前,但是我没有珍惜,等失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我信你。
如今回头看,人与人之间最大的区别莫过于见识和眼界。有的人看透了事物的本质,牢牢把控着变幻莫测的未来。当这样的人发出善意提醒时,却往往会被当成疯子。
说回正题,眼下区块链显得越发重要,还是有必要了解一下的。毕竟,是骡是马,一遛便知。
认识区块链无非就是搞懂三个问题:它是什么?怎么运作?能做什么?
本文暂且抛开工程实现的细节,仅围绕以上的三个问题谈谈区块链。
任何提到区块链的文章,一上来就说什么去中心化、公开透明、不可篡改,还说什么公有链、私有链、联盟链等概念。熟悉我的人都知道,我特别讨厌谈这些名词概念。
有些垃圾的书本,总喜欢一上来灌输各种概念。读完之后,各种概念深谙于心,但是却依然不明白区块链到底是什么。讲一堆概念无非是为了显得高大上,好的学习方式应该是:当你循序渐进理解区块链的内在逻辑后,自然而然的就知道这些名词概念的含义了。这其实也是我喜欢看一些外文文章的原因,他们的文章一般会从一个小故事开始,一步步演绎出复杂的知识体系,读到最后给人一种“我擦,原来是这么回事”的快感。
首先明确一个观点,区块链有用且很有用,但是除了比特币,其他区块链目前还缺乏好的应用场景。区块链热并不代表区块链可以用来解决所有问题,或者说并不是所有问题都需要区块链来做。就像之前微信跳一跳刷分,很多大神用上了深度学习算法,各种高大上的玩法,而我只需要截个图,做个二值化就知道该往哪跳了,轻松跳个一万分。
大家对比特币肯定不陌生,即便不知道具体为何物,但是肯定知道这玩意一枚价值1万美元,而且认可度极高。这货之所以能有今天的地位,很大程度取决于它有应用场景。要知道如今的视频解码技术和在线支付技术,最早都是源自成人网站。毕竟有需求,技术才能落地。正如恩格斯所说,一个市场需求比十所大学更能拉动技术进步。
早在2008年,一个自称中本聪的人(更可能是一个组织)提出了比特币的概念,2009年发布了比特币开源软件。而比特币用到的底层技术其实就是今天所说的区块链。当然,这也就意味着比特币只是区块链的一种玩法罢了。
怎么理解比特币呢?其实用过PT种子(Torrent)或者BT下载的人就很容易理解了。
每台电脑只要运行一个基于P2P的软件,那么所有运行这个软件的电脑就连接起来了。如果这个网络中有100台电脑上有Aoi_sola.avi这个资源,那么当你想要下载这个资源的时候,这100台电脑就相当于你的服务器,下载速度杠杠的。与此同时,你的电脑也在充当别人的服务器。其实比特币就是基于这样一种思想,构建在P2P网络中的一种虚拟的加密数字货币,而P2P本身就是一个没有中心的点对点网络,比特币自然继承了这一属性,这也就是为什么我们说比特币是去中心化的原因了。
回到区块链,那区块链长什么样子呢?我们能真实感受手中的百元大钞,但是对基于区块链的比特币似乎是无感的。
首先看一下区块链整体架构模型,当然我们不会去分析模型细节,那是工程上的事。只要知道一般人都在应用层活动就可以了。
区块链实质上就是很多块存储数据的结构——称之为区块,然后通过一定的方法关联起来形成的一个整体。而这种关联方法一般就是通过加密算法给每个区块签名,然后在每个区块中保存前一个区块的签名。
说人话就是:区块就像手机相册里面的照片,而区块链就像很多照片依据时间排序形成照片流,只是区块链还运用了加密算法罢了。
至于区块链的存储,你可以把区块链想象成一张Excel表格,里面的单元格就像一个个区块,里面记录了各种各样的数据。然后这个表格通过网络传输到很多台电脑中分别保存。而这些电脑都达成了某种共识机制,并在此基础上时常更新这些表格内容。比特币和以太坊1.0用的是工作量证明(PoW),以太坊2.0使用的是权益证明(PoS)。
简言之,区块链就像是一个被拷贝了无数份的账本,分散的存储在无数台电脑中,内容随时更新。但是有个原则:账本的内容只能添加,而不能删除或者修改。
由此可以看到,区块链不是存储在某个单一的中心数据库中,而是存储在网络中,其实这就是所谓的去中心化。
我们熟悉的服务一般都是中心化的。在互联网上搜索信息、下载软件、观看视频,这些都是通过提供商的服务器传输到个人电脑上的。去银行存取钱,相关的数据也是中心化的存在银行的数据库中。
中心化的信息存储系统存在很多弊端,由于数据集中存储,就很容易引起黑客的关注,比如某些酒店泄露的开房数据。
中心化的系统进行系统升级,就很可能阻断业务,相信大家对银行和通信运营商“系统升级,带来不便请谅解”的说辞一定不陌生吧。
中心化的系统一旦故障,存储的信息就无法访问,甚至丢失。你非要说有热备、双活、容灾数据中心、甚至冷备,那我只能说,首先切换需要时间,其次,每备份一次就意味着开销,更何况干掉所有备份也不是不可能。其实只要挖断几根主干网络的光纤,很多互联网服务就挂掉了。这里只是讨论可行性,单纯的讨论技术,没有恶意。
还有一种可能,中心化的系统出现重大问题,比如篡改数据、销毁数据等。毕竟,有人参与的系统,最后考验的都是人性。
而如果使用去中心化的系统,不仅可以解决以上的所有问题,事情还会变得简单很多。原本在淘宝上买东西,需要把钱交给支付宝,再由支付宝交给商家,这里支付宝就是中心化的。而去中心化的系统中,可以在网络中直接把钱给商家。不仅没有中间商赚差价,而且还让支付行为更加安全,更加隐私。在网上购物,就变得像在商店里买东西直接付现金一样,更准确的讲应该是相当于头上套了个丝袜付现金。
区块链的所有数据存储在网络中,每个人都可以访问区块链的所有数据。换句话说,所有人都可以访问的区块链,那它必然是公开透明的。理论上任何人都可以跟踪数据。这个特性可能会让人感到诧异,不是说区块链可以更好的保护隐私吗?
其实原理很简单:个人信息已经通过加密算法保护起来了,对外提供一个公开地址,一般来说就是一段乱七八糟的加密字符串。以转账一个比特币为例,公开的信息将会是这样的:
再看下面这个是以太坊的交易数据:
估计真的是亲妈都不认识了。这种安全机制是前所未有的。要知道,出门用在线支付买个水果,商家后台都能看到个人的一堆数据,更不用说支付平台了。
想想苹果推出的信用卡,每一笔支付都是一个虚拟账号。再到苹果手机提供的Sign in with Apple功能,登录APP使用的名字和邮箱等信息都是虚构的,但是同样可以收到邮件信息。国人的隐私安全真的令人担忧啊!
但是,知道了某个公司的公开地址,所有人就可以查看这个公司的历史交易信息。这样是不是会更好的约束公司的行为呢?当然,一般来说公司不会傻到只用一个公开地址,也不会把所有的交易都放到区块链上。但是这个机制用来对有机食品溯源或者药品流通跟踪是不是很棒呢!但是的但是,上链的数据还是得由人录入的,现有的区块链机制只能保证上链的内容不可以修改,却没有机制保证正确录入内容。是不是很无奈,这也是区块链有待创新的地方。
前面已经说过,区块只允许增加而不能减少。区块产生后加入到链上就不能修改或者删除。想想金融上的各种盗用行为,如果一旦产生就不能抹去,甚至还可以追踪前后的交易记录,那么很多盗用公款的事情应该就不会发生了。如果用区块链记录历史,是不是可以看到更真实的历史呢?
区块链不可篡改,其实是人为设定的。也就是我们需要区块链不可以被篡改,然后想了一套约束机制实现了这种想法。为了实现不可篡改,区块链使用了哈希加密。
这里简单介绍一下哈希(Hash)算法。哈希算法实现上很复杂,但是理解起来则很简单。
定义一个函数:
这个Hash函数有如下几个特点:
相同的原始信息经过相同哈希函数能够得到相同的摘要信息。
不同的原始信息经过相同哈希函数得到的摘要信息差距很大。
不可逆性,即从摘要信息无法倒推出原始的输入信息。
只要输入值x改变一点点,输出结果就会迥然不同,这一般被称为雪崩效应(Avalanche effect)。好的Hash函数,只要输入值不同,输出结果就应该不一样。但是这并不是绝对的,也就是说不同的输入也可能产生相同的输出,只是概率极小,小到工程应用可以忽略。
常见的Hash算法有MD5、SHA1、SHA256、HMAC-SHA1以及国密算法SM3等。比特币使用的Hash算法便是SHA256。直观感受一下:
事实上仅仅是多了一个点,SHA256的输出值就会有天壤之别。
很多时候,图片或者视频等文件盗用监测用的就是Hash检测。其实,盗用的时候只要在图片上加个点或者在视频中删除一个帧,就能让Hash值完全不一样。再次申明,我不是在教你变坏,我只是纯粹的讨论技术。
区块链中本质上就是无数个区块,通过Hash指针链接起来的。这里的Hash指针不仅包含了前一个区块的地址,还包含了前一个区块数据的Hash值,也就是我们前面提到的数字签名。就是这个小小的Hash值设定,产生一个神奇的机制。
想象一下,一个黑客想要黑掉区块链中第5个区块,必然会导致第5个区块数据发生变化,而第6个区块中存储了第5个区块的Hash值,根据Hash函数的特点,第5个区块改变后,必然导致其Hash值变化。
这样黑客黑掉的第5区块就不会被全网接受,为了让全网接受,黑客就不得不黑掉第6个区块,把它存储的第5区块的Hash值修正。
而这样又改变了第6个区块的数据,进而导致第6区块Hash值变化,那么黑客就要再黑掉第7区块,然后……这个黑客就累死了。要知道,比特币有50多万个区块。
简言之,要改变一个区块,就必须把它后面的所有区块都修改一遍,而这几乎是不可能的。除非发动51%攻击,但是问题在于,具有发动51%攻击的能力,干点别的会更赚,干嘛还做这种无用功。发动51%攻击,就像一个掌握了全球一半财富的人,还非要干点偷鸡摸狗的事。
先等等,前面提到黑客黑掉中间的某个区块,就必须黑掉其后所有的区块,那黑客要是从最后一个区块往前黑呢?事实上,这也是不可能的。
如果要黑掉最后一个区块,改变区块的某个值后,黑客需要为这个区块计算新的Hash值。而计算这个Hash值其实就是挖矿的过程了,也就是需要花费大量的算(jin)力(qian)去证明这个区块是合法的。
以比特币的工作量证明(PoW)为例,为了限制新区块产生的速度,中本聪最初设计了一个奇(er)妙(bi)的规则:新区块中通过引入一个随机数字,通过不断改变这个字段的值,计算新的Hash值,只有当计算出的256位二进制Hash值的前72位都为0,才算是产生了合法的区块,才可以广播到全网获得认同。
因为是二进制,所以Hash值第一位是0的概率是1/2,第二位是0的概率也是1/2,这样产生一个新的区块的概率为1/2^72,这个难度可想而知。即便出现更强大的硬件,比如GPU提升导致全网算力增加一倍,那么只需要简单调整一下这个设定,比如要求前73位必须全是0就可以对冲掉新增出来的算力。
假设计算出这个Hash值需要10分钟,那么当黑客花了10分钟计算出最后一个区块的Hash值的同时,全网的其他计算机在未被篡改的区块链基础上产生了一个新的区块,而区块链还有个所谓的最长链原则:全网只认最长的链。这就导致黑客的那条链不被承认,因为他短,估计黑客要哭晕在厕所了。
所以黑客修改最后一个区块时,不仅需要计算被篡改区块的Hash值,还需要在此基础上再产生一个区块。即便产生了两个区块,而与此同时,全网也在原来的区块链中产生了一个新的区块,与黑客的链一样长,他们还是会竞争谁是最长链。这就要求黑客在20分钟内至少产生三个区块。也就是说黑客的算力需要大于全网的算力,这其实就是51%攻击了。还是那句话,如果黑客能掌控这么强大的算力,做点什么不好呢?
当然,凡事无绝对,如果一个黑客运气爆棚,10分钟算出3个区块也不是绝对不可能,只是这个概率可能比找到一个新的地球的概率还要小。就像量子力学下微观世界的不确定性并不会影响宏观世界计算篮球落点一样,宏观角度来看,全网就是每10分钟产生一个新区块。
前面说区块只能增加,不能修改不能删除,那区块链岂不是越来越大?占用越来越多存储空间?是的,如你所愿。
从2008年比特币创世区块诞生到今年9月,比特币的链已经达到242GB大小了。其实完全没必要担心区块链变大,那么多人发朋友圈,也没听说腾讯存不下了。
区块链参与者其实可以通过三种方式参与进来:
作为轻客户端,仅需要保存区块链的一部分数据。
作为完整节点,也就是在本地保留区块链的所有数据。
作为矿机存在,通过验证区块链中的每一笔交易,并以此获得奖励。
在比特币中,通过产生新的比特币作为奖励。你可能听说过,比特币总量只有2100万枚,当全部比特币都已经生成完毕了怎么办?其实还可以收取交易费啊,更何况,这也是百年以后的事了,根本无需杞人忧天。
也许你该关心的是,比特币的总数为什么是2100万枚呢?简单解释一下,2100万并没什么特殊含义,纯粹是规则使然。什么规则呢?中本聪规定,全网大概每10分钟产生一个区块,作为奖励,最开始4年每个区块奖励50个比特币,而以后每4年奖励减少一半。这样就会有下面这个公式了:
按照前面说的,区块链不应该都是公开透明且所有人可以参与的吗?为什么还非要强调它是公有链呢?其实不然,理想很丰满,现实往往很骨感。
很多东西真正实现起来不得不做一些折衷,因此还有那种特定人群可以参与的区块链,一般被称为私有链。私有链有点像某些PT资源站点,他们采用邀请等准入机制,需要满足特定条件才可以参与进去。
既然有私有链和公有链,那有没有介于他们之间的区块链呢?也有的,就是所谓的联盟链。记得二战历史提到的协约国和同盟国吗?联盟链的概念其实类似。也就是由一部分团体共同认可和维护的区块链就是联盟链。
联盟链其实可以用来解决下面这个问题。一个人以自己的价值1000万的房子在A银行抵押贷款800万,又在B银行抵押贷款500万,这样贷款额度已经超过了抵押品的价值。在现实生活中确实会出现这种事。究其原因,主要是因为银行间存在竞争,其核心数据是不会共享的。但是如果银行间建立一条联盟链,链上存储贷款记录,这样B银行就可以知道这个人在某个银行贷款800万了。
在网络极客的眼里,只有公有链才是区块链。他们渴望用代码重构世界。但是在现实世界,既有国家的概念,也有不同的法律法规。区块链想要落地势必会受到诸多限制,而一旦有限制,就不再是最初的区块链了。
因此可以不客气的说,公有链很难有用途,私有链和联盟链又不算是真正意义上的区块链。但是私有链和联盟链肯定是区块链的出路所在。不妨想一想,局域网、城域网以及互联网之间的区别,是不是有点像私有链、联盟链以及公有链的区别呢?
说了这么多,一直在说区块链有多么牛叉,那它到底能干嘛?相信你肯定听说过区块链的用途很广,前途无量。但是以我鄙见,除了比特币和以太坊的以太币,区块链还有很长的路要走。网上都把区块链应用于养猪了,如果知道区块链的本质,肯定知道这是什么货色,更不用说那些山寨币了。
为什么我认为比特币是区块链成功的应用呢?原因很简单,一个比特币价值10000美元啊!哈哈,这是以结果论英雄。其实也不是,比特币的成功还在于,他是真正意义上的区块链,也就是所谓的公有链。公有链意味着真正的平权,也就意味着每个人都可以公平参与。随之带来广泛的认可,以至于它实际上已经成为一种资产,可以用于现实世界中的真实交易。
跳出币圈,毫无疑问,金融产业必然是区块链应用的前锋,一切与钱相关的产业,往往更注重前沿科技。而跨境汇款更是区块链的用武之地,仅以美元汇款来看,其规模在5000亿量级。而区块链可以干掉中间人,也就是没有中间商赚差价,这是多么炸天的技能,更何况还能避开各种复杂麻烦的兑换管制,真的是手机里面装个区块链钱包就可以走天下的节奏。
其次,目前的Uber、Airbnb、滴滴、二手商品交易平台等共享经济类的公司,事实上也没有存在的必要,他们本质上都是中间商。如果把网约车、个人租赁扔到区块链上,用户可以在链上直接找到服务提供者,与此同时还有千千万的参与者对相关信息进行认证,还要不那么靠谱的中间人干嘛?当然,还是那句话,法律法规是不可忽视的甚至是决定性的因素。
除此之外,还有诸多的应用场景:
智能合约,一旦签订,后续流程都在条件满足时自动触发,既不需要人参与,也没人可以干预。
保险和众筹,用区块链管理的众筹资金,支付宝的相互宝就是这种。
供应链监督、文件存储、知识产权管理、万物互联…
写在最后
点个“在看”,好不啦