当一个新概念的提出,特别是和货币、交易、金融相关时就出现许多干扰资讯,模糊视线。
下面,我们一起来拨光它,看清楚。
区块链和虚拟币是什么关系?
区块链和虚拟币有联系,但它们是不同的两个东西。
区块链,不是软件、不是库、更不是虚拟货币,它只是虚拟币所用到技术栈中的一员。
如果说虚拟币是土豆炖牛肉,区块链是牛肉,他是主料但不是菜品。
image.png为什么提到区块链总离不开虚拟货币呢?
区块链是目前主流虚拟货币技术栈中的核心部分,并且最早应用区块链技术的是虚拟币中的元老“比特币”,比特币和区块链又是同一个人“中本聪”的创造的,所以会有很多人将虚拟币和区块链画上约等号。
中本聪是谁?是发布比特币和区块链在互联网上人用的的昵称,没有公开真实身份。他可能是一个人,也可能是一个团队、组织
抛开虚拟货币,专注的说明一下区块链本身。
区块链(BlockChain),本质上是一个数据链式加密存储的解决方案,它将数据组合成数据块,然后通过向后传递区块哈希,让每一个块产生关联,组成一个不可拆分的数据块链条。
先拆开来说
什么是区块?
所谓区块就是数据块,不是一条数据,一行数据,而是一块数据,一块数据是多条数据的组合。以比特币为例,比特币的一个区块包含2000-3000条交易记录。
什么是链?
要让区块和区块之间产生链式关系,采用的方法是用上一个区块哈希值作为下一个区块的计算哈希的一部分,这样,每一个新的区块自己的哈希都会受上一个区块的哈希的影响,就形成了一个单向链条结构。
举个例子,想象一下,有一些国家的民族取名字采用的连名制,孩子的名字包含父亲的名字,父亲的名字包含爷爷的名字。
哈希是一种不可逆的加密技术,把数据通过哈希算法换算成一串编码,这串编码不可逆,并且是“唯一”的(理论上会出现重复,但是重复几率及其小,可以忽略)。
每一个区块自己的的哈希是由:
- 当前这个区块的数据的哈希
- 时间
- 序号
- nonce(一个变动数据,用来重算哈希的,稍后介绍)
- 上一个区块的哈希(重点)
经过组合后计算出来的。
也就是说,每个区块的哈希和自己的内容有关,也和上一个区块的内容有关
image.png这就是区块链的核心原理
区块链是如何安全的运作的?
还是以连名制取名字为例:如果爷爷改名,那么父亲也要改,孩子也要改,就形成了链条反应,假设改一次名字需要办理1天,那么爷爷改名字就会导致整个家族花3天的时间去改名字。
同理,整条区块链条中的区块都是前后关联的,如果篡改其中一个块里面的数据,那么被篡改块的哈希就需要重新计算,这会导致后面的区块也需要重新计算,一直从当前块到链条的到最后一个块都要重新计算。
划重点:计算哈希是有巨大的代价的,这个代价就是共识机制
以比特币所采用的共识机制:工作证明(PoW)为例。
计算机计算哈希并不费事,所以需要给哈希设置一个条件,如果不满足就让计算机重新算。
计算机算出一个哈希是非常非常非常非常快的,所以,设置的条件就需要非常非常非常苛刻。比如设置的条件是计算出来的哈希必须是“000000”开头。由于哈希是不可逆的,所以不可能通过倒推计算满足条件的哈希,只能通过穷举法(碰运气)一次又一次的计算。
一个固定的区块只能算出一个对应的哈希,那么不满足条件怎么办?这就是nonce的作用。
nonce是一个32位的二进制值,是被包含在计算哈希的数据里的。计算区块的哈希,发现不满足开头是000000的条件,就改变一下nonce(累加),再重新计算,一直计算到满足设置的条件为止。
这种撞大运的方法可能会花费几十亿次计算,这样的计算量对现代计算机是非常耗时的(在量子计算机出现之前)。还是以比特币为例,目前一个区块全网计算能力大概是10分钟1个。
那么有一个努力又有耐心的黑客,努力的把所有区块都成功的重新计算了哈希就能成功的篡改数据了吗?
不能,或者说难度非常大,因为区块链还有一个分叉确认机制
如果有一个区块被同时计算出来怎么办?现在的规则是:继续同时使用这两个区块向后添加区块,然后看哪条先接到6个块就用哪条,另一条就废弃掉,被废弃的块的数据将被重新列入新的块进行计算。
[图片上传中...(image.png-312c41-1554825956586-0)]
如果你篡改了一个区块,不仅要把后面的区块都重新计算出来,而且还必须比除了你之外的所有节点先计算完6个区块,也就是说,理论上你的计算能力必须大于全网其他节点:因为 x+y=100%,x>y,所以x>50%。
全网节点越多,篡改的难度和成本越大,这就是区块链的安全机制。
虚拟货币就是利用区块链的安全性和不可修改性,再结合电子钱包加密、分布式存储、点对点传输等技术共同组成的产品。
别人经常说的挖矿是怎么回事?
其实这是在虚拟货币中的说法
挖矿?:在虚拟货币中所谓的挖矿就是区块链技术中的计算哈希。
矿机?:在虚拟货币中计算哈希和存储区块链数据的计算机节点就叫矿机。
总结一下
- 区块链是一个数据存储的技术方案,是虚拟货币这类项目的核心技术之一
- 区块链的安全性是通过消耗大量的计算和确认机制极大的增加篡改成本实现的
- 区块链的应用场景很小,因为它只能保存历史记录,读写统计都不方便,并且数据保存是分布式的所以不建议保存敏感数据。
区块链适用领域的条件:
- 数据存取频率低
- 以历史数据为主
- 数据价值较高
- 高度可信性
网友评论