比特币是 2017 年、2018 年最热门的词汇之一,随着热度的不断上升,比特币从原来的一种概念、一种技术、一种想法,已经成为了一种真正意义上的货币,时时刻刻地影响着我们的生活,那么比特币到底是什么?
说到比特币就不得不说当前最热门的技术之一:“区块链”技术。区块链技术不断的被各大媒体争相报道,在技术社区也是非常火的热点,但类似“区块链到底是什么”这样的文章却非常少,今天我们就来通俗易懂的讲解一下,到底什么是区块链。
当今互联网,无论是 QQ、微信还是微博,它们保存的用户数据,是高度中心化、集中化的,如果互联网服务提供商的服务器出现宕机、损毁、断网等问题,那么用户也就无法再获得服务器中存储的数据。
区块链,是一种分布式数据库。
数据库的主要目的,是为了存储数据、读取数据。区块链也一样,但区块链是彻底的无中心、无管理员的,也就意味着每个人的电脑都可以成为区块链中的一个节点,每个节点保存着整个区块链中的所有数据。正因为区块链数据库的无中心,也就代表区块链无法通过关闭、修改单一数据库来控制区块链中的数据;正因为区块链无管理员,也就意味着区块链数据库可以被所有人写入数据。
有人就会问了,人人都可以写入数据库,那数据库中的数据安全吗?又有谁愿意提供自己的电脑、服务器来做区块链的节点呢?毕竟任何计算机的运行都是需要电能来支撑的,而电能是需要费用支出的,关于这一点让我们继续往下了解。
区块链,由一个一个区块组成,每个区块当中又包含“区块头”和“区块体”。在“区块头”中记录了上一个“区块”的特征,包括这个区块的时间、区块体的特征,等等数据,而区块体中就记录了要存储的数据。
每一个区块的头部,都可以通过其中记录的上一块区块的特征不断向上找到上一块区块,直到第一块区块,所有区块像一个链条一样连起来,这就是区块链了。
而每个区块的特征都是唯一的,每个区块中的区块体改变,区块的特征也就随之改变,这也就保证了每个区块中保存的数据都无法被恶意修改和破坏。如果数据被修改了,并且还要让后面的区块继续能够连接到修改的区块,就必须同时修改后面的所有区块,并且所有节点都需要同步进行修改,这是非常耗时的一件事,并且每个区块的特征的计算,需要计算机消耗非常多的算力,正因为这些机制,才保证了区块链数据库的安全性和自身的可靠性,只要数据写入,数据就像永远的被记录,从此无法被修改。
每个区块的后面,都只能跟着一个区块,并且新产生的区块也只能跟随在最新产生的区块下面,每个新的区块中的数据很可能是不一样的,那么我们怎么保证新区块的数据是能够被认可和写入的呢?
比特币之父中本聪故意让新区块的产生和添加变得非常缓慢,起初他的设计是平均每
10 分钟才能产生一个新的区块,一个小时也就产生6个。这种限制并不是通过约定限制的,而是通过设计非常复杂的“算法”让计算机的运算能力计算缓慢从而达到限制新区快的产生,因为计算量大,所以就算要快也快不起来。计算机在计算新的区块的过程,就是“采矿”。
因为计算每个区块的特征都是非常困难的事情,并且能被认可的特征是无法被猜中的,这就像你在大海中,需要找到符合要求的那一滴水一样。
那么为什么只被认可特征的区块才能进入到区块链呢?那么认可的标准又是什么?在每个区块的头部都包含了一个“难度系数”,这个系数决定了计算特征的难度,第100000个区块的难度系数是 14484.16236122。
目标=产量/难度系数
区块链的协议规定,使用一个产量除以难度系数,可以得到目标值,当难度系数越大的时候,目标值也就越来越小。只有小于目标值的特征才是有效的,否者这个区块的特征无效,也就无法加入到区块链当中。
在区块头中,还有一个参数,记录了特征的计算次数,第
100000 个区块,计算了 2.74 亿次才成功的将这个区块记录到了区块链中,可见一个区块要加入区块链需要的算力有多高。即便采矿本身很低效,也无法保证
10 分钟正好可以出现一个新的区块,有时候运气好瞬间也就得到了,有时候可能一辈子也无法得到新的区块,但总体来说,随着区块链节点的不断加入,计算机的计算能力一定会越来越高,这样的话,总有一天新区块的产生时间会比预计时间要快。为了保证新区块出现的速度恒定不变,中本聪规定每两周调整一次难度系数,如果在这两周内平均生成速度是
9 分钟,就意味着速度快了 10%,那么难度系数就需要调高 10%,如果平均生成速度是 11 分钟,那么对应的难度系数就需要调低。随着算力的不断增高,难度系数也越来越大,也就导致了采矿的难度越来越高。即便区块链的规则设计是可靠的,但是如果有两个人都同时计算出了可以被认可的特征,那么又如何确定哪个区块是可以被使用的呢?区块链规定,新的产生、被认可的区块如果连起来达到
6 个,那么首先达到 6 个的那一部分区块就会被认可,而之前没有达到的其他区块就会全部被抛弃,这也就意味着,算力最强的计算机,也就拥有了最正宗的区块链。区块链是可靠、稳定、无中心、无人管理、公开的分布式数据库,但由于数据插入的局限性,也就意味着区块链无法和传统的中央数据库的写入速度媲美,而区块链本身最大的应用场景,也就是以比特币为代表的加密货币了。
在我们了解区块链的原理之后,我们终于可以开始了解比特币了。区块链数据库的公开性,似乎决定了比特币本身也是公开的,那么我们要怎么知道每个比特币是属于谁的呢?比特币又如何产生交易呢?
非对称加密算法,保证了包含比特币在内的所有金融机构的安全。
小明有两把钥匙 A 和 B,小明可以用 A 钥匙加密数据,但对方只能用 B 钥匙解开数据,对方使用 B 钥匙加密数据以后,我也可以使用 A 钥匙打开数据,这样就保证了只有握有正确的钥匙的人,才能打开数据。
比特币钱包就是利用了这样的原理,拥有比特币钱包必须要拥有两把钥匙,也就公钥和私钥,比特币钱包中也没有比特币,而是记录了你的两把钥匙,通过两把钥匙就可以找到你有哪些比特币了。
通过秘钥可以生成一个钱包地址,通过钱包地址就可以转账汇款了。
比特币的一笔交易,就是将一个地址的比特币,换到另一个地址中,由于区块链是公开的,所以比特币的交易记录也是公开的,因此完成这笔交易,双方是否能够交易是可以轻易查询到的。
在区块链认证了比特币转账记录的正确性后,还需要将交易信息写入到区块链数据库当中,对方才能够真的收到钱,根据比特币协议,一个区块的大小是
1MB,最多记录 2000 多笔交易,当比特币交易发起时,收到交易的节点需要修改每个区块重新计算所有相关区块的特征码,然后就会产生一个新的区块链,所以比特币的转账也是非常缓慢的过程,之前我们提到一点,没有人会愿意无偿将自己的计算机提供出来作为区块链的节点,那么每个节点的收益如何保证呢?因为比特币转账必须依赖节点,在比特币转账过程中,所有节点都可以抽取手续费。谁给的手续费高就优先处理谁的转账记录,一个区块包含
12.5 个比特币,再加上手续费,每个节点的收益还是非常可观的,这也是现在比特币如此火热的原因了吧。文:罗晓丹 图:罗晓丹