主页 > imtoken新版本下载 > 揭秘区块链核心技术

揭秘区块链核心技术

imtoken新版本下载 2023-09-01 05:10:57

阅读全文大约需要 7 分钟。

众所周知,区块链的关键技术组成部分是:P2P网络协议、共识机制、密码技术、账户和存储模型。 在这些技术中,密码学和共识机制是核心。 那么今天我们就来详细聊聊密码学,看看密码学技术在区块链中是如何应用的。

首先,我们要知道区块链使用的密码算法有哪些? 其实分两类:

哈希算法

非对称加密算法

1. 区块链中的哈希算法

哈希算法是区块链中使用最多的算法比特币是区块链核心技术吗,广泛应用于构建区块和确认交易的完整性。

它是一种数学函数算法,又称哈希算法,需要具备三个基本特征:

它的输入可以是任意大小的字符串

产生固定大小的输出

比特币是区块链核心技术吗_比特币区块链交易查询_比特币区块链扩容技术

可以高效计算,即可以在合理的时间内计算出输出值

如果哈希算法需要实现密码安全,我们还要求它具有以下三个附加属性:

抗碰撞性:

这意味着对于两个不同的输入,必须产生两个不同的输出。 如果两个不同的输入产生相同的输出,那么就没有抗碰撞性,或者说抗碰撞性很弱。

保密:

也称为不可逆性,是指在y = HASH(x)中,输出值y可以通过输入值x来计算,但是x的值不能通过推导y的值来计算。 为了保证不可逆性,x的值必须来自一个非常宽的集合,这样就很难通过计算推导出x的值。

益智友好:

这个特点可以理解为拼图是公平友好的。 比如在算法y = HASH(x)中,如果知道y的值,想得到x的值,就必须暴力枚举,不断尝试,而且没有更好的办法,没有捷径。

哈希算法有很多种,比特币使用的主要哈希算法是SHA-256算法。

比特币区块链交易查询_比特币是区块链核心技术吗_比特币区块链扩容技术

此外,还有其他流行的哈希算法,如MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3等,其中MD5和SHA-1已被证明抗碰撞性不强,安全性不够高,市场不再推荐使用。

下面以比特币为例,看看哈希算法的具体应用:

在比特币中,哈希算法用于生成交易的数据摘要。 当前块包含前一个块的哈希值,下一个块包含当前块的哈希值,这样一一连接起来。 起来形成一个哈希指针链表,如下图所示:

以上只是一个示意图,那么在实际的比特币系统中,每个区块包含什么:

重点看上图:

Prev Block:记录签署一个区块的哈希地址,32字节

Merkle Root:是记录当前区块所有交易信息的数据摘要哈希值,32字节

Nonce:一个随机值,需要用来寻找满足一定条件的哈希值(挖矿),4字节

上面只解释了几个关键字段,其他字段通过字面量应该很容易理解,就不一一解释了。

比特币是区块链核心技术吗_比特币区块链交易查询_比特币区块链扩容技术

所有这些字段共同组成了区块头(block header),然后区块头需要进行两次哈希计算,计算出的值就是当前比特币区块的哈希值。 因为比特币系统要求计算出的哈希值满足一定的条件(小于某个值),所以我们需要不断遍历Nonce值,计算出新的哈希值来满足要求。 只有当我们找到符合要求的哈希值,那么这才是一个合法的区块(这一系列动作也称为挖矿)

我们再来看看上面另一个重要的字段:Merkle树字段。

默克尔树简称默克尔树,也是哈希算法的一个重要应用。

它实际上是用哈希指针构建的二叉树或多树。

Merkle树如图所示:

树的顶部称为 Merkle Root。 Merkle Root 也是一个哈希值。 它是如何计算的?

在比特币中,对每一笔交易都进行一次哈希计算,然后将每两笔交易的哈希值组合起来做一个哈希值。 图中,交易A的哈希值为H(A),交易B的哈希值为H(B),将这两个交易的哈希合并后,得到H(hA|hb)。 这样,组合计算一直进行下去,直到最后的根是Merkle Root。

Merkle树结构在比特币和以太坊中都有使用,但是为了实现更复杂的功能,以太坊拥有三棵Merkle树。

至此,哈希算法在区块链中的应用介绍完毕。 接下来我们来看一下非对称加密算法。

比特币区块链扩容技术_比特币区块链交易查询_比特币是区块链核心技术吗

2. 区块链中的非对称加密算法

区块链的一个关键点就是账户问题,但是比特币没有账户的概念,那么如何进行转账交易呢?

这里首先要介绍一下区块链中的非对称加密技术。

非对称加密技术有很多种,例如:RSA、ECC、ECDSA等,比特币中使用的是ECDSA算法。

ECDSA 是美国政府标准,使用升级版的椭圆曲线,该算法经过多年仔细的密码分析,被广泛认为安全可靠。

所谓非对称加密,就是我们在对数据进行加密和解密时,需要使用两个不同的密钥。 例如,我们可以使用 A 密钥加密数据,然后使用 B 密钥解密数据。 反之,我们也可以先用B加密,再用A解密。 所以如果我要给某人发信息,我可以先用A加密,然后把密文传给她。 她得到密文后,就可以用手中的B密钥解密。 在这两个密钥中,一个称为公钥比特币是区块链核心技术吗,另一个称为私钥。

在比特币中,每个用户都有一对密钥(公钥和私钥),比特币系统使用用户的公钥作为交易账户。

我们看下图:

从图中可以看出,在第一条交易记录中,交易是由用户U0发起的。 如何支付代币给用户U1?

比特币区块链扩容技术_比特币是区块链核心技术吗_比特币区块链交易查询

首先,用户U0写入交易信息:data(明文,例如:用户U0转100元给用户U1)

用户U0通过hash算法计算交易信息得到H=hash(data),然后用自己的私钥对H进行签名,即S(H)。 这一步实际上是为了防止交易信息被篡改。 的

然后基于区块链网络,将签名S(H)和交易信息数据传递给用户U1

用户U1使用用户U0的公钥解密S(H),得到交易信息的哈希值H

同时,用户U1也使用哈希算法计算交易信息数据,得到H2 = hash(data)

比较以上两个哈希值,如果H1==H2,则交易合法。说明用户U0在发起交易时确实拥有真正的私钥,有权发起自己账户的交易

网络中的每个节点都可以参与上述验证步骤。

本例为比特币交易的签名过程,结合哈希算法和非对称算法对比特币交易进行数字签名。

另外,在比特币中,公私钥的生成以及比特币地址的生成,也是通过非对称加密算法来保证的。

以上就是核心技术哈希算法和加密算法在区块链系统中的应用。 欢迎交流。

本文首发于微信公众号“不止于思考”。 欢迎关注交流互联网认知、工作管理、大数据、Web、区块链技术。