2008年,中本聪提出了比特币的概念,这是一种全新的电子货币。比特币是一种去中心化的记账系统,人们通过挖矿获得比特币,通过公开记账的方式完成支付。

目前的记账方式

交易中最重要的事情就是记账,现在的记账是由银行来处理的,我们信任银行,因为银行的背后是国家的信用。但是银行可以冻结我们的账户,可以限制我们的交易,极端情况下我们的资产将不受保护。

区块链记账方式

中本聪提出一种设想,我们可以用去中心化的记账系统来记账,把所有的交易记录全部公开,并将这些交易记录存储在分布在世界各地的计算机上,每台计算机上都保存一份最新的账本。

如何记账:

假设初始网络中有A,B,C,D来记录交易:

  1. A -> 10BTC -> B
  2. A在本地记账,并广播通知网络上所有人,B、C、D共同参与记账
  3. B -> 5BTC -> C
  4. B在本地记账,并广播通知网络上所有人,A、C、D共同参与记账
  5. E想要加入记账,E会先将之前账本同步过来,然后加入网络,目前网络上有A,B,C,D,E参与记账
  6. C -> 5BTC -> D
  7. C在本地记账,并广播通知网络上所有人,A、B、D、E共同参与记账
  8. 重复这个过程

记账的数据

每10分钟将所有新发生的交易记录进行打包,每个包大约包含4000条交易记录,存储在计算机上占用1MB存储空间,这个打包后的数据就叫区块。世界上每10分钟就会产生一个区块,将区块按照时间顺序连接在一起就叫区块链。

打包的工作由所有的节点竞争完成(挖矿),而且10分钟内只能选出一个节点来打包区块,系统会奖励一些比特币给打包的节点。

如何打包区块

假如区块链系统开始工作,此时有A,B,C,D,E参与记账。第一个10分钟内产生了一些交易记录,10分钟过后A,B,C,D,E同时开始竞争打包,竞争的规则是计算一个复杂的数学题目(工作量证明),为了保证公平性,每个节点的计算难度都是随机的。最先得到正确结果的节点获得打包权限,然后将打包的区块数据链接到之前的区块上,得到最新的区块链。然后其余节点同步这个区块,从而获得最新的完整的区块链,区块链上记录着有史以来全部的交易记录。

区块+区块+区块+区块+区块+区块+区块+区块+区块+区块+区块+...+区块 = 区块链

区块链中的数据到底存在哪里?

区块链是一个分布式的网络,由诸多的节点组成,而区块链的数据在每个节点上都会存储一份。新加入的节点会去其他的节点上同步数据。至于数据量的问题,目前来看,还是可控的,比特币运行超过 10 年了,目前的数据也还没有超过 400G。比特币的数据上链之后就无法再更改了。区块链的数据存节点的本地磁盘上。

记账的奖励:

每一个比特币系统的节点都可以记账,那么记账会有什么好处呢?

  1. 手续费,如果 A 付 10BTC 给 B,那么 A 要多付一点点给 B,多付的部分就是给参与记账的节点的奖励
  2. 打包奖励,竞争打包区块成功的节点将获得额外比特币奖励

因为有手续费和打包奖励,很多人都争着去加入比特币系统中,成为其中的一个节点。加入计算的行为被人称为挖矿,参与计算的机器叫做矿机,每个矿机中都保存着一份完整的区块链数据,并参与竞争打包新的区块。

区块链本质是什么:

区块链本质就是一个分布式的数据库。比特币可以利用这种数据库存储交易记录,同样我们也可以利用区块链技术存放其他类型的数据。

区块链缺陷是什么:

区块链有两类数据,全部重复地存在每个全节点里面,全量复制,有n个全节点就有n倍的冗余。

第一类数据是:全网每个用户以及合约的最新状态,比如每个人的账户余额,这个数据存在内存里面。

第二类数据是:全网状态的历史修改记录,也就是log,存放在硬盘上。这个部分数据是我们所说的区块链。区块链就是这么个设计,每一台电脑,实际上承载了整个网络的工作量。这也是区块链性能瓶颈的根本原因。

当然,技术还是在发展,后续有技术可以将网络分而治之。

其他问题:

一个成熟的记账系统除了如何存储,如何激励问题外,还有很多问题需要解决。比如,如何保障账本安全,如何保障数据准确等,这里不再深入探讨。

发表评论