代码改变世界

谈谈区块链的理解 -- 读《区块链:技术驱动金融》

2018-06-14 01:44  stoneniqiu  阅读(2065)  评论(4编辑  收藏  举报

今年网上关于数字货币和区块链的文章和讨论汗牛充栋,但我一直狐疑的是,有说的那么厉害吗,特别是看到“重新定义了金融”,“重新定义世界”,“颠覆金融业”,“重建信用机制”。有些人的夸大之声像卖保健品的宣传一样“能治百病”。正因为对这些的质疑才想找书来看。这本书虽然名字里面带有金融(英文名为Bitcoin and Cryptocurrency Technologies),实则是一本很实在的讲解比特币和区块链技术的书。而且作者也没有描绘区块链的“绘图伟业”。所以如果你对此有兴趣,真推荐读一读这本。

说到比特币,首先让人想到的就是那让人咋舌的暴涨速度,中本聪从2007年5月份开始编写比特币,09年开始发行,到2017年底,比特币8年涨了1000万倍。单价最高高达近2万美元。但随后一路下挫,到今天还是6400美元左右。2万个比特币买24美元披萨的故事让人们津津乐道,多少人买了比特币却因为忘记了私钥或者U盘坏了而扼腕痛惜。正是这些个故事不断的发酵,推波助澜,催生了很多新的数字货币和前赴后继的韭菜。而说到区块链,却让人皱起了眉头。特别是公众号的文章里面不断的甩出“去中心化”,“共识机制”,“智能合约”,或者是“挖矿”,“公钥、私钥”时,让人有种不明觉厉的感觉。讲区块链不得不说比特币,毕竟这是区块链目前应用的最成功案例。

01 数字货币是旁氏骗局吗?

巴菲特还有郎咸平都有说过数字货币(ICO)是庞氏骗局,这个问题要从货币的本质来看,什么是货币,亚当斯密在《国富论》中提出:“货币是流动资本的一部分,是商业的上大工具,是货物借以流通的手段”,白话点来说就是只要大家达成共识,选定某一种物品作为媒介就可以来买卖。哪怕是一块石头,只要大家都认可,它就能用来交易,达成共识的人越多,它的流通价值越高。现在太平洋中雅普岛居民就把下图这种石头当货币。我们伟大的祖先使用了贝壳,金银铜铁铸币,到交子(四川缺铜矿,铸币是铁,背着几十贯钱有几十斤重走蜀道,所以宋朝出现了纸币)。

 到现在我们出门不带钱包,钱也不过是账户里面的一个数字。像比特币这样的数字货币,使用者已达千万,有很多银行或者商家接受,交易量也大,它实质上就是一种货币,只是它不属于某个国家,没有法律和国家信用的背书;什么是庞氏骗局呢,就是把一个没价值或者价值很低的东西吹嘘的天花烂坠,好卖给下一个接手的以从中获利,这是那些卖保健药骗老人的惯用伎俩。但是要注意的是,因为比特币的火爆,新起了很多新的数字货币,光2015年发行的新币都有八百多种,坊间称发币最难的就是取名字。而且90%以上就是直接用的比特币的源码,没有任何创新,发行方鼓吹之后,拉高出货,收割韭菜,那就是名副其实的庞氏骗局。

这里还想讲一下虚拟货币和法币的区别,法币由各国政府发行,依据国家的生产总值,有国家信用和税收的背书,是宏观经济的调控的重要手段,比如故意造成轻微的通货膨胀(多印钱)来刺激经济,让你觉得钱拿在手里还不如花了它,但数字货币不受任何中央政府控制,而且数量都是既定的,但可以作为各种法币的中介。所以法币和数字货币有各自不同的市场。

 02 什么是区块链,比特币为什么需要它

中本聪打造比特币的一个初衷就是想让比特币接近现金体系,现金有什么好处?第一点就是确保了匿名性,我们拿钱到商店买东西,只要钱是真的,商家不会管你是谁。但如果你用信用卡或者支付宝,店主就能知道你的信息。第二点就是支持线下交易,不需要第三方批准。如果你的钱在银行,可能因为某种原因被冻结,比如贾跃亭。要做到这两点,前者就需要一套合理的加密技术,后者就需要去中心化,支持点对点交易,摆脱对中央政府、企业或者个人的控制。

而区块链是中本聪为了解决比特币去中心化而发明的,网上普遍解读成一种分布式的数据库(或账本),它的数据结构如下所示。每一个区块的内部通过二叉树保存了相关交易记录。每个区块通过一个哈希值指向上一个区块的地址,形成区块链。那么到底是怎么做到去中心化的呢?

思考这点,我们就要考虑三个问题:谁负责这些数据的存储?谁决定每一笔交易有效?谁负责创建新的比特币?

如果这些数据的存储和交易由某一个组织或者个人控制,那么就存在作弊的可能,而且容易被攻破,为杜绝这样的事情发生,对于第一个问题,中本聪让所有的区块链数据存储在每一个矿工节点上,大家都保留一份完整的数据,新的节点加入的时候,首先就是通过连接到另一个最近的节点下载最新的数据。到2015年底这部分数据已经有五十G了。这样的话,数据一旦写入区块,将是不可逆的,因为你无法去修改所有的数据,况且你修改一个节点的数据会导致它的哈希值发送变化,原本指向它的区块也要修改;

对于第二个问题,一笔交易有效,意味着交易被写入了区块,且这个区块最终加入的主链。谁负责这件事呢,总不需要所有的节点来参与,因为全世界不同的地方,有着不同的延迟,有的上线有的不上线,而且怎么保证节点就愿意正确的干这件事呢?这就涉及到一个共识机制,就像抛绣球一样,比特币每隔十分钟公布一个随机数,哪个节点产生的哈希值和这个随机数一致(接住了绣球),那么这个幸运的节点就被选中创建这个区块。为什么说它是幸运的呢,因为比特币系统给予这个节点一定数量的比特币作为奖励。最开始每创建一个区块有50个比特币奖励,现在是25个,基本上每四年减少一半,上限是2100万个比特币,理论上到2140年这种奖励就会发完。这个抛绣球的过程就是所谓的工作量证明PoW。专门从事计算随机数的机器叫矿机,专门为此掏币的人就叫矿工,矿机计算随机数的过程就叫挖矿。这也解释了第三个问题。诚然实际算法实现的过程比我讲的要复杂。

这就是比特币实现去中心化的方式,没有任何人能决定谁可以提交下一个区块。还想说的一点是,区块链的交易记录都是公开的,打个比方,如果有一家公司用比特币发工资的话,别人可以通过你的公钥查到你收到的工资。如果可能的话,这一点看上去比较适合做慈善或者记录财政开支~

 03 挖矿这件事怎么看

首先要说的是挖矿是一件很难的事情,在2014年年底,产生一个区块平均要做10^20次哈希运算。换言之,目标区域仅仅是整个输出范围的1/10^20。这是超大的计算量,普通个人电脑无法胜任,打个比方,假如你是个炮兵,矿机算出的哈希值就是炮弹,哈希函数就是大炮,你想击中的目标,比如一个指挥所,它肯定在你的射程范围内,但非常小,而且其实根本不知道在哪里(哈希值的计算是无序的)。击中目标的唯一办法是狂轰滥炸,这就是比特币工作量的概念,炸的越多,击中的概率越高。如果这个指挥所的目标区域是轰击区域1%大的话,你大概平均要发出100枚炮弹才可能击中目标,而且越往后越难。正因此导致了大量能源(电力)的和算力的浪费。这也是比特币被人诟病的问题之一。

但是目前没有更好的办法,如果没有挖矿的过程如何保证去中心化的实现?就当作是比特币产生必须付出的代价吧。所以谁想获得更多的比特币,那他就得拥有相当可观的算力。这就催生了各种矿机的诞生。甚至形成了矿池这样的挖矿组织,散户们一起抱团挖矿,有钱同享,按算力比例分配。

 

类似于淘金热,产生了不同的矿机,一度造成市场上显卡涨价,最后产生了专用的集成电路技术ASIC来挖矿,简直催生了一个产业。卖阿瓦隆矿机的嘉楠耘智已经准备在香港上市了。而除了浪费电力和算力之外,我们要注意的一点是,每个区块大小限定在1MB,每个交易大约是250字节,所以每块最多容纳420000个交易。平均每隔10分钟,有一个矿工获得记账权利,所以每秒钟只能处理7个交易,这就是比特币网络的交易处理能力!而支付宝在双十一的时候峰值交易量可达25.6万笔!所以这就像一个哲学问题,公平(民主)和效率不可兼得。

 04 什么是智能合约

 智能合约是区块链相关书籍和文章里面提到很多的一个特点,其实这要从比特币的交易机制说起,先说一个比较有意思的点,平时我们花钱,根据手里的钱我们想花多少就花多少,而比特币却是要么花光要么不花。比如张三有5个比特币,要转给李四1个比特币,张三需要一次性将1个比特币转给李四,其他4个再转给自己。这么做的目的是为了方便查最后一次的交易记录就能知道张三到底拥有多少个比特币,而不用去回溯所有的交易记录。

而读取交易记录这些用的是Forth脚本语言,也就留出可编程的可扩展的余地。假设A在网上买东西,想要货到付款,就可以发起这样的一个交易,并规定,三个人中有两个人签名了,资金就能被提取,这三个人是A,和商家B,以及仲裁C。这个规定就是一个智能合约。其实程序员很好理解这件事,智能合约就是条件语句,因此比特币可以实现多种场景支付。 

但我想的是,平时是看条款或者合约,比特币上得会看代码才行,而且这个扩展性是受编程环境约束的。

 05 区块链应用

 区块链应用的讨论越来越多,其实我觉得有一部分的原因是ICO投机的方式在国内被严格限制,导致这部分的“热情”转移到了区块链上了。各大银行,互联网企业都纷纷表示加入区块链的研究。其实这是很正常的一件事情,毕竟ICO掀起了这么大的浪,金融业和互联网出于防范也要投入精力去研究它,但这并不说明区块链真的适合别的其他领域。

提及比较多领域是金融、认证、数字版权、物联网等领域。金融业很好理解,发行代币以及交易的过程和股票非常相似,而且股票交易有佣金,ICO交易也有手续费。似乎是任何可以数字化的东西都可以像比特币一样在区块链上被记录和流通。这一点貌似给了很多人想象的空间。但我想的问的是,有这个需求和必要吗?我们可以回顾一下比特币的区块链,是通过颇有争议的共识算法做到去中心化的,如果接下来的各种区块链没有做到这一点,而只是用了区块链的结构和加密方式,这还是个中心化的系统,相当于换了一种数据库的分布式系统。所以如果只是说使用了区块链,或者说智能合约如何强大(编程也需要环境支持),而没有一套去中心化的体系,加上现有体系并没有多大的问题时,各种链恐怕难以得到社会的共识。

小结:其实很多想讲还没讲完,区块链诞生的时间并不久,还在不断的发展,更多的还是要理性的去看。了解到上面的这些知识之后,我觉得区块链本身并不神秘也不是有多厉害的创新,但确实提供了一种新的思路。中心化或者去中心化本身都有各自的场景,并不代表好坏。

ps:这是书山有路第27期分享阅读书目,由@山东_可乐同学历时一个月分享完,喜欢阅读的朋友可以关注下下面的二维码,我们一起去下一个探索。