一、区块
区块作为区块链的基本结构单元,由包含元数据的区块头和包含交易数据的区块主体构成。
区块头包含三组元数据:
1. 用于连接前面的区块、索引自父区块哈希值的数据;
2. 挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳;
3. 能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。
区块链系统大约每10分钟会创建一个区块,其中包含了这段时间里全网范围内发生的所有交易。每个区块中也包含了前一个区块的ID(识别码),这使得每个区块都能找到其前一个节点,这样一直倒推就形成了一条完整的交易链条。从诞生之初到运行至今,全网随之形成了一条唯一的主区块链。
二、哈希算法
哈希算法是区块链中保证交易信息不被篡改的单向密码机制。哈希算法接收一段明文后,以一种不可逆的方式将其转化为一段长度较短、位数固定的散列数据。
它有两个特点:
1. 加密过程不可逆,意味着我们无法通过输出的散列数据倒推原本的明文是什么;
2. 输入的明文与输出的散列数据一一对应,任何一个输入信息的变化,都必将导致最终输出的散列数据的变化。
在区块链中,通常使用SHA–256(安全散列算法)进行区块加密,这种算法的输入长度为256位,输出的是一串长度为32字节的随机散列数据。
区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而准确地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。
三、公钥和私钥
在区块链的话题中,我们还经常听到这样的词汇——公钥和私钥。这就是俗称的不对称加密方式,是对以前的对称加密方式(使用用户名与密码)的提高。
我们用电子邮件加密的模型来简单介绍一下:公钥就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章的。私钥就是自己的,必须非常小心保存,最好加上密码,私钥用来解密/签章,私钥由个人拥有。
在区块链中,使用公钥和私钥来标识身份,我们假设区块链中有两个人,分别为小白和小黑,小白想向小黑证明自己是真实的小白,那么小白只需要使用私钥对文件进行签名并发送给小黑,小黑使用小白的公钥对文件进行签名验证,如果验证成功,那么就证明这个文件一定是小白用私钥加密过的。由于小白的私钥只有小白才能持有,那么,就可以验证小白确实是小白。
在区块链系统中,公钥和私钥还可以保证分布式网络点对点信息传递的安全。在区块链信息传递中,信息传递双方的公钥和私钥的加密与解密往往是不成对出现的。
信息发送者:用私钥对信息进行签名,使用信息接收方的公钥对信息加密。
信息接收方:用信息发送者的公钥验证信息发送者的身份,使用私钥对加密信息解密。
四、时间戳
区块链中的时间戳从区块生成的一刻起就存在于区块之中,它对应的是每一次交易记录的认证,证明交易记录的真实性。
时间戳是直接写在区块链中的,而区块链中已经生成的区块不可篡改,因为一旦篡改,生成的哈希值就会变化,从而变成一个无效的数据。每一个时间戳会将前一个时间戳也纳入其随机哈希值中,这一过程不断重复,依次相连,最后会生成一个完整的链条。
五、Merkle树结构
区块链利用Merkle树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。Merkle树的叶子节点存储的是数据信息的哈希值,非叶子的节点存储的是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。
同样地,区块中任意一个数据的变更都会导致Merkle树结构发生变化,在交易信息验证比对的过程中,Merkle树结构能够大大减少数据的计算量,毕竟,我们只需验证Merkle树结构生成的统一哈希值就可以了。
领取专属 10元无门槛券
私享最新 技术干货