2018-01-04

简说区块链及其适用场景

大概是因为比特币在短短几年内的疯狂升值,今时今日许多人都在说区块链。甚至前几日读到新闻说美国有一间咖啡店改名为区块链。但是,许多财经网站、甚至技术新闻网站那些有关区块链的文章给我这样的印象:作者其实并不太明白区块链。广大在区块链技术上投资的群众更是人云亦云完全不知自己在做什么。这篇文章就向非计算机专业的读者简单解释下区块链:当初它的出现究竟是为了解决什么问题,它的重要组成部分、它的运作机制、以及它的适用场景。

通俗地解释区块链并非一件易事。Dash.org 在 2016 年制作了一部科普影片(英文),这篇文章的讲述方式深受这部影片启发,先行致谢。

数字货币的信用问题


首先,让我们假设银行并不存在。

如果本桑想通过互联网把钱给我的朋友张三,可以怎么做?

写电邮一封:谨此送上一单位电邮币,敬请笑纳。张三用我的电邮币享受了一个冰淇凌之后,脑洞大开,写电邮派钱给他所有的三姑六婆狐朋狗友,信中的金额随他挥洒。 张三的三姑六婆狐朋狗友也受到启发……三日之后,世界上爆发空前通货膨胀,一个冰淇凌盛惠三万电邮币。

这是不行的。货币供应量必须有限,不能像电邮币那么可以随意从空气中生长。

怎样保证货币总量守恒,或者至少不能无限随意膨胀?



在交易体系中建立一个账本记录所有货币的来龙去脉就可以。


在这个账本上,经济系统中的每一笔交易都有记录。每个记录的内容大致是这样:发钱方,收钱方,金额数量,以及交易时间。电子化的数据库中,这种朴素的记录有一个时髦的名字,叫做 “区块” (block)。 账本中,所有交易记录严格按时间顺序排列,环环相扣,所以这个账本就叫做 “区块链”。任何人花掉的钱不可以比她现有的钱更多。假如张三只有 3 个这种电子币,他不可以给李四送出 4 个币。这样的流水账本就是所谓区块链的核心。

设计这样的一个数字流水账机制,并不是就万事大吉了。人之初,性本恶。

张三可以把他账上的一单位电子币悄悄改成三千单位。事实上每个人都想这么做。好的,我们就从技术上限制对账本上已有记录的修改。 所以,区块链上的区块是只可增加,不可修改的。

那么这种电子账本,它是储存在哪里,又由谁负责往账本上写新记录的呢? 记住,在这个货币系统中,银行并不存在,没有中央数据库。那么就让系统中的每一个用户都能看到一份完整的账本吧。也就是说,假如这个货币系统有三百万用户,那么这个账本就至少要有三百万个拷贝,他们码农的业内黑话 “分布式数据库” 在区块链里就是这个意思。而且,每个账本拷贝必须是时时刻刻都一模一样的,不能出现这种情况: 张三的账本上我有 42 块钱而李四的账本上我有 100 块钱。那到底信哪个账本啊? 我们在这个货币网络中需要一个共识(consensus):谁在什么时候说了算。

在整个货币网络中,不能出现有多人同时添加记录的情况,必须一个一个来。只有这样,添加记录的广播 “嗨嗨~~,有一条新记录,你们都赶快把它抄了去哈!!” 才能被所有账本听到并执行。

这种广播,其实是一种往所有账本上添加记录的权力。这种权力在区块链网络中举足轻重,必须付出一些代价才能获得。什么代价呢? 算很复杂的数学题(哈希函数)。算题的各位苦力——通常是一些高性能的运算处理器,比如 GPU —— 在许多区块链网络中叫做 “矿工”,算题的过程就叫做 “挖矿”。 每当有新记录需要往账本上添加时,系统就会生成一道数学难题用来验证这个新记录的真实性和有效性。网络中的所有矿工就在此时脑力全开疯狂算题,谁最先算得答案,谁就有权发表广播。并且,系统会生成新的货币奖励给矿工,就像金矿从天而降。矿工就本质上来说是一种校验器,它验证的是新记录(即新区块)的合法性。并非所有的区块链都要用到新生货币之类的奖励机制,但是,所有的区块链都要用到校验机制。

在区块链网络中,每一个账号都有加密机制来保证安全,矿工们运算的数学题也是基于密码学,所以,那些基于区块链的电子货币又叫做加密货币或者密码学货币。

区块链网络的运作机制牵涉到两大数学绝学:集群中的共识算法和密码学。这其中的哪一门都是高深复杂,比许多人工智能算法更为抽象难懂,这世上真正参透的人寥寥无几。所以,普通大众其实很难真正理解区块链。这篇文章,也只是一种极简主义的介绍。

越难懂的东西越好装神弄鬼,也难怪如今资本市场上,区块链的泡沫如此之大。

这里想指出的是,区块链网络的根本哲学在于其分布式的权力以及信用系统。在比较 “纯粹”的公共区块链网络里,整个系统没有中心权威,即所谓 “去中心化”,是一种终极民主形式。日后人类社会如果昌明到政府可以全部取消的时候,那么人与人之间的契约、协议、法则、规范等等,大概都会内化在区块链网络里。


适用场景


了解了区块链的根本属性以后,我们不难在各种兜售区块链技术的喧嚣中保持冷静的头脑。

在银行和金融界,尤其是不同银行间帐目的清算,传统上必须用到第三方的信托。跨国或者跨币种交易更为麻烦,当中可能要找好几个 trust。在这些领域应用区块链价值网络可以大大减低对信托方的依赖,降低交易成本且加快交易速度。各国央行甚至可以自己做东,用一个区块链网络代表自己,满足国内银行间支付的业务需要。

但是在供应链管理上,区块链网络就显得有点牵强。首先,当今绝大多数的企业还是有十分明确的权威体系。采购或者销售,很多决定都是自己做的,“分布式” 的信用或权威不仅没必要而且不被向往。而如果那个系统做成私有链,其本质跟传统的中央数据库应用没有任何不同。另外一个很大的问题是,尽管在区块链网络内部,任何一条记录的真实性和合法性有很大的保证,但是一旦到了物质世界,作假和作弊依然是个问题,跟不用区块链技术没什么两样。具体点说,我可以相信一个 “钻石追踪区块链系统” 里的全部数据,但是,在那个数字化的网络外部,在有形世界中把那颗钻石替换掉轻而易举。其安全性还不是要靠外部保障。

要说到普通商品来源追踪之类的应用,不用区块链技术也已经够好了。

不得不提的是区块链网络的运行非常耗能。同样功能的应用,用区块链技术搭建并运行,网络中所有的数据库和校验器所消耗的能源轻易就是传统技术的千百倍。

假如一个业务问题的本质并不跟区块链技术的本质相吻合,也就是说,假如该问题并不是非区块链技术而不能解决,那么,最好就不要用区块链。





延伸阅读: Karl Wüst 和 Arthur Gervais 的论文 Do You Need a Blockchain?


谢谢阅读,下次再见。

No comments:

Post a Comment