区块链:1、基础技术 哈希、数字签名、智能合约

区块链:1、基础技术

一、哈希运算(Hash Algorithm)

1、概念

哈希运算即散列算法。其功能就是可以将任意长度输入通过一定计算生成一个固定长度的字符串,输出的这个字符串即输入的哈希值

2、特性

(1)正向快速

正向即由输入计算输出的过程,对给定的数据可以快速的得到哈希值

(2)输入敏感

只要输入信息发生任何变化(即使是一个字符改变),都会造成哈希值翻天覆地的变化,并且完全无法比对。
区块链:1、基础技术 哈希、数字签名、智能合约_第1张图片

(3)逆向困难

这一点是哈希算法安全性的基础,要求无法短时间内根据哈希值计算出原始信息。

(4)强抗碰撞性

不同输入很难可以产生相同哈希输出。(但是实际上由于输出位数有限,所以实际上有产生碰撞的情况,但是由于代价过大使得破解没有意义,付出远大于收益而可以检验了一个哈希算法的优秀性)

以上特性保证了区块链的不可篡改性。

3、用哈希构建默克尔树

(1)概念

默克尔树就是一种哈希树,其可以实现对改变内容的快速检测。区块链中默克尔树就是当前区块所有交易信息的一个哈希值。该哈希值是一个哈希二叉树。

(2)操作

首先对每笔交易计算哈希,然后进行两两分组,对这两个哈希值再计算得到一个新的哈希值,两个旧的哈希值就作为新哈希值的叶子节点,如果哈希值数量为单数,则对最后一哈希值再次计算哈希值即可;然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根,最终形成一个二叉树的结构。

在区块链中,我们只需要保留对自己有用的交易信息,删除或者在其他设备备份其余交易信息。如果需要验证交易内容,只需验证默克尔树即可。若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。

二、数字签名

1、概念

数字签名也称作电子签名,是通过一定算法实现类似传统物理签名的效果。其是通过密码学领域相关算法对签名内容进行处理,获取一段用于表示签名的字符。

数字签名在ISO 7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造。”

区块链网络中包含大量的节点,不同节点的权限不同。区块链中的转账操作,必须要由转出方发起。区块链主要使用数字签名来实现权限控制,识别交易发起者的合法身份,防止恶意节点身份冒充。

区块链:1、基础技术 哈希、数字签名、智能合约_第2张图片

2、原理

(1)私钥公钥

数字签名通常采用非对称加密算法.即每个节点需要一对私钥,公钥密钥对。签名时需要使用私钥。
私钥即只有本人可以拥有的密钥。对同一段数据的签名是完全不同的,类似物理签名的字迹。
数字签名一般作为额外信息附加在原消息中,以此证明消息发送者的身份。
公钥即所有人都可以获取的密钥,验签时需要使用公钥。因为公钥人人可以获取,所以所有节点均可以校验身份的合法性。

(2)签名流程

  • 发送方A对原始数据通过哈希算法计算数字摘要,使用非对称密钥对中的私钥对数字摘要进行加密,这个加密后的数据就是数字签名;
  • 数字签名与A的原始数据一起发送给验证签名的任何一方。

(3)验证流程

  • 签名的验证方,一定要持有发送方A的非对称密钥对的公钥;
  • 在接收到数字签名与A的原始数据后,首先使用公钥,对数字签名进行解密,得到原始摘要值;
  • 对A的原始数据通过同样的哈希算法计算摘要值,进而比对解密得到的摘要值,与重新计算的摘要值是否相同,如果相同则签名验证通过。

3、区块链中的使用

区块链网络中,每个节点都拥有一份公私钥对。节点发送交易时,先利用自己的私钥对交易内容进行签名,并将签名附加在交易中。其他节点收到广播消息后,首先对交易中附加的数字签名进行验证,完成消息完整性校验及消息发送者身份合法性校验后,该交易才会触发后续处理流程。

三、智能合约

1、概念

1995年,跨领域学者 Nick Szabo就提出了智能合约的概念,他对智能合约的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”

智能合约是一种在满足一定条件时,就自动执行的计算机程序。例如自动售货机,就可以视为一个智能合约系统。客户需要选择商品,并完成支付,这两个条件都满足后售货机就会自动吐出货物。

2、原理

一个基于区块链的智能合约需要包括事务处理机制数据存储机制以及完备的状态机,用于接收和处理各种条件。

并且事务的触发、处理及数据保存都必须在链上进行。当满足触发条件后,智能合约即会根据预设逻辑,读取相应数据并进行计算,最后将计算结果永久保存在链式结构中。
区块链:1、基础技术 哈希、数字签名、智能合约_第3张图片

参考文献

[1]华为区块链技术开发团队.区块链技术及应用.清华大学出版社

你可能感兴趣的:(区块链,区块链)