第二章 区块链技术原理

第二章 区块链技术原理

整个区块链与密码学大体内容介绍安排如下【这篇博客中可以找到所有章节的链接内容】:
https://blog.csdn.net/qq_43479839/article/details/114630163

参考资料和教材:
1>区块链技术及应用;清华大学出版社出版;华为区块链技术开发团队 著
2>区块链技术进阶与实战;人民邮电出版社;蔡亮,李启雷,梁秀波 著
3>可证明安全算法与协议;科学出版社;张华,温巧燕,金正平 著
4>密码学引论(第二版);武汉大学出版社;张焕国,王张宜 著
5>武汉大学国家网络安全学院:何德彪老师

第二章的目录如下:

第二章 区块链技术原理

2.0 引言

区块链到如今已经已经吸引了越来越多的进行深入研究;现在各地政府对区块链积极扶持,国内外科技以及金融巨头都纷纷涉足到区块链行业。

在中国进行来区块链技术的发展现状:
1、工信部发布《中国区块链技术和应用发展白皮书2016》,【可查】
2、2016年12月,“区块链”首次被作为战略性前沿技术写入《国务院关于印发"十三五"国家信息化规划的通知》
3、工信部发布《2018中国区块链产业白皮书》,

2.1 区块链的概念

区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造以及数据传输访问安全的去中心化分布式账本。区块链中所谓的账本,其作用和现实生活中的账本基本是一致的,按照一定格式记录流水等交易信息。

2.1.1 交易单、数据块、区块链概念

其中:具体关系如下
区块链中,数据是以交易单的形式存在的。

  • 交易单记录一笔交易的具体信息,例如付款人 比特币地址、收款人比 特币地址、付款金额、 付款人签名等
  • 数据块许多交易单组成了数据块,每个数据块只记录区块链全世界对应时间内的交易信息
  • 数据链将数据块有序联起来的链表.例如比特币全世界只 有唯一一条公共数据链 Blockchain

在这里插入图片描述

2.1.2 数据块中的一些参数

在区块链中所包含的一些参数:
1》数据块中的一些参数
在这里插入图片描述
在这里插入图片描述
值得注意的是:
1、系统中的每个节点都要验证交易是否合法,如果合法将认同此次交易,并将交易固化成个交易链,即数据块.
而数据块又包括区块头和区块体.
2、所有的交易:包括交易金额,交易金额的来源,交易金额去向等细节都以交易单的形式被记录在世界上唯一的数据块上。
给出一个经常会被提及到的一些概念:【参考链接:https://baijiahao.baidu.com/s?id=1602885179196188138
3、 UTXO:Unspent Transaction Output,未花费交易的输出,除了创世区块挖矿奖励,任何一笔交易输入必须是另一笔交易未花费的交易输出。绕晕了?好吧,简单粗暴一点,就是你给我的比特币必须是你没给过别人的,要不然我不要(当然在正常情况下也给不了,除非拥有全网51%以上的算力)。类比现实世界,一张钱币不可能花费两次,但在虚拟货币中,可能出现多次交易即"双花"。

2.1.3 简要介绍区块成链的过程

在知道上面的一些概念之后,给出区块结构,以及其在区块链中大概的结构:
在这里插入图片描述

在概念大致介绍清楚之后,要先简要说一下区块形成链的具体过程,以比特币系统为例【此处参考链接:https://baijiahao.baidu.com/s?id=1602885179196188138
好了,概念大概介绍清楚了,我们来说一下区块形成链的具体过程:【以比特币系统为例】
我们假设Alice要转给Bob 5个比特币,
第一步,Alice创建交易单,写上"我要转给Bob 5个比特币",并输入自己的私钥将账户中的5个比特币解锁;
第二步,技术后台将"我要转给Bob 5个比特币"进行哈希运算,并将Alice的私钥使用密码学技术进行加密,得到Alice的数字签名;
第三步,技术后台将Alice的数字签名、公钥发送给智能合约;
第四步,技术后台将这个交易单发送到智能合约;
第五步,技术后台使用Alice的公钥对数字签名进行解密,得到哈希值a;
第六步,技术后台对交易单信息进行哈希运算得到哈希值b,
第七步,后台验证哈希值a、b是否一致,若一致对该交易使用P2P网络进行全网广播,若不一致,则交易驳回;
第八步,后台根据当前挖矿难度系数设置下一区块的目标哈希值,矿工进行挖矿,争夺记账权;
第九步,当一名矿工挖到合法区块后,对区块头上信息进行完善,包括时间戳,版本号、上一区块的哈希值、Merkel树根等,并通过P2P网络进行全网广播,其他矿工便不再进行该区块的挖矿动作,而转向验证该区块的合法性;
第十步,通过验证区块合法后(UTXO和数字签名),挖到该区块链的矿工获得代币奖励,其余矿工将该区块纳入自己的区块链顶端,形成更长的主链,接着竞争下一区块的记账权。
以此往复,保证了比特币系统的运行,而这也是比特币能够维持至今的原因。

2.1.4 区块产生方式、POW、POS、DPOS

1、区块产生方式:区块产生的过程其实就是挖矿的过程,在区块的结构中可以知道,前一个区块的哈希值确定,目标哈希值也确定,,现在只需要去计算出合适的随机值nonce,即可算“挖矿”成功,获取记账权,也就产生了新的区块。(但是由于交易数只要有一点改变都会造成merkle根值巨大的变化,所以这个随机数nonce是很难确认的。)

2、POW:Proof of Work,工作证明。比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。

3、POS:Proof of Stake,也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。
POS不同于POW之处在于,在POS系统 上“挖矿”是以货币的持有数量为基础的. 换句话说,在POS的情况下,一个人拥有虚 拟货币的5%和在比特币系统上拥有系统5% 的算力的效果是一样的.

3、DPOS:Delegated Proof of Stake,委任权益证明。关于此协议的详细内容,可以参考最新的博文《[区块链]DPoS官方共识机制(BTS/EOS)详解》比特股的DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

POW、POS、DPOS参考链接:https://blog.csdn.net/lsttoy/article/details/61624287

2.1.5 区块链中的交易过程
  • 第1步:所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个数字签名,并 将这个签名附加在这枚货币的末尾,制作成交易单.

要点:B以公钥作为接收方地址

  • 第2步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中.

要点:对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用.目前一笔比 特币从支付到最终确认成功,得到6个区块确认之后才能真正确认到帐.

  • 第3步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新 比特币会在此过程中产生)

要点:节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部 分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解.由此可见,答案并不唯一

  • 第4步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其 他节点核对.

要点:时间戳用来证实特定区块必然于某特定时间是的确存在的.比特币网络采取从5个以上 节点获取时间,然后取中间值的方式作为时间戳.

  • 第5步:全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下 一个区块,这样就形成了一个合法记账的区块链.

要点:每个区块的创建时间大约在10分钟.随着全网算力的不断变化,每个区块的产生时间会 随算力增强而缩短、随算力减弱而延长.其原理是根据最近产生的2016个区块的时间差(约两 周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),使得每个区 块的生成时间是10分钟. 10*2016 = 14 * 24 *60

2.2 区块链的特点

1、 区块链的特点是什么?
开发性:免费、开源的交易系统。
去中心化:不依赖信任机构。
不可篡改时间戳保证交易的不可逆和可追溯性。
永久性:合法交易永远记录在区块链。

2、又区块链的特点是什么?
Autonomous自治的—透明:系统节点对等,自由加 入和离开;去中心化,无管理机构或第 三方仲裁
Distribute分布式的—共享:只需要连接到最近的节 点就可以获取所需要的所有信息
Trackable可追溯的—公开:系统的每个节点都有所 有附带时间戳的完整拷贝,数据不可篡改
Contractual按合约执行的—公平:所有的节点都按照 一个规则或合约行事并达到共识(智能合 约)
互联网的四大特点 是“公平、分享、 公开、透明”

2.3 区块链的分类

2.3.1 区块链分类的具体内容

1、区块链包括:公有链、私有链、联盟链。

公有链:

  • 任何节点都是向任何人开放
  • 任何人均可自由参与和退出

私有链:

  • 单机构享有使用权和控制权
  • 权力完全控制在一个组织中

联盟链:

  • 介于公有链和私有链之间
  • 加入和退出需经过联盟授权

在这里插入图片描述

2.3.2 公链vs私链

2、公链与私链对比的优缺点?
公链优点:
优点1:保护用户免受开发者的影响
优点2:公开区块链是开放的,可以应用于 多个领域以及产生一定的网络影响.
公链缺点:
1.在某些特定环境下,如需要保护数据隐私等完成公开则失去隐私.
2.公共区块交易费用较高,确认速度较慢等.
3.公有链的不可更改性降低了一定的灵活性.

私链优点:
优点1:较强的灵活性
优点2:私有链节点均已知,不存在51%攻击风 险.
优点3:交易成本更便宜.
优点4:节点之间可以很好地连接,故障可以 迅速通过人工干预来修复,并允许使用共识算 法减少区块时间,从而更快地完成交易
优点5:读取权限受到限制,这样私有区块链 还可提供更好的隐私保护
**私链缺点:**丧失了一定的去中心化的特性。

在这里插入图片描述

2.4 区块链的基础技术

2.4.1 哈希函数

不够多赘述,在密码学中是很基础的概念。
1、哈希函数的概念:
在这里插入图片描述

2、哈希运算的特性:一个优秀的哈希算法要具备正向快速、输入敏感、逆向困难、强抗碰撞等特性。
其中解释一下输入敏感,就是说输入信息发生任何微小变化,哪怕仅仅是一个字符的更改,重新生成的哈希值和原哈希值也有天壤之别。
3、通过哈希构建区块链的链式结构,实现防篡改。
在这里插入图片描述
4、通过哈希函数构建默克尔树,实现内容改变的快速检测。
在这里插入图片描述

2.4.2 数字签名

1、数字签名是手写签名数字化的产物,但又有着显著的区别

  • 不同消息的签名不同,甚至相同消息也有不同的签名,否则签名就会被获取并复制到 另外的文件中;
  • 数字签名的基础是公钥密码学;

2、数字签名的目的:保证信息的完整性和真实性,即消息没有被篡改,而且签名也没有被篡改,消息只能始发于所声称的一方。

3、一个完善的签名方案应满足以下三个条件:
不可伪造性:其他任何人均不能伪造签名,也不能对接收或发送的信息进行篡改、伪 造和冒充
不可否认性:签名者事后不能否认或抵赖自己的签名
公正的仲裁:若当事双方对签名真伪发生争执时,能通过公正的仲裁者验证签名来确 定其真伪

4、数字签名方案一般包括三个过程:
① 系统初始化过程:产生数字签名方案中的所有系统和用户参数(公开的+秘密的)
② 签名过程:用户利用给定的签名算法对消息签名,签名过程可以公开也可以不公 开,但一定包含仅签名者才拥有的秘密信息(签名密钥)
③ 验证过程:验证者利用公开的验证方法对给定消息的签名进行验证

5、数字签名工作流程示意图
在这里插入图片描述
6、经典的数字签名算法和其他的数字签名算法:
经典:
① RSA数字签名
② DSA数字签名
③ ECDSA数字签名
④ SM2数字签名
⑤ …

其他:
① 盲签名
② 群签名
③ 环签名
④ …

2.4.3 共识算法

1、为什么要共识?
在这里插入图片描述
2、有哪些共识算法?
在这里插入图片描述
共识算法-PoW

  • 比特币系统设计了以每个节点的计算能力即“算力”来竞争记账权的机制.在比特币系统
    中,大约每10分钟进行一轮算力竞赛,竞赛的胜利者,就获得一次记账的权力,并向其 他节点同步新增账本信息.

  • 在一个去中心化的系统中,谁有权判定竞争的结果呢?比特币系统是通过一个称为“工作 量证明”( Proof of Work,
    PoW)的机制完成的.

  • 简单地说,PoW就是一份确认工作端做过一定量 工作的证明.PoW系统的主要特征是计算
    的不对称性.工作端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检 查工作端是不是做了相应的工作.

  • 举个例子,给定字符串“bockchain”,我们给出的工作量要求是,可以在这个字符串后面 连接一个称为nonce的整数值串,对连接后的字符串进行SHA256哈希运算,如果得到的哈 希结果(以十六进制的形式表示)是以若干个0开头的,则验证通过,为了达到这个工作量 证明的目标,我们需要不停地递增nonce值,对得到的新字符串进行SHA256哈希运算.

  • PoW背后的基本概念很简单:工程端提交已知难于计算但易于验证的计算结果,而其他任 何人都能通过验证这个答案就确信工作端为了求的结果已经完成了量相当大的计算工作. 但PoW机制存在明显的弊端.

  • 一方面,PoW的前提是节点和算力是均匀分布的,但随着人们将CPU挖矿逐渐升级到 GPU,FPGA,ASIC矿机挖矿,算力越来越集中.

  • 另一方面, PoW太浪费资源了.比特币网络每秒可完成数百万亿次SHA256计算,但这些
    计算除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,并没有任何 实际或科学价值.

共识算法-BFT类算法(Byzantine Fault Tolerance):
这个不赘述,只需有一个结论,节点总数n,不诚实节点m的关系:n>3*m.

共识算法-结合可信执行环境的共识算法

  • 可信计算是在计算和通信系统中广泛使用基于硬件安全模块支持下的可信计算平台,以 提高系统整体的安全性.

  • 早期可信计算的研究主要以国际可信计算工作组TCG (Trusted Computing Group)为主.可信计算最核心的就是TPM硬件芯片,其TPM (Trusted Platform Module) 1.2规范是比较经典的, 大多数厂家的芯片都以TPM 1.2为标准,该规范已经升级到TPM 2.0.

  • 国内对应的是TCM(Trusted Computing Module)芯片,可以参考“可信计算密码支撑平台功能与接口规范”,而且已经成为国家标准,即GB/T 29829-2013.

  • 随着可信计算的发展,可信平台模块不一定再是硬件芯片的形式,特别是在资源比较受限的 移动和嵌入式环境中,可信执行环境(TEE,Trusted Execution Environment)的研究比较 热,如基于ARM TrustZone、智能卡等可以实现可信计算环境;

  • 2013年, Intel推出SGX(Software Guard Extensions)指令集扩展,旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态,提供用户空间的可信执行环境,通过一组新的指令集扩展与访问控制机制,实现不同程序间的隔离运行,保障用户关键代码和数据的机密性与完整 性不受恶意软件的破坏.

在这里插入图片描述

参考链接:https://blog.csdn.net/kouryoushine/article/details/89966837

2.4.4 智能合约

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 区块链与密码货币的关系

区块链和加密数字货币并不能等同。不赘述。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值