区块链

简介:

最近小米出了一个“区块链产品”:wifi链,现在还是内侧版,我也下了个玩玩,比特币的时候没有做第一批吃螃蟹的,现在面前就有个机会,当然要体验一把。这篇博客会说下什么是区块链。

什么是区块链:

按照wiki是这么描述的:
区块链(Blockchain)是分布式数据库识别、传播和记载信息的智能话对等网络,也称为价值互联网,中本聪在2008年,于《比特币白皮书》中提出了“区块链”概念,本在2009年创立了比特币社会网络,开发了第一个区块,即“创世区块”。

简单的来说,区块链的本质就是一种特殊的分布式数据库,既然是数据库,当然是用来储存信息的,其次既然是分布式的,所以任何人都可以假设服务器,加入区块链网络,成为其中的一个节点,既然是去中心化,所以没有任何的管理員,每一个节点都是平等的。

1.理解:

简单的理解来说就是区块链具有:1.数据的安全性和交易的可追述性,区块链技术能使得交易数据完全公开透明,并可以提供完整的信息流。2.区块链的数据具有无法篡改的特性.

2.起源

区块链起源于比特币,是比特币网络参与者们集体维护的一个总账本。但创新者们已经开始用区块链技术开发远超比特币自身的众多应用。从这个意义讲,我们又可以认为比特币是区块链技术的第一个应用。

区块

区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。
每一个区块包含了一个区块头,一个区块尾。

区块头(Head):记录当前区块的特征值
区块体(Body):实际数据

区块头里包含了:生成时间,实际数据(即区块体)的哈希,上一个区块的哈希,每一个区块的哈希都是不同的,简单来说就是区块头里是各种信息的加密哈希。而且哈希近乎不会被破解,
而且区块与哈希是一一对应的,每个区块的哈希都是针对”区块头”(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。而且区块里面的任何内容只要变了,(包括上一个区块的内容)哈希都会被改的面目全非。这就是区块的唯一性,因为没有人知道上一个区块的内容,而且区块的数据一旦写入,就无法篡改。前面说过每一个区块都连着上一个区块,所以这就是区块链名字的由来。
可以这样简单的理解区块,就是每一次的交易的信息。

矿工的任务:

矿工要做的就是计算每一个区块头的哈希,前面说过,每一个区块头都包含了上一个区块的哈希,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希,这就是矿工的任务了,可能有人会问矿工是怎么得到上一个区块的内容的呢,这是因为中本聪规定,任何的交易都会把区块内容分发到所有的矿工手里,然后矿工进行计算,读到这里,你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个哈希吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?那你就大错特错了,中本聪有个变态的规定:原来不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。

前面说过当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做 Nonce。其实这个不如叫做幸运数,只有你足够幸运,在一次次失败中,反复修改幸运值,重复这个过程直到生成一串有效的编号。这就是采矿如此之慢的根本原因,运气好的话,也许一会就找到了 Nonce。运气不好的话,可能算完了21.47亿次,都没有发现 Nonce,即当前区块体不可能算出满足条件的哈希。这时,协议允许矿工改变区块体,开始新的计算。这就奇怪了,这些矿工为什么要拼命干这看似无意义的事情呢?其实矿工是有报酬的,只要你生成一张满足条件的区块,你就会获得比特币的报酬。

难度系数的动态调节:

正如上一节所说,采矿具有随机性,没法保证正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此接下来的难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此接下来的难度系数就要调低10%。
难度系数越调越高,导致了采矿越来越难。

确认区块有效性

当某挖矿小组幸运的生成了一张有意义的账簿,为了得到奖励,必须立刻请其它小组确认自己的工作。前面说过,当前村里有7个挖矿组,所以这个小组必须将有效的区块信息发到所以的挖矿小组手中,确认区块有效性,这个确认非常简单,因为区块头中包含了上一块的哈希,只要这个区块中有上一块的区块,和区块信息,就确认成功。负责不予确认。

区块链的分叉

即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?
现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认。由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。
这一章的内容比较繁琐,涉及到哈希,区块等等知识,有兴趣的可以去阮一峰老师的博客看一下,
还有一个叫做伯乐在线的,我的这篇文章也是参考他们的博客写的。

最后

如果有写的不对的地方可以联系我修改

文章目录
  1. 1. 简介:
  2. 2. 什么是区块链:
  3. 3. 1.理解:
    1. 3.1. 2.起源
    2. 3.2. 区块
  4. 4. 矿工的任务:
  5. 5. 难度系数的动态调节:
  6. 6. 确认区块有效性
  7. 7. 区块链的分叉
  8. 8. 最后