区块链的技术基石主要有:
(1)SHA256 Hash
区块链使用的核心哈希算法是SHA256,计算后的之不能被解密回原始内容,是不可逆的,单向的,而且不管原始内容有多少,其结果的长度都是固定的,例如:
可以看到,即使原始内容的差异非常小,其结果的差异却是非常大的。
SHA256可以实现免碰撞,也就是说:不会出现输入x≠y,但是H(x)=H(y).
SHA256会有2^256种输出,如果计算2^256+1次输入,那么必然会产生一次碰撞,我们可以计算一下,假设一台计算机以每秒10000次的速度进行哈希运算,要经过10^27年才能完成2^128次哈希,所以以目前的技术来看,碰撞基本是不可能的。
(2)公钥加密技术
这个加密技术帮助用户创建一个公钥和一个私钥,公钥是可以分享给他人的,私钥是需要自己秘密保管的。
如果“张全蛋”给“穆铁柱”转一些比特币,这笔交易中包含3部分信息:
所有这些数据以及加密数字签名都会通过网络发送进行验证。数字签名是张全蛋的比特币地址和他向穆铁柱发送的数量的组合的哈希值,这个数字签名是通过私钥进行加密的。
当矿工收到这个数据后,就会进行验证,并同时做两项工作:
对比Hash1和Hash2,如果两者相同,那么它就是一个合法的交易。
(3)工作量证明
区块链中每个人都平等的账本,那么谁来向区块链添加区块?如何信任这个人呢?
为此,有了工作量证明POW这个概念,可以理解为解一道复杂的题,需要付出大量的计算,做这个工作的人,就是我们常说的”矿工“。他们的工作就是验证交易并解决与创建块相关的复杂数学难题。
每一个区块都有一个哈希值,是几项数据的组合,包括:
最终的哈希值必须以指定数量的0开头才行。
举个例子,给定的一个基本的字符串Hello World!,我们给出的工作量要求是:可以在这个字符串后面添加一个叫做nonce的整数值,对变更后的字符串进行SHA256哈希算法,如果得到的哈希结果(以16进制的形式表示)是以"0000"开头的,则通过验证。
为了达到这个工作量证明的目标。我们需要不停的递增nonce值,对得到的新字符串进行SHA256哈希运算。按照这个规则,我们需要经过4251次计算才能找到恰好前4位为0的哈希散列。
谁先找到这个nonce谁就是获胜的矿工,可以添加他的区块到区块链中,所有人都可以进行验证,如果正确就更新他们的区块链,继续计算下一个区块。
小结
希望通过上面简单的区块链介绍,能让大家对区块链技术有个大体了解,之后会详细介绍区块链技术的应用细节。