什么是区块链?
区块链,英文区块链,本质上是一个去中心化的分布式数据库。只要架设好自己的服务器,接入区块链网络,任何人都可以成为这个庞大网络的一个节点。
既然区块链本质上是一个数据库,那么其中存储了什么呢?我们来看看区块链的基本单位:块。
一个区块分为两部分:
1.块标题
块头存储了块的头信息,包括前一个块的预哈希,块体的哈希,时间戳等等。
2.分程序体
块体存储这个块的详细数据,包含几行记录,可以是交易信息,也可以是其他一些信息。
刚才提到的哈希值是什么意思?
大家一定听说过MD5,这是一种典型的哈希算法。它可以将任意长度的明文字符串转换成固定长度的字符串(128bit),这个字符串就是哈希值。
在我们的区块链中,采用了一种更复杂的哈希算法SHA256。经过一系列复杂的计算,最新的数据信息(如交易记录)最终会被这个哈希算法转换成一个长度为256bit的哈希字符串,也就是块头中的哈希。格式如下:
a8fdc 205 a9f 19cc 1c 7507 a 60 C4 f 01b 13d 11d7fd 0
Block和Hash是一一对应的,Hash可以看作block的唯一标识符。
不同的区块是如何关联的?依靠哈希和预哈希来关联。每个块的预散列值等于前一个块的散列值。
为什么要计算块的哈希值?
由于区块链是一个链式结构,所以该链必须有一个头节点(第一个块)和一个尾节点(最后一个块)。一旦有人计算出区块链最新数据信息的哈希值,就相当于把最新的交易记录打包,会创建一个新的块,连接到区块链的末端。
新块头的Hash就是刚刚计算的Hash值,PreHash等于前一块的Hash。块体的数据存储的是打包前的交易记录,这部分数据信息已经变得不可修改。
计算哈希值和创建新块的过程称为挖掘。
用于海量计算的服务器叫做矿机。
操作计算的工人被称为矿工。
哈希值的计算难度在哪里?先做个粗浅的解释。计算哈希值的公式如下:
Hash = SHA-256(最后一个块的hash+新块的基本信息+交易记录信息+随机数)
其中,交易记录信息也是一串哈希值,其计算涉及一个数据结构Merkle树。感兴趣的朋友可以咨询相关资料,我们暂时不做介绍。
这里关键的计算难点在于随机数的生成。为了增加Hash的计算难度,猥琐的区块链发明家要求Hash结果的前72位必须全部为0,这实在是太小了。
因为(最后一个块的Hash+新块的基本信息+交易记录信息)是固定的,所以能否得到符合要求的Hash完全取决于随机数的取值。挖掘者必须经过海量计算,反复生成随机数,进行一般的“撞大运”尝试,才能得到正确的Hash,从而挖掘成功。
同时,块头还包含一个动态难度系数。当世界上硬件的计算能力越来越快时,区块链的难度系数也会上升,使得全网平均每10分钟产生一个新块。
朋友们知道我有多难吗?需要补充的是,不同的区块链应用在细节上是不同的。这里描述的挖掘规则以比特币为例。
区块链的应用
比特币的概念最早是由中本聪在2008年提出的,随后根据这一想法设计并发布了开源软件和建立在其上的P2P网络。比特币是一种P2P数字货币。点对点传输意味着一个分散的支付系统。
什么是P2P网络?
传统货币由央行发行,个人所有储蓄也由银行管理。这是典型的中央集权制。
比特币部署在由世界各地许多对等节点组成的去中心化网络上。每个节点都有资格记录和发布这种数字货币。
至于比特币底层的数据存储,是基于区块链技术的。比特币的每一笔交易对应块数据中的一行,简单表示如下:
交易记录的每一行都包含时间戳、交易细节和数字签名。
表格只是为了方便理解。实际存储的交易细节是匿名的,只记录付款人和收款人的钱包地址。
关于数字签名,可以理解为每一单交易的防伪标识都是通过非对称加密算法生成的。
接下来,我们来说说比特币矿工的奖励:
根据比特币协议,挖掘新区块的矿工将获得奖励,从2008年开始是50个比特币,然后每四年减半。目前是2018的12.5比特币。流通中的新比特币就是这样诞生的,难怪大家对挖矿比特币的工作如此渴望!
区块链的优势和劣势
区块链的优势:
1.分散
区块链不依赖于一个中心节点,整个系统的数据由全网所有对等节点维护,数据可以存储和查看。这样,除非攻击者黑掉全网一半以上的节点,否则整个系统不会被破坏。
2.信息不能被篡改。
块中的数据不能被篡改。一旦数据被篡改哪怕是一点点,整个块对应的hash值也会随之改变,不再是有效的hash值,后面链接的块也会断裂。
区块链的缺点:
1.过度的能源消耗
为了生成一个新的块,必须使用大量的服务器资源进行大量不必要的试探性计算,严重耗电。
2.信息的网络延迟
以比特币为例,任何交易数据都需要同步到其他所有节点,同步过程必然会受到网络传输延迟的影响,耗时较长。
一些补充:
1.此漫画部分参考了阮一峰的博客《区块链入门》,感谢这位大神的科普。
2.由于篇幅有限,关于Merkle树和非对称加密的知识暂时没有阐述,有兴趣的朋友可以查阅资料进一步学习。