区块链关键机制分析


区块链中主要有三大关键机制:密码学原理、数据存储结构、共识机制,详细介绍如下。

密码算法

1、Hash算法

  1. 概念
    哈希函数:Hash(原始信息)=摘要信息
    哈希函数(Hash Function),也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要(Message Digest)。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
    它的函数表达式为:h=H(m)
  2. 特点:
    易压缩:对于任意大小的输入x,函数H产生的Hash值其长度是固定的。
    易计算:对于任意给定的消息,计算其Hash值比较容易。而且,同样的原始信息用同一个哈希函数总能得到相同的摘要信息。
    单向性:从摘要信息无法逆向推算出原始信息,对于给定的Hash值,要找到原始信息在计算上是不可行的,即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。
    抗碰撞性:碰撞性,即两个不同的原始信息,产生同样的hash值,理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。有两种抗碰撞性:一种是弱抗碰撞性,即对于给定的消息,要发现另一个消息,满足在计算上是不可行的;另一种是强抗碰撞性,即对于任意一对不同的消息,使得在计算上也是不可行的。
    高灵敏性:这是从比特位角度出发的,指的是1比特位的输入变化会造成1/2的比特位发生变化。消息M的任何改变都会导致哈希值H(M)发生改变。即如果输入有微小不同,哈希运算后的输出一定不同。

2、非对称加密算法

非对称加密是指加密和解密使用不同密钥的加密算法,也称为公私钥加密。区块链网络中,每个节点都拥有唯一的一对私钥和公钥。公钥是密钥对中公开的部分,就像银行的账户可以被公开,私钥是非公开的部分,就像账户密码。使用这个密钥对时,如果用其中一个密钥加密一段数据,则必须用另一个密钥解密。

  • 优点:解决了密钥传输中的安全问题。
  • 常用算法:RSA、ECC(椭圆曲线加密算法)。
  • 使用场景:SSH安全验证等。
  • 缺点:解决了信息传送的问题,但是无法验证发送方是正确的,可能被伪造成发送方。

3、数字签名

数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。通过数字签名技术既可以保证收到的文件没有被篡改,也可以保证发送者的身份,因为私钥生产数字签名且私钥不公开。
数字签名实现流程:

  1. 被发送文件用密码散列函数(MD5,SHA,SM3)产生的摘要;
  2. 发送方用自己的私用密钥对摘要再加密,这就形成了数字签名;
  3. 将原文和加密的摘要同时传给对方;
  4. 对方用发送方的公共密钥对摘要验签,获取发送方生成的摘要,同时对收到的文件用SHA编码加密产生又一摘要;
  5. 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。

存储结构

从数据结构上讲,区块链技术就是将一系列区块信息按照时间戳顺序依次链接起来的一种块链式数据结构。通过特定的哈希算法和Merkle树数据结构,区块链网络中的每个分布式节点都可以将在一段时间内接收到的交易数据封装到一个带有时间戳的数据区块中,并将该区块在目前的最长链储存起来,成为链上最新的区块。
 区块链的块链式结构
默克尔树(Merkle Tree)实际上是一种数据结构。这种树状数据结构在快速归纳和检验大规模数据完整性方面效率很高。在比特币网络中,默克尔树被用来归纳一个区块中的所有交易,其树根就是整个交易集合的哈希值,最底层的叶子节点是数据块的哈希值,非叶节点是其对应子节点串联字符串的哈希。我们只需要记住根节点哈希,只要树中的任何一个节点被篡改,根节点哈希就不会匹配,从而可以达到校验目的。
区块链中每个区块都会有一个Merkle树,它从叶子节点(树的底部)开始,一个叶子节点就是一个交易哈希。叶子节点的数量必须是双数,但是并非每个块都包含了双数的交易。如果一个块里面的交易数为单数,那么就将最后一个叶子节点(也就是Merkle树的最后一个交易,不是区块的最后一笔交易)复制一份凑成双数。从下往上,两两成对,连接两个节点哈希,将组合哈希作为新的哈希。新的哈希就成为新的树节点。重复该过程,直到仅有一个节点,也就是树根。根哈希然后就会当做是整个块交易的唯一标示,将它保存到区块头,然后用于工作量证明。

使用场景:

  1. 一致性检验:也被称为“一致性证明”,你可以用它验证两份日志的版本是否一致。
  2. 数据校验:也被称为“审计证明”,这是因为它可以让你知道某一条具体的记录是否存在于日志当中。
  3. 数据同步:Merkle树在分布式数据存储中的数据同步中发挥着重要的作用,这是因为它允许分布式系统中的每个节点可以迅速高效地识别已经更改的记录而无需将发送所有的数据来进行比对。

共识机制

简单来说,共识机制是区块链节点就区块信息达成全网一致共识的机制,可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击。实践中要达到这样的效果需要满足两方面条件:一是选择一个独特的节点来产生一个区块,二是使分布式数据记录不可逆。
当前主流的共识机制包括:工作量证明/POW(Proof of Work)、权益证明/POS(Proof of Stake)、工作量证明与权益证明混合(POS+POW)、股份授权证明/DPOS(Delegated Proof-of-Stake)、实用拜占庭容错(PBFT)、瑞波共识协议等。

1. 工作量证明/POW

<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值