区块链的技术基石主要有:

  • SHA256 Hash 

  • 公钥加密技术

  • 工作量证明机制

(1)SHA256 Hash

区块链使用的核心哈希算法是 SHA256,计算后的值不能被解密回原始内容,它是单向的,而且不管原始内容有多少,其结果的长度都是固定的,例如:

区块链的核心技术_java

可以看到,即使原始内容的差异非常小,其结果的差异却是极大的。

SHA256 可以实现免碰撞,即不会出现输入x≠y,但是H(x)=H(y)

SHA256 会有2^256种输出,如果我们进行2^256+1次输入,那么必然会产生一次碰撞,我们可以计算一下,假设一台计算机以每秒10000次的速度进行哈希运算,要经过10^27年才能完成2^128次哈希,所以碰撞的几率是极其小的。

(2)公钥加密技术

这个加密技术帮助用户创建一个公钥和一个私钥,公钥是可以分享给他人的,私钥是需要自己秘密保管的。

区块链的核心技术_java_02

如果 Chandler 给 Joey 转一些比特币,这笔交易中会包含3部分信息:

  • Joey 的比特币地址(Joey 的公钥)

  • 交易的比特币数量

  • Chandler 的比特币地址(Chandler 的公钥)

所有这些数据以及加密数字签名都会通过网络发送进行验证。数字签名是Chandler的比特币地址和他向joey发送的数量的组合的哈希值,这个数字签名是通过私钥加密的。

当矿工收到这个数据后,他会进行验证,会同时做两项工作:

  1. 把所有非加密数据(交易金额、两个人的公钥)放入哈希算法中,得到一个哈希值(例如为 Hash1)

  2. 使用 Chandler 的公钥对数字签名进行解密,得到一个哈希值(例如为 Hash2)

如果 Hash1 与 Hash2 相同,那么它就是一个合法的交易。

(3)工作量证明

区块链中每个人都平等的拥有账本,那么谁来向区块链添加区块?如何信任这个人呢?

为此,有了工作量证明 POW这个概念,可以理解为解一道复杂的题,需要付出大量的计算,做这个工作的人被称为“矿工”。这些矿工的工作就是验证交易并解决与创建块相关的复杂数学难题。

每个区块都有一个哈希值,是几项数据的组合,包括:

  1. 前一个区块的哈希值

  2. 交易数据的哈希值

  3. nonce

最终的哈希值必须以指定数量的0开头才行。

举个例子,给定的一个基本的字符串 Hello, world!,我们给出的工作量要求是:可以在这个字符串后面添加一个叫做nonce的整数值,对变更后的字符串进行SHA256哈希运算,如果得到的哈希结果(以16进制的形式表示)是以"0000"开头的,则验证通过。

为了达到这个工作量证明的目标。我们需要不停的递增nonce值,对得到的新字符串进行SHA256哈希运算。按照这个规则,我们需要经过4251次计算才能找到恰好前4位为0的哈希散列。

区块链的核心技术_java_03

谁先找到这个 nonce 谁就是获胜的矿工,可以添加他的区块到区块链中,所有人都可以进行验证,如果正确就更新他们的区块链,继续计算下一个区块。

小结

希望通过上面的简单介绍,能让大家对区块链技术有个大体了解,之后会详细介绍区块链技术的应用细节。