0%

区块链的运作方式

中心化记账的问题

这里我们来借鉴一个经典的区块链描述来模拟中心化记账

假设有一个村子,村子里有一位德高望重的村长.村民们把钱都存到村长家,村长负责记账.这里就是典型的中心化的银行记账系统.村民相信村长,才会把钱存到村长的家里.

好景不长,村长操劳过度去世,他的儿子铁蛋上任新村长,铁蛋很聪明,但是粗心大意,经常算错账单.不过幸亏村民也自己记账,但是由于铁蛋每次算错帐都要和别人核对半天,导致村民都十分不满.

后来可怕的事发生了,铁蛋的老婆私下篡改账本,给七大姑八大姨的余额偷偷加了好多,终于有一天暴露了,村民们冲向铁蛋家讨说法,一片混乱.

这个时候一个叫中本聪的人站了出来,他说他设计了一套系统,可以不依赖任何人记账,于是大家开始将目光集中到他的身上.

1. 公开记账

中本聪说他的系统复杂一些,需要干三件事

  • 每家每户都发一只信鸽,这就是一个点对点的P2P分布式网络
  • 每家每户都发一个印章和扫描器.这个扫描器可以识别他人的交易是否真实有效,还可以识别这个交易是不是自己的账号,同时识别并解锁余额.这就是非对称加密
  • 每家每户都参与记账,不过不再记余额,而是记录交易本身的内容.这就是区块链中的交易.

那么问题来了,如果每个人都记账,你记你的,我记我的,最后不就全乱了吗?

这时中本聪说,我们大家需要统一账本,保证大家的账本是一致的.
怎么做呢?其实很简单,我们先把村子里所有的资产加在一起,巧了,正好是100万.

中本聪接着说,只要账薄的初始状态是确定的,并且每一笔记录都可靠,并且只加不改不删,这样每个人的资产都是可以推算出来的.

中本聪说我刚刚发给你们的印章,上面刻着一个可以识别的标记,这就是你们的代号,由于我们的账本都是公开的,所以使用真实姓名非常危险,所以以后你们的交易单上付款人收款人都要用印章上的代号,不能写姓名.你们的扫描仪和印章是关联的,只有持有对应扫描器的人才能花费金额,即”解开交易”

2. 创建创始区块

创始区块是我们生成的全村公开账本的第一笔交易的第一个信封.
于是,中本聪说我先生成第一个交易,这个交易单嗯付款人为空,收款人为村长,付款金额是100万,因为是创始区块,产出多少是随意的,由于我刚才统计了村里的账目情况,所以写了100万,待会付款给村长以后,哦们可以按原来的账目给大家发送对应的金额过去.

好了,现在我们有了第一个交易,第一个信封也做好了,待会大家一传十,十传百,复印给全村人,这个步骤就是”同步区块”,全就是全网都拿到信封,获得信封里的Transaction.

3. 交易

由于我们把100万交给了村长,那么我们假设现在张三有10万的存款在村长那里,这个时候村长想把10万转给张三,那么应该怎么操作呢?

中本聪开始交村长写交易单,把100万分成两部分,第一部分10万,收款人是张三,第二部分90万,收款人是村长,这样一个Transaction就做成了.

前面我们说了,不能写姓名,要用代号,这个代号也就是钱包地址.我们需要填收款人信息时,就要让张三拿出自己的印章,告诉村长自己的代号.

村长写好Transaction后,还要拿出自己的印章,在Transaction上盖章,合格盖章的过程就相当于区块链中的签名.这个章全村人都可以用扫描器来扫,以确定交易是否真实有效.

就这样,村长写了很多份Transaction,分别代表了发送给不同人的交易.

4. 打包Transaction

现在我们有了Transaction,但是还需要东西把Transaction装起来,我们现在用一个信封来装,这个信封就是区块链中的”区块”,这个封装过程就叫做”打包交易”

为什么要封装起来呢?是为了让打包交易的人能够在信封上署名,表示这次打包是由某某某打包的,全村的交易会非常多,这样对装配进行标号以后,方便大家进行插查询.

虽然现在Transaction已经生成了,但是我们还没有规定谁有权利把Transaction装进信封里面.
前面我们提到的中心化操作肯定是不行的,那么全村人里面,到底谁才可以操作呢?

这时中本聪说了,由于我们村的人口增长,100万肯定是不够的,就暂定150万吧.这多出来的50万,就可以用来奖励装信封的人,装一次就3个币吧.

这时候大家就来劲了,只要装信封就有钱拿,这里就是我们常说的矿工.

但是中本聪又说了,要获得装信封的权利是有条件的,我给大家出一道难题,谁先解出答案,谁就有权利把Transaction装进信封,并在信封上盖上自己的章.

这个难题有两大特性,一个是计算过程非常复杂,另一个就是容易验证.

如比说常见的移动几根火柴使等式成立,答案非常好验证,但是计算过程是一个尝试的过程,需要消耗大量的精力,而在真实的比特币中,采用的是寻找符合条件的目标哈希,和也就是比特矿工所做的事情.

ok,现在大家开始计算这个难题,刚好李四第一个计算出来了,那么这个装信封的操作就交给李四完成,其他人的计算就没有用处了,李四打包了Transaction,并在信封背面写上了信息,如上一个信封的第一个交易是什么,信封封面长什么样子,最后盖上了自己的章,这样就可以领到币.

以上过程在区块链中被称作”打包Transaction”,也就是大名鼎鼎的”挖矿”.

5.广播交易

前面我们做的这个多事情,最后需要让大家都知道才行,这个行为就是广播交易.

广播的内容有两种,一种是广播Transaction,另一种是广播信封.

第一种广播意味着还有未被打包的Transaction,第二种意味着这个Transaction已经被某个矿工确定.

收到广播的信息后,大家先验证信封上的难题的答案是否正确,这样可以检验出信封是否被伪造,接着检验上面记录的上一封信息的摘要是否正确,因为上一封信封大家都已经确认,所以可以极大的规避舞弊的可能,如果觉得没问题,就可以存入本地数据库了.

至此,全村人的记账问题就基本解决了.