——区块链基本概念入门系列

现在区块链发展成国策了,而且一定要争世界第一。可是区块链这个概念对于老百姓还是比较难理解。今天让我来试试以最通俗易懂的方法让老妈理解什么是区块链。

互联网刚开始的时候,大家对互联网的理解也很片面,就像盲人摸象,每个人心中的互联网就是他第一次接触的互联网应用:论坛、电子邮件、新闻、搜索、交友、电商、网游、视频;然后移动互联网来了,电脑上有的手机上也有了,除此之外,还有了很多手机独有的应用,比如大众点评、微信、美团、饿了么、滴滴、摩拜、美拍、今日头条、抖音、快手、陌陌、友加等等。

所以可以简单地说,我们认识一个新的技术,通常是通过了解“该技术能做啥”来理解的。也就是说通过应用层面试图追溯到本质层面。那我们先从区块链能做啥开始说起,然后逐步深入到技术层面,去解释为什么区块链能做到这些事,以及为什么区块链比传统的技术更好,看看老妈能不能理解。

区块链的第一个应用是比特币。那什么是比特币呢?

比特币是一种基于互联网的数字货币,跟美金一样可以在全球流通。不过比特币没有实物,不能揣到兜里,不能装到皮夹子里。只能存在与“网上”(区块链上),持有比特币的人要想用比特币转账,就需要手机或者电脑里有个“比特币钱包程序”,还需要知道收款方(收币方)的比特币接收地址(账号)。在比特币钱包应用里输入对方的比特币地址,输入转账金额,然后点击发送,输入密码,几分钟后,比特币就从你的钱包地址转到对方的钱包地址了。

比特币不是任何国家和政府发行的,是十年前一个网名叫中本聪的工程师在美国的网络论坛发布的,然后一群来自全球的论坛用户(工程师)们在全世界各地自发搭建了“比特币记账服务器”,这个记账服务器就相当于银行用来记账的数据库服务器。区别是银行的记账服务器可能只需要两套,一套实际运行,另一套做安全备份。但比特币的记账服务器在全世界可能有上万套。

这里的一套不等于一台,一套服务器可能也是成千上万台电脑组成的。这里的一套的关键是指“一套账本”。银行的账本不需要很多,一套就够了,再来一套做备份。

比特币不是由中央银行发行的,银行的记账服务器也是国家监督管理的,大部分情况下不会出错。不会记错账。也就是说你的账户不会平白无故多了一万块,也不会莫名其妙少了一千块。比特币是民间的论坛成员自己发行的。所以比特币天然不具备“国家权威”,也没有所谓的权威管理机构来监督全球比特币记账服务器会不会“监守自盗”。每一个比特币的持有者肯定担心自己的比特币账户(地址)里的比特币会不会被盗。如果没有权威机构监督管理,那怎么办才好呢?

既然比特币已经良好运行了十年,十年来从未被黑客成功篡改记账数据库服务器,随随便便把别人钱包里的比特币转移到自己钱包地址里。那说明比特币所用的这套记账机制从理论上到实践中都是可行的。

比特币所使用的的这套记账技术就叫区块链技术。

接下来我用尽量简单的白话方式来解释一下区块链技术如何能让一个分散的、自发的、没有权威的甚至每个成员都是匿名的民间组织发行一个可以在全球范围内安全、稳定、可靠的自由流通的“数字货币”。

其实,区块链技术的本质就是一场“记账”技术的革命。从人类开始学会(摸索)记账以来,历史上所有的账本都是“中心化”的,也就是说过去的账本都只有一本,由一个信得过的、靠谱的、甚至是影响力最大的人来保管。一旦这个账本丢失,那上面记录的每个人的财产和资金数据可就都没了,所以账本的保护措施和备份措施也很重要。

保护和备份很重要,防范账本管理人篡改账本数据也同样很重要。如果账本管理人,比如一个原始村落的村长,监守自盗,把张家的牛写在自家的账目下,那张家人就只能吃哑巴亏了。过去,这种账本数据防篡改的依赖是管理人的德行和威望,没有任何过硬的技术手段。

现代人类有各种各样的机制来保护账本、监督账本。拿一个公司来举例,财务账本是会计管理的,每一条财务数据的形成可能涉及到员工、出纳、会计、经理、审计等多个角色。角色越多,数据在某个环节被篡改并在下一个环节被发现的机会也越多。比如员工跟家里人吃了饭,开了发票来报销,说是跟客户吃的,经理签字的时候可能就发现了。所以公司行政制度和流程对财务数据的真实性和不可篡改性有很大的影响。除了员工有虚假报销的动机,公司老板也有做假账的动机,来欺骗投资或者上市。老板要财务作假,自然要会计配合;为了防止这种恶意的财务作假诈骗事件,市场上出现了审计机构,专门负责审核财务数据。可审计机构还是中心化的机构,只要是中心化的机构,就存在被行贿和腐蚀的可能性。即便是世界上前五大财务机构,依然会爆出帮世界五百强企业财务造假的丑闻。

其实对于公司账本的篡改漏洞,现代化的企业并不是一定没有技术手段解决,只是这些手段会消耗巨大的运营成本,这些成本可能会大到得不偿失。

比如,如果一个公司的账本每 10 分钟完成一个完整的记账和审核周期,那么后期篡改造假的空间就非常小。因为你要改动账本中的任何一个数据,那意味着后面发生的所有账本数据都要依次修改,一旦修改,审计又要重新做。如果是传统的纸质账本,后面所有的账本都要涂改液粉刷一遍,实在是不太可能。

账本上的数字是具有连续性的。如果一个月做一次账,做账的时候就可以统筹一个月的数据来设计,如果一年做一次账,那回旋的余地就更大了。如果每分钟做一次账并完成审计,那后期就几乎很难在篡改了,因为篡改成本太高了。但这么做会给企业带来极其巨大的运营成本,运营效率会极大地下降。根本不现实,没有可行性。

可是,区块链就完美的做到了。

区块链的“区块”两个字,可以理解为“信息区块”,整个“信息”主要就是“账本信息”;“链”代表着账本之间按照时间顺序排列并“手拉手”连起来。整个由无数个“账本数据”组成的“信息区块”按时间顺序链接起来,就构成了“区块链”。

区块和区块之间的“手拉手”链接,不是简简单单的一个时间指向或者排序,我是一号,你是二号。整个“手拉手”的“链”就是区块链里面的核心技术“不对称加密算法”。“链”的加密技术对应传统世界的“审核”。

就是因为每一个区块都经过了“审核”后才“链”到下一个区块。这样篡改数据的难度就大大提高了,因为每篡改一个历史区块,就意味着要把该区块后面的所有区块的哈希值全部重新算一遍,否则任何人(机器)都能轻易发现数据被篡改了。

这个审核就是不对称加密算法。这个算法就是区块链的核心技术了。

这个不对称哈希算法我们不做深入介绍,简单的理解就是。不管你的文件有多大,里面有多少数字,经过这个加密算法的运算,都可以得出一个唯一的、固定长度的哈希值(就是一串英文和数字的组合),比如 64 位。如果区块里面的原始数据被篡改,哪怕只是把 1 改成 10,这个区块的哈希值将会产生巨大的差别,极其容易辨识。当我们需要验证第 1001 号区块是否被篡改过的时候,我们的做法很简单:用哈希算法计算一下 1001 区块的哈希值,然后和 1002 号区块的第一行代码作对比,如果一致,那就说明 1001 号区块没有被改过。

对咯,这里透露了一个很重要的信息,每个区块的第一行代码,就是前一个区块的哈希值。这就是区块和区块之间的“手拉手”关系。每个区块的哈希值,记录在下一个区块的第一行。这样任何人架设一台记账服务器都可以用这个算法验证每一个区块是否被篡改过。

哈希算法是不可逆的。也就是说通过哈希值不可能反算出上一个区块里的信息内容。就好比说你告诉我你的出生年月日,我不可能反算出你的身份证号码;但是你告诉我你的身份证号码,我就能算出你的生日。

老妈可能会觉得电脑的运算很快,就算有了哈希算法,那还是可能篡改历史账本,然后把后面的区块重新算一遍,做个假账,把别人的比特币转移到我的名下。

比如:我直接找到比特币的某个区块,然后把那个区块里面某人地址下的 5000 个比特币都改写到我的比特币地址(账号)下,然后我用电脑程序把后面几年的比特币账本信息都按顺序改掉,如果我的电脑集群算例足够高,可能也就一天就搞定,那我凭空就有 50 万美金了。可事实上没有人能做到,为什么呢?

老妈这个担心也是对的,说明老妈理解了前面的部分。中本聪也想到了,所以他还给比特币做了第二个设计,也是区块链技术不可或缺的一个关键设计,这个设计并不是核心技术,而是核心“机制”。

这个机制叫做“分布式记账”。

关于分布式记账,我先引入一个形象的段子来比喻一下:

农村结婚的时候,都要把七大姑八大姨和全村人请来一起吃一顿,一起见证这一对夫妻喜结连理。为什么不悄悄的在自己家里吃顿饭得了?这里面还有个深层次的理由:分布式记账。

一个婚礼的仪式,就是让全村人都参与进来成为一个“记账服务器”,每个人都收到了这个“区块”的广播,记录下了张二狗和李翠花结婚了。以后张二狗想耍赖不承认是不行的,李翠花也不能随便跟王麻子私奔了。全村人都是“记账节点”,张二狗或者李翠花想反悔,就要篡改全村人脑子里的“账本数据”,也就是要让全村人都失忆才行,那是几乎不可能的。

所以,这就是最古老的的“分布式”记账。比特币分布在全世界的记账服务器(或者称之为记账节点、矿机)就是全村的村民,任何人想篡改服务器里记录的信息,都是不可能的。

言归正传,所谓的分布式记账就说明比特币(以及其他所有区块链技术发行的“币”)都不只有一个账本,而是有上千台服务器一起记账,所有服务器上面记录的账本都是一致的。这上千台服务器分别属于上百个机构或者组织,或者个人。少数组织和个人篡改自己数据库里的理事区块账本,那是没用的。因为这相当于在大马路上分支了一个小马路,从这个岔路口开始,大部分记账服务器记录的账本跟小部分被篡改后的记账服务器里面的账本信息已经不一样了。这就形成两套账本体系,用户们依然走在大路上。那篡改还有什么意义呢?

这样的分布式记账“机制”的设计,让任何一个黑客想要私自篡改区块链上的历史数据的时候,都必须能控制 51% 以上的数据服务器才可能,这比成本开销足以让任何一个黑客望而却步,或者得不偿失。为了“偷到”100 亿的资产,可能需要消耗 200 亿的成本,这买卖真亏,谁做呢?

到这里,区块链的大体逻辑就清楚了。区块链的本质就是一个“分布式”记账体系,用一群不同归属的记账服务器,运行同一个记账程序和加密算法,共同针对某个数字资产(比如比特币)来进行记账,记录每个账户下每时每刻的比特币余额,每一笔比特币的往来交易等等。

比特币是区块链上最有名,最资深,最历史悠久,用户群最多的超级应用。基于区块链的技术,任何人都能“发行”一个类似比特币的“数字资产”,在区块链上流通。至于是比人为什么会接受你的“数字资产”,这不是区块链技术要解决的问题,那是你自己的本事。就像你掌握了印钞的技术,但你发行的“币”如何让老百姓接受,那是另一种能力。其实这就是区块链技术应用到各行各业的实际场景问题,我们后面慢慢讲。

下面稍微延伸讲一讲比特币的发行规则和记账竞争(俗称挖矿)。

分布式的上千台比特币服务器共同记录着全世界上千万人的比特币账号和流转信息。为了让这个系统更加可靠,同时为了让这个系统一开始就有更多的人参与,并且为比特币记账提供性能最棒的记账服务器,最关键的是,还要解决“比特币”的发行规则,比特币如何产生,产生后归谁?比特币发行总量如果是无限多,那比特币的一定会通胀到每个的价值为零。如果总量恒定,应该一共是多少枚?

比特币之父中本聪做了一个很巧妙的设计,一举多得解决了上面的所有问题。

第一台比特币记账服务器在 2009 年 1 月 3 日由中本聪本人架设好并开始运转,十分钟之后,比特币区块链网络中诞生出了“创世区块”,也就是开天辟地的第一个区块:“0 号区块”,伴随着 0 号区块诞生了 50 个比特币,这 50 个比特币就自动存在了生成这个区块的记账服务器绑定的比特币地址上,也就是中本聪本人的地址。之后每隔 10 分钟会产生出 50 个比特币;这 50 个新的比特币就奖励给最先完成该区块审计(哈希运算加密)的记账服务器(的主人)。

这就形成了记账服务器之间的竞争,第一个完成哈希运算(审计)的服务器可以获得 50 个比特币的奖励。所以大家就要提高计算机服务器的性能,这样才有可能获胜。本来哈希运算对于计算机来讲是非常简单的,一个区块的哈希运算(审计)不需要 1 秒钟就能解决,记账服务器之间的速度都是毫秒级的。那全世界那么多记账服务器竞争赛跑,前后差别都是毫秒级的,那裁判就为难了。

为此,中本聪做了一个巧妙的设计,在每个区块里,引入了一个“随机数”的字段。因为每个区块里的数据哪怕发现极其微小的变化,该区块的哈希值就会有天壤之别。中本聪为了提高记账计算的难度,10 分钟内只能有一个记账服务器获得第一名,怎么办呢?

中本聪要求哈希值的前几位必须为 0,当参与记账的服务器较少的时候,可能前 2 位是 0 就可以了。当比特币记账服务器越来越多的时候,竞争越来越激烈的时候,哈希值前几位的 0 就越来越多。

什么意思呢?

因为哈希值是单向预算,不能反算。所以要想满足要求,比如要实现某个区块的哈希值前 4 位都是 0,就要记账服务器不断修改那个随机数字段的随机数,从 1 开始算一遍,看看哈希值是多少,是否满足要求,如果不满足,那就把随机数 1 改成 2,然后不断计算,知道找到一个随机数,这个随机数放到该区块里,和所有的账务数据一起生成的区块所算出的哈希值刚好满足前 4 位都是 0 的这个要求,然后改记账服务器就向全网广播:“我算出来了,随机数是 xxxxxx”,然后收到广播的其他记账服务器用该随机数验证一下,如果正确,那大家就同意:“你赢了,奖金归你”。

这种运算我们形象的成为“暴力计算”,没有任何窍门,就是不断的给随机数“+1”,直到找到那个符合条件的随机数为止。当然,并不是所有的记账服务器在计算这个随机数的时候都从 1 开始,可以从任何数开始,因为之所以叫随机数,就是因为他是随机的,任何数都有可能。由此,也有人称比特币记账哈希运算的过程为“哈希碰撞”,跟撞大运有点类似,看谁运气好。

以上的记账竞争胜出者会赢得比特币奖励,就像挖到了黄金矿一样,所以人们把这个过程称之为“比特币挖矿”,从事这个职业的人,我们称之为“比特币矿工”,那些参与记账竞争的比特币记账服务器,也被亲切地称之为“矿机”。

在我写下本文的时刻,第 602028 个比特币记账区块刚产生,这个区块的哈希值是:

000000000000000000130228af13202792090e5add01db2931b6731293838d90

数一下,前面连续几个零?18 个零,计算难度可想而知,每个区块要经过 62 的 18 次方(1.8 亿亿亿亿次)运算才能找到这个随机数。

如何让老妈理解区块链(1)

每十分钟产生一个新的记账区块,并随之生成 50 个新的比特币奖励给第一个完成该区块哈希值运算的矿工。那么如此下去,比特币就是无限多了呀,会吗?而且上图中最后一行也显示 Block Reward 12.5 BTC ,那意思不就是说记账奖励才 12.5 个比特币吗?

老妈看的很认真,如果真的是这样设计,那比特币就无限多了,那就没人要了。所以中本聪还引入了一个“递减”机制。

比特币奖励的递减机制规定,每产生 210000 个区块(大概是 4 年),比特币奖励减半一次,直至比特币不能再被细分。所以,2009~2013 年,每个区块的奖励是 50 个比特币;2013~2017 年,每个区块的奖励是 25 个比特币;2017~2021 年,每个区块的奖励是 12.5 个比特币,以此类推预计到 2140 年,比特币将被全部“挖出来”,大概是 2100 万个。参考今天每个比特币 1 万美金左右的价格来算,大概比特币的总市值是 2100 亿美金。当然,比特币的价格波动很大,价格也存在被市场操控的嫌疑(类似于股票庄家),所以普通人还是不要参与比特币投机为好。

未完待续 ...

如何让老妈理解区块链(1)

本文经「原本」原创认证,作者王利杰,点击“阅读原文”或访问 yuanben.io 查询【1X2XTI9Z】获取授权

来源链接:mp.weixin.qq.com