内容来源:2018年6月9日,在“菜园子·产品经理社区”主办的“产品经理线下交流会(成都站)”活动上,彭圣才老师作为嘉宾演讲。区块笔记侠作为合作方,由笔记达人Fun整理,经讲者审阅授权发布。
阅读之前,邀请你思考几个问题:
1、为什么会产生区块链?
2、区块链的本质是什么 ?
3、什么是哈希值?
4、为什么会有随机数和难度?
5、现在市面上发行的币,要不要去购买?
6、区块链对我们生活有什么具体的改变?
在过去几十年的时间里,有很多计算机领域的科学家在思考,能不能发明出一个数据库,上面的数据永远不会被篡改,也不会被地震、火山、战争等外界因素所影响,整个系统数据永远保持稳定和一贯性。
基于此,需要发明一个分布式的数据存储的技术。
在这个技术演变的过程中,一位叫中本聪( 比特币协议及其相关软件Bitcoin-Qt的创造者,但真实身份未知)的人在2008年发表了一个区块链技术的白皮书,真正把分布式数据库的一种理论以公开协议的方式发布。
从2008年到今天,这套体系已经运行了整整十年,事实证明它的确是一个非常可靠、不会被任何人篡改、去中心化的体系。每一个人就会成为区块链上的一个节点,这是一个了不起的设计。
举两个例子:
2014年北京大学有个BBS叫一塌糊涂,它曾经是那个时代最大的中文在线网站,大概有几十万人在线,这个在线人数在2014年是一个非常了不起的数字。
笔记侠注:一塌糊涂BBS创建于1999年9月17日,创始人是当时北京大学物理系的学生吴涛,是一个完全民间性质的BBS站点,曾是中国大陆非常具有影响力的一个BBS,在关闭前也是教育网内平均在线人数最多的BBS。
一塌糊涂BBS主要的特点是在其宽松的管理形式下形成的自由民主的讨论氛围。兼容并蓄,能够容纳不同的观点和立场,这也是其吸引大量知识型用户的原因之一。在这种环境中,培育出了众多有特色的版面,比如“公民生活”、“反谣言中心”、“台海观察”、“ 人权研究”等,其宽容的文化也使其包容了sex、motss和lesbian等版面。
在2004年9月13日关站前,一塌糊涂BBS逐步发展到800多个讨论区,用户群主要为全国高校及科研机构的学生、研究人员、教师及专家学者,以及工作在各行各业的高校毕业生。
再比如BT下载。
今天已经到了互联网的视频时代,很少再有人去BT上下片子的。几年前其实有过一个专门基于分布式的存储方式的播放器,叫快播。
这个公司的创始人甚至因此而被判刑坐牢,而快播创始人王欣他觉得自己很无辜,他认为自己只做了个播放器,播放的内容都是在每一个人自己的论坛上,做播放器为什么会有罪,其实法院的法官并不了解什么是分布式存储。
这些案例告诉我们从数据存储出发,有很多客观的实际需求,让我们想发明出一个去中心化、无法被篡改的应用形态。这是导致分布式存储技术以及区块链技术产生的缘由。
区块链到底是怎样可以做到把数据分布式地存储在各个地方,居然不会被篡改,也不会被阻止的呢?
它的基础原理非常简单,就是计算机编程最基本的一个数据结构,树和链表,即区块和链表。
一个一个的区块里面存储我们要分析的数据,然后每一个区块都会指向它前一个区块,区块链就是一长串存储了所有数据的链条。
这就是区块链最基本的原理,看起来并没有什么特别的,那神奇的点在哪里?
这个概念比链表要稍微进阶一点,即用哈希值(Hash,计算机领域的一种散列函数, 简单地说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数)把一整块数据表达出来。
举个例子:要描绘我这个人。数据可能非常长,恨不得拿X光把我从头到脚扫一遍,然后三维建模,这数据就是个很庞大的数据,但我这个人可以有一个唯一的标识身份的东西,比如我的身份证号码,或者我的指纹、人脸识别可能也是独一无二的哈希值。
所谓的哈希是什么?任意一串数据,我都用某种不固定的算法生成一串独一无二的数值,这个就是它的哈希值。
见上图,比如有2个字符串abc和abC。假设我们有一种哈希值的算法,把它理解为一个翻译器,能够把它生成一长串的独一无二的数值,那么这个数值就是它们各自的哈希值。
大家可以看到abc和abC,小写的c和大写C,只是改变一个字母的大小写,但它们各自的哈希值却发生了完全不一样的变化,对吧?这是哈希值的一个特点,就是说它原则上是不会重叠的,而有些人认为哈希值可能会碰撞,但由于这个数值足够长会导致它重合的几率极低,我们可以忽略不计。因此说,基于每一个字符串都能算出一个哈希值。哈希值就是它的数指纹。
大家只要知道所谓哈希就是一块数据的数字指纹。
区块链,它有一个区块和一个链,一个区块存储很多数据。所以对于区块链来说,你的每一个区块链里面的数据,都会约定好一个不确定的算法,这个算法已经事先公开。基于这个算法,能算出这个区块的一个数字指纹,然后把这个数字指纹叫做这个区块的ID。
对于区块链链条上的每一个区块来说,它都有一个独一无二的区块ID,也就是它的数字指纹。
中本聪于2008年发布的这个区块链白皮书里面,他规定所有区块的ID前面有很多个0才是符合区块链标准的区块。这没有什么道理,后面我会给大家讲为什么这个规定设计得如此精巧。
如果一个区块算出来的ID是第一行和第三行,它就认为这个东西fail,不符合区块链的标准,拒绝这个块,这个块也不存在。如果区块的ID算出来前面有好多好多0的这种,它认为你是可以被接受的,那么,你就可以进入区块链。
以上是区块链的一些概念,每一个区块链它的那个数字指纹一定是有很多很多这样的0来开始的。区块链上所有的那些“块”,都是这样存储数据的。
第一个是这个区块链的版本号,中本聪设计区块链时,他考虑到这个链将来也有可能会有分支,那这个版本号只是一个标识。
第二个是上一个区块的地址。既然是个链条,每一个区块能够有一种按图索骥的方式找到上一个区块。所以每一个区块都有上一个区块的地址(哈希值),上一个区块又有上上个区块的地址(哈希值),以此类推。
第三个当前块的数据。用来存储东西的,不管是存一篇文章还是存一个通知,还是一个软件或一部片子。
第四个是时间戳,区块链的技术依赖于一个全球统一的时间戳。区块链上时序非常重要,时间顺序非常重要,通过这个时间戳来判断两个区块谁在前,谁在后。
第五个是难度。难度不是固定的,随着时间的推移难度系数会越来越大,这是区块链里非常有意思的设计。区块包含一个难度系数(difficulty),这个值决定了计算哈希的难度。
举例来说,第100000个区块的难度系数是 14484.16236122。区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。
最后一个是随机数。为什么每一个区块都要有个随机数?
假设我们没有随机数的情况下,根据这12345这个数据,这个区块哈希值就已经确定它的数字指纹就已经固定下来。但它的数字指纹一旦固定下来,按照我们前面讲的一定要很多个0才是合规的。
如果没有一个随机数的话,基于这5个数据,有很大的概率算出来不符合区块链的协议,这个区块上不了链,所以加了一个随机数。这个随机数只要一变,数字指纹就变了,就是另外一串数字,每变一下就生成一个另外一个数。
中本聪发布的区块链白皮书就说大家可以去做这件事情。随机数,在没规定市场的情况下,人们可以自己在家里开电脑生成。只要你算出来的一个数字前面有一堆0符合白皮书上的规定,那么你就获得了一个把你这个区块插入区块链的资格。
作为回报,你会得到一个东西,叫比特币。
所以大家都知道为什么“挖矿”能赚钱,有人租一个服务器机房,搞很多台机器,一天到晚都在网上干什么,其实他是在干这件事情,就是去把这么多的区块拿过来算,算出来刚好,他就可以获得一个区块链插入的机会,同时给这个账户一个比特币。
目前,一个比特币大概价值1万美元,大家都可以回去“挖矿”。
所以这就是区块链的原理基础,非常简单,它就是用一个哈希值,用随机数来不断地循环。
在这个机制下,我发起了一个新的交易或者事项,想写一个新的数据,其实是向整个网络所有愿意“挖矿”的人,说我想给在座的每一位产品经理发一百块菜园币的红包。
我把这个交易广播给所有人,就会有好多人的机器24小时都在运转,在这个交易当中去算,算出来好多好多,但其实都无法加入区块链,终于在世界的某个角落,某一个人算出来的东西合规了,他就把这条记录插入了区块链,然后我刚才说的这个承诺,就在这个区块链的链条上背书,这个事就成立了,然后就继续往下进行如此循环。
这就是一个区块链工作的整个原理。
讲到这个环节,就已经有同学会思考这个问题:你发出了一个广播,可能有两个人同时算出来是合规的,那怎么办?到底该接受哪一个?
区块链针对这个问题已经做好了一个设计,叫做最长链。
它允许你在同一个时刻两个人都算出了一个合法的区块,都插入了链条,但是它会有一个所谓的确认的东西。
比如现在有一个区块3457,这个时候有一个新的3458。但3458有两个人算出了这个区块链的哈希值。那么它会把这两个东西都插入,这个是关键。区块链认为这两个区块都暂时合法。
等一段时间以后,这两个区块会有分支,其中一个分支肯定会比另一个分支长,那么最长链就是有效的。
所以每次发起一种交易或者往区块链上写一个数据的时候,它会有一个等待时间,它就是让这两个链条竞争,它的竞争长度是根据中本聪发布的白皮书设定的,一般长度达到六个节点基本可以避免再出现重叠的情况。它会把这个竞争的几率降低到一个完全可以忽略不计的存在。
这也是为什么你在区块链上发起交易大概要等一二十分钟,因为有一个确认机制。
比如一开始两人都成功了,然后再等到十分钟以后,可能这条链变成了一个有六个节点,那条链可能还是3个节点,那么这条长链就成为主链,它会真正获得合法的资格进入这个区块链里面。
这就是一个最长链的原理。
有了这些机制,又有很多人愿意去做“挖矿”这件事情,其实是背后有一个激励机制,让人可以获得回报。
比特币从08年到今天为止,其实一直都运行得非常好,但是光有区块链,光有比特币好像还不够。
所以有人提出了一个观点,我们能不能把区块链升个级,之前是存储数据,如果我们把代码写到区块链上去,而且把代码来执行的东西也写到区块链上去,这样就会变成我写了这段程序、代码是不可被篡改,也是永远无法被阻止的。
大家现在用的微信,过段时间就会升一次级,那是因为微信的代码是腾讯来发布,过段时间把这个代码逻辑给改了,我们也得接受这个结果。
但如有一天,我们可以写出来一个代码,这个代码是运行在区块链条上的,那就意味着这个链上的东西没有人能够阻止、更改。
这个机制非常有趣,是区块链的2.0,叫做以太坊。
大家到区块链上来写代码,写好发布到区块链上,它就会永远不被任何人干预、阻止,服务一直执行下去,这是一个很有趣的设定。
拿到这个事情可以干什么?可以干一件事情叫智能合约。
比如,我和某人签一个合同,发生一笔交易或者约定一件事情,那么我们必须要靠公司来背书,公司盖公章,个人摁手印。
有了智能合约以后,大家不再需要这种传统的方式来背书合约,因为大家都把这个合约写在区块链上。
举个例子:我在这个合约里写只要参与菜园子群里的每日话题,每天就能获得一百个菜园币。
今天我这么说,并且自己写了一段代码到区块链上,那么只要这个区块链上发现有人参与了每日的话题,这个账户就能获得100个菜园币,这个逻辑我自己都改不了,它会一直这样运行下去。
所以这就是智能合约神奇的地方,这也是为什么这个东西它叫做DAPP(Decentralized Application的缩写,翻译过来就是去中心化应用,也称为分布式应用)。
当然你会说写代码总是有Bug的,写错了,自己都改不了,那怎么办?但是对不起,你需要很小心很谨慎地去写代码才行了。
它基于以太坊的这样一个逻辑,会有人干这样的事儿。
比如我是一个创业者,我出来忽悠投资人,说我搞了个菜园子,你给我投一个亿,我这个菜园子将来做大了以后,你占我多少的股份,之后可以让你来分成,那么这个时候投资人要跟我签一个协议。这个协议其实按照我国的公司法都是承担有限责任,我没有做好,只会承担有限责任。
但是发币不一样,今天我们没有向任何投资人签任何协议,我把我们的这个公司未来会做的事情的逻辑写在这个区块链上,所有的人就会相信我不会说话不算数。
只要这个事有一天做成了,那么投资人就自动可以获得这个项目的利益分成。
比如我的菜园子的菜园币真的写到区块链上去,大家发现原来真的只要在菜园子里发言,真能获得菜园币,而且这不是我这个创始人人工干预的。
那么大家就可以真的去菜园子里发言,因为你们相信在区块链上的逻辑不会被篡改。
所以就会有人利用这件事情发币,他会说,发这个币有什么用,这个项目具体是什么,然后他就会去发行这样一个币,让你花钱来买这个币。
然后他说这个项目一旦做成功了,那么根据你今天拿到的这些币,可以按照我们这里的代码逻辑在未来获得回报。
这个东西理论上来说是没有问题的,但实际在我国它已经变成了一些骗子来割韭菜的工具,因为它的门槛太低了。
想象一下,我刚刚讲这个逻辑固然是存在的,但是假如说他实际上什么也没有,那你付出的是什么东西?
很有意思的一点就是,虽然他自己发的是虚拟货币,但是他会希望你用另外一种更具备真实价值的货币来投资。
他不会说我发菜园币给大家就自动获得菜园币,他希望你用人民币换菜园币,用比特币或者以太坊换菜园币。因为他自己也很清楚,这个币以后就是一个空气币,啥也不是。
所以现在有很多人利用这个机制,但它其实是一种非法的集资或者骗取资金的割韭菜行为。
政府已经知道并开始管控这样的事情,现在再发币一般会找一个海外身份来做背书,不太敢以中华人民共和国公民的身份来公开地做。
区块链这件事情,大家听起来很美好,好像有区块链我们真的能够做到去中心化,不需要一个官方、不需要一个组织、不需要一个公司来让我们建立起这个信任机制,听起来是非常美好,但其实还是很难实现的。
现在有各种各样的区块链应用,它们其实都是伪区块链。
按照我刚才讲的那套区块链的逻辑,按照今天的这个技术水平,它是不大可能在一个手机应用的环境下真实地去运行,不管是安卓手机还是IOS,因为技术上的原因,它无法真的像我刚刚讲的看到你在手机上去“挖矿”。
它是让你感受说,它是一个区块链的应用,可能获取你的一些资产数据,然后把你的数据贡献给区块链,这其实都是伪区块链。
它可以宣称APP背后的服务是运行在某个区块链的链条上,但这件事情你不知道也无法去验证,所以你只能相信他是真的。如果你相信他是真的,那你为什么还需要区块链呢?
所以我说,目前而言,去中心化是一个伪命题,如果一个人不相信他做出这个东西,那你也不应该相信他。如果你信任他了,那你为什么还需要区块链来帮助你建立起对他的信任背书呢?
所以这是一个悖论,中心化的信任和去中心化的技术是一对矛盾。
最近很火的一个区块链的应用叫做区块链溯源。
有一个国际知名的乳制品厂商,称它的牛奶都是区块链溯源的,它的牛奶从生产、加工、物流配送每一个环节都在区块链上有记录,是不可篡改,可以追溯的。
我的第一份工作是在一家ERP,当时我们给一个鸡蛋养殖的公司做了一个解决方案。
这家公司当时严谨到什么程度,当时还是2007、2008年(中本聪2008年才发布区块链白皮书),他已经能够做卖到超市里的每一颗鸡蛋,都能够追溯出来这个鸡蛋是鸡场里的哪一只母鸡生出来,那个时候这家公司就可以做到溯源。
所以说,实际上食品安全、物流配送,溯源这件事本身和区块链一点关系都没有。你想做一套溯源的供应链系统,依然可以这样做,没有必要用一个区块链。
直白点说,即使这些数据上了链等于对外宣布我改不了,但其实你也不会去看,你们每个人也并没有一个区块链的浏览器去看,而且区块链上有海量的数据,你也不知道要去看哪一条。
ICO都是骗局。ICO就是发一个币,来募集大家都来这个支持这个项目,然后你就获得了初始的所有权。
再过几年,我们怎么看待关于区块链这个事情:
区块链的技术其实还在发展,今天的区块链如果真的要落地去做应用的话,还有好多问题其实都没解决。
比如记账,你记一笔账要等十分钟,这个就完全不能满足大家日常生活需求。
如果大家玩过区块链的,你把目前看到的这个节点同步下来大概需要一百多个G,所以这个显然不太适合作为大规模的推广民用和网络传输。
你要全网去广播这些东西,距离这样一个网络效率还很遥远,本身这个技术的设计非常了不起、非常精巧,但它今天距离落地产生实用价值我觉得还很遥远。
区块链将来也许有一天在这些问题解决以后,会突然在某个时间会迎来一轮爆发。
有一个国际著名的IT咨询公司叫做Gartner,他们有一个技术演变曲线:一个技术一般会经历一个从初始,到快速地发展、快速地衰落,再重新站起来取得应用场景,进入一个平台期的发展。
今天的区块链处于快速起来的那个顶点,它一定会在一年左右会快速地衰落下去。因为它什么都干不了,不能给你带来任何实际的商业价值,然后有一天这些问题解决了以后,慢慢会重新回到我们的视野当中,产生商业价值。
这是我对区块链的一个认知原则,所以在区块链这件事情上我们不要做先烈。
如果今天去加入一家区块链公司有很大几率是会变成先烈,因为它实际上没有产生任何商业价值,也没有真正解决商业中的具体问题,也有可能变成先驱。
在这个问题上,我的理解是,区块链它就像是一片金矿,所有人都知道那个金矿的储藏非常丰富,但是“挖矿”还没有一个好的工具,可能这个矿板在地下两公里,拿把铁锹是挖不出来的。
但是,我站在这些挖矿的人旁边,我给他卖卖盒饭,给他打打水,如果你干的是这样的事情我觉得是可以去干的,而如果你是很苦逼地拿着铁锹去挖就是白费力气。
所以,真正的应用场景是核心,要解决实际的应用问题。
让子弹飞一会,不要着急。
只要你有真实的业务场景,真实地创造价值,这个事情最终一定会铺开。