上面,我们介绍了区块链的概念。今天,让我们更深入一点,尽可能通俗地介绍一下:区块链是如何工作的?
通过上面的小故事,我们知道了区块链的概念。其本质是解决信任问题、降低信任成本的技术方案。目的是去中心化,去信用中介。
区块链是比特币的底层技术。比特币的概念是由中本聪在2009年首次提出的。就是数字货币,在海外也叫法币。
假设吴唐门是一个有数百徒弟的门派,其中张三丰是吴唐门的掌门人,掌门人的大徒弟是宋远桥。武当弟子将钱财存放在何处,由张三丰负责记账。例如,当张翠山以1000元购买尹丽婷的牛时,张三丰从张翠山的存款中扣除1000元,并在尹丽婷的存款中增加1000元。听起来像是银行的操作吗?
就是从银行集中记账开始。弟子们都信张三丰,所以都愿意把钱存到张三丰的门派。他们相信张三丰不会作恶。
可惜好景不长。张三丰年纪大了,不能再当领导了。新老板宋远桥也是一个非常诚实和聪明的人,但也有一个问题,那就是粗心大意。他不仅经常算错账,而且他的账单还被偷过一次。
不过,幸运的是,学徒们有自己的记账方式。然而,由于宋远桥算错账后要和别人合作半天,村民们对新领导的记账能力非常不满。
时光流逝,最可怕的事情却发生了。宋远桥的儿子宋青书私下篡改了账本,偷偷在宋远桥亲戚的账上加了不少。终于有一天,众弟子愤然跑去宋远桥躲避,武当一片混乱,遭到赵敏的攻击。
如果这个时候用比特币的思路来解决这个问题,应该怎么解决?
公开记账
每个徒弟发一只信鸽。这就是P2P网络,是点对点的分布式网络。每个学徒都有一个特殊的印章和一个扫描仪。这个扫描仪有两个作用,一是识别别人的交易是否真实有效,二是识别这个交易是否属于自己的账户,同时识别并解锁未使用的余额。这是不对称加密。每个学徒都可以参与记账,但他可以记录交易本身的内容,而不是记录余额。这是区块链的交易。这个“交易”对应的英文单词是“transaction”,是专有名词,指的是一个账户,与金融交易的贸易是不同的。总的来说,这三条实际上做了一件事,即:
每户都有一个账本,账本上不再记录每个村民的余额,只记录每笔交易,即每笔交易的付款人、收款人和付款金额。
那么问题来了:如果每个徒弟都记账,那肯定徒弟们的账不统一。你记得你的,我也记得我的,但最后并不全是一团糟?
这时候就需要统一账本,保证大家的账本一致。因为记录的交易是由门派拥有者有序产生的,所以需要有一个广播机制。
其实很简单。现在,让我们把教派的所有资产加起来。太巧了,刚好100万。
只要确定了账本的初始状态,每一笔交易都是可靠的,都是按照物理时间自然记录的,并且只增加,不改变,不删除,就可以计算出每一户目前持有的资产数额。
第一部分是可识别的标记。比如我敲在纸上,可识别的标记是1MsTg2。
这是你的代号。由于我们的帐本是公开的,使用你的真名会有危险。所以你记账交易清单的收款人和付款人都填这个码,不用写名字。你的扫描仪和你印章生成的代码有关,只有拥有相应扫描仪的人才能花钱。这一步是“解锁交易”。
我刚才说有两个封印。第二段内容只能用这台扫描仪看,但用肉眼看是乱码。扫描仪在扫描后将知道第二段内容是否有效。这一步就是“交易验证”。
而且所有的交易都可以被所有人接收和看到,但是无法解锁印章的乱码部分。只有收款人才能解锁,因为你的扫描仪和你印章生成的代码有关,只有拥有相应扫描仪的人才能解锁交易。
创建创世区块
创建块是我们第一笔交易生成门派总账的第一个信封,就像一篇文章总有开头一样。
结果一个弟子成了第一笔交易,这张交易单的付款人是空白的,收款人是宋远桥,付款金额是100万。因为是创世块,所以可以任意指定输出个数。由于我们统计了上面所有门派的账号,写了100万。等我们以后付了头,就可以按照原来的账本给你发相应的金额了。好了,我们有了第一笔交易,第一个信封也做好了。现在请领导把信封送到张翠山张翠山去复印一份,然后寄给尹丽婷。尹丽婷会继续传下去,一字一句的传下去,直到传到整个门派。这一步就是“同步块”,也就是全网都会得到这个信封和里面的事务。
交易
既然我们创世块交了100万给负责人,我们假设张翠山在负责人那的存款余额是10万。这时,负责人会根据原来的旧账本把这10万元寄给张翠山,然后在旧账本上划掉这笔账。让我们讨论一下如何构建这笔交易。把100万分成两部分,第一部分10万,收款人为张翠尚;第二部分90万,收款人是自己;这样的交易就完成了。
前面说了,不能直接写名字,只能写代号,也就是你的钱包地址。我们需要写上收款人的名字,让收款人拿出他的印章,读出代号,然后告诉失主。
业主写完交易后,还需要拿出自己的印章在交易上盖章。这种盖章过程相当于区块链中的签名。这个章,门派的每个人都可以用扫描仪扫描一下,验证是否有效,也就是验证付款人的章是否有效。
这样,店主一共写了10笔交易,分别代表发给不同人的交易,10万给张翠山,1万给尹丽婷,以此类推。
打包 Transaction (挖矿)
既然我们有了交易,我们还需要一些东西来包装它。我们把它装在一个特殊的信封里,这是区块链的“积木”。这个打包过程就是“打包交易”。
为什么要封装?是为了让打包交易的人在信封上签字,说明这个打包是XXX做的。其次,全村可能会有很多交易,所以需要组装标签,方便大家查询。
我们可以看到,上面的交易虽然已经生成,但是有一个问题,就是没有规定谁有权利把交易打包到一个信封里。
由于我们教派人口增长,以后100万可能不够。我们暂定150万,多出来的50万奖励给放信封的人。当然,我们不可能一次都给。谁投一次信封,谁就能得到3个硬币。
这个时候,每个人都精力充沛。光是装信封就能拿到钱。我们这里把合格的人叫做“矿工”。
获得这个信封权是有条件的。我给你出个难题。谁先解决了这个难题的答案,谁就有权把交易放在信封里,并用自己的邮票在信封上盖章。
好了,这个时候大家都开始计算给定的问题,就像张翠山第一个计算一样。然后,信封的包装操作由张翠山完成。张翠山将10份交易装入信封,即打包交易,并在信封背面写下信封的汇总信息。
比如最后一个信封里的第一笔交易是什么,信封封面是什么样子的?最后信封要盖章,也就是“签字”。矿工签名的目的是收集硬币,也就是比特币基地交易。
上述过程在区块链领域被称为“打包交易”,也就是著名的“挖矿”。
广播交易
先说上面说的广播交易。广播是为了让每个人都知道你在当前时刻产生了一笔交易,或者你打包了一个信封。
广播内容有两种,一种是广播事务,一种是广播信封。第一次广播意味着仍有未打包的事务,而第二次广播信封意味着此事务已被矿工确认。
收到广播通知后,我们首先验证信封上的难题答案是否正确,这样就可以验证信封是否是伪造的,然后检查里面的每一笔交易,最后验证信封背面的内容,也就是上一个信封的总结是否正确。因为大家都确认了最后一个信封,可以大大避免作弊的可能。如果觉得没问题,可以存储在本地数据库中。
双花问题
如果两个弟子同时上传,虽然这种概率很小,但如果真的发生了,我们就看最后区块链哪个长,短的无效。这就是区块链的“双花问题”(同样的钱花了两次)。
做虚假交易,除非你说服全网51%以上的矿工换一个账号,否则你的篡改是无效的。参与网络的人越多,诈骗的可能性就越低。这也是集体维护监管的优越性,最大化造假成本。还是很难说服51%的人造假。