揭秘区块链核心技术

640?wx_fmt=png

阅读文本大概需要 7 分钟。

大家都知道,区块链的关键技术组成主要为:P2P网络协议、共识机制、密码学技术、账户与存储模型。而这些技术中,又以 密码学与共识机制 这两点为最核心。那么今天我们来详细的聊一聊密码学,看一看密码学技术是如何在区块链中应用的。

首先,我们需知道区块链中用到的密码学算法有哪些?其实就两大类:

  • 哈希算法

  • 非对称加密算法

一、区块链中的哈希算法

哈希算法是区块链中用的最多的一种算法,它被广泛的使用在构建区块和确认交易的完整性上。

它是一类数学函数算法,又被称为散列算法,需具备三个基本特性:

  1. 其输入可为任意大小的字符串

  2. 它产生固定大小的输出

  3. 它能进行有效计算,也就是能在合理的时间内就能算出输出值

如果要求哈希算法达到密码学安全的话,我们还要求它具备以下三个附加特性:

  1. 碰撞阻力:

  2. 隐秘性:

  3. 谜题友好:

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

除此之外,还有其他一些哈希算法也很流行,例如 MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 等,其中 MD5、SHA-1 已被证明了不具备 强碰撞阻力,安全性不够高,因此市场上不再推荐使用。

我们以比特币为例,来看一下哈希算法的具体应用:

640?wx_fmt=png

上面只是示意图,那么在实际比特币系统中,每个区块包含哪些内容呢:

640?wx_fmt=png

重点关注一下上图中的:

  • Prev Block:记录签一个区块的hash地址,32字节

  • Merkle Root:是一个记录当前块内的所有交易信息的数据摘要hash值,32字节

  • Nonce:一个随机值,需要通过这个随机值去找到满足某个条件的hash值(挖矿),4字节

上面只是解释了几个重点的字段,其它字段通过字面应该容易理解就不一一解释了。

python 示例: SHA-256(SHA-256 (Block Header)

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

Merkle tree 如图:

640?wx_fmt=png

其树的顶端叫做 默克尔根(Merkle Root),Merkle Root 也是一个hash值,它是怎么计算出来的呢?

比特币中对每一笔交易做一个hash计算,然后把每2个交易的hash再进行合并做hash,如图中的 交易A的hash值是 H(A),交易B的hash值是H(B),再对这2个交易合并hash后就是H(hA|hb),就这样一直往上合并计算,算到最后的根部就是 Merkle Root 了。

在比特币和以太坊中都是使用的默克尔树结构,但是以太坊为了实现更多复杂的功能,所以有三个默克尔树。

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

二、区块链中的非对称加密算法

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

这里就得先介绍区块链中的非对称加密技术了。

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

所谓非对称加密是指我们在对数据进行加密和解密的时候,需使用2个不同的密钥。比如,我们可以用A密钥将数据进行加密,然后用B密钥来解密,相反,也可以用B来加密,然后使用A来解密。那么如果我想给某个人传递信息,那我可以先用A加密后,将密文传给她,她拿到密文之后,用手上的B密钥去解开。这2个密钥,一个被成为公钥、一个是私钥。

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

640?wx_fmt=png

在图中可以看到,在第一笔交易记录中,是 用户U0 来发起的交易,要将代币支付给 用户U1,是怎么实现的呢?

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

  2. 用户U0 使用哈希算法将交易信息进行计算,得出 H = hash(data),然后再使用自己的私钥对 H 进行签名,即 S(H),这一步其实是为了防止交易信息被篡改用的

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

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

  5. 同时,用户U1 还使用哈希算法对 交易信息data 进行计算,得出 H2 = hash(data)

  6. 对比上面2个哈希值,如果 H1==H2,则交易合法。说明 用户U0 在发起交易的时候确实拥有真实的私钥,有权发起自己账户的交易

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

这个示例,就是比特币中一次交易的签名流程,即将 哈希算法与非对称算法结合在一起用于了比特币交易的数字签名。

以上,就是区块链体系中,核心技术之哈希算法与加密算法的应用情况,欢迎一起交流。

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

推荐阅读:

人必有痴,而后有成

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值