文章目录
- 简答题
- 第一章
- 1.区块链的概述(问题:区块链是通过哪些机制实现信任的?)
- 2.哈希函数的性质(问题:区块链为什么能够保证链上数据的不可篡改?)
- 3.区块链的特点(P18-P19有详细解释)(问题:区块链的主要特点有哪些?)
- 4.燃料P27(问题:以太坊的燃料起什么作用?)
- 第二章
- 1.对称加密算法和非对称加密算法P53(问题:在区块链中,哪些环节使用了非对称算法?)
- 2.非对称加密算法P52(在非对称加密算法中,公钥和私钥都需要保密吗?为什么?)
- 3.Merkle树(P58-P59)(问题:简述用Merkle树进行区块链交易验证的过程及由此带来的好处。)
- 4.RSA密码体制
- 第三章
- 1.下面以Gnutella协议为例说明P2P网络中基于泛洪的资源搜索过程。Gnutella是一种分布式无结构的P2P网络通信协议,当Peer节点需要在网络中下载一个特定的文件时,需要查询拥有该文件的Peer节点的位置,查询步骤如下:P62(问题:简述P2P网络中基于泛洪的资源搜索过程)
- 第四章
- 1.简述比特币的PoW机制中难题计算方式及如何进行难度调整P89
- 2.PBFT流程的三阶段协议流程P95(问题:概述PBFT的主要工作流程,并简要分析为何PBFT的扩展性不佳?)
- 第六章
- 1.考察如例题矿工收到Bob的交易Tx2时,为验证交易的合法性(即确认Bob是否真正拥有他想要支付的0.1btc)的步骤P123-124(问题:简述比特币脚本的执行过程)
- 2.以太坊用于创建智能合约的交易,其主要字段内容是什么?
- 3.链码的生存周期?
- 第八章
- 1.简述8.3.2提到的身份保护技术P170(针对区块链数据的交易聚类分析攻击是一种威胁用户身份隐私的攻击方式,请列举几种本章提到的可以用于抵抗这种攻击的安全技术,并分别分析原因)
- 第九章
- 1.比特币的体系结构P182-P183(比特币系统中,全节点与钱包节点的区别是什么?分别有什么作用?)
- 第十章
- 1.以太坊系统的主要组件P229(问题:简述以太坊外部账户与合约账户的定义和异同点)
- 2.为了让交易能够更快地执行,交易发送者应该设置较高的燃料价格还是较低的燃料价格?为什么?P233
- 第十一章
- 1.Fabric具有那些类型的节点?分别具有什么功能?P270
- 2.什么是通道?其主要作用有哪些?P276
- 3.Hyperledger Fabric交易流程P277(问题:简述Fabric的交易流程)
- 画图题
- 第一章
- 1.分布式账本和中心式账本P3
- 2.典型区块链交易流程P12
- 第二章
- 1.Merkle树示例P58
- 2.Merkle树交易验证的路径P58
- 第三章
- 1.半中心化网络拓扑P63
- 第四章
- 1.区块链在三个因素之间的选择及对应策略P76
- 2.PBFT的步骤P94
- 第六章
- 1.锁定脚本和解锁脚本P122
- 2.Fabric中的链码P131
- 第八章
- 1.混合加密流程P163
- 2.零知识证明模型
- 单选题
- 练习1
- 1.默克尔树的一般形态是?
- 2.以下哪个选项一般不包括在区块头里?
- 3.区块链可以通俗地理解为?
- 4.区块链在数据共享方面的优势,下列哪个表述不正确?
- 5.以太坊属于什么类型的区块链?
- 6.关于双花攻击以下表述不正确的是?
- 7.通俗地说,( )指的是没有便携的方法去产生一种满足特殊要求的哈希值。
- 8.关于挖矿难度说法不正确的是?
- 9.区块链网络中的节点指的是?
- 10.公钥加密算法中,公钥和私钥是成对生成的,主要用途中说法错误的是?
- 11.比特币如何保证挖矿时间的恒定?
- 12.关于哈希函数的特点,不正确的是?
- 13.关于分布式网络,下列说法不正确的是?
- 14.以下不属于拜占庭类共识算法的是?
- 15.下列属于绝对一致性算法的共识算法是?
- 16.以下关于PBFT共识的特点不不正确的是?
- 练习2
- 1.智能合约概念是由谁提出的?
- 2.关于智能合约,以下说明错误的是?
- 3.智能合约使用了以下哪种技术保证合约结果全网一致?
- 4.比特币智能合约不可以实现什么场景要求?
- 5.关于比特币智能合约,以下说法正确的是?
- 6.创建智能合约时,合约代码放在哪个字段中?
- 7.创建智能合约的触发条件是?
- 练习3
- 1.针对哈希函数的穷举攻击,攻击的影响程度与( )有关。
- 2.关于gas以下哪个说法是错误的?
- 3.激励层中的自私挖矿攻击主要针对以下哪种共识机制?
- 4.激励层中的无利害攻击主要针对以下哪种共识机制?
- 5.著名的The DAO事件利用的是以下哪种攻击手段?
- 6.通道机制是以下哪种区块链系统提供的?
- 7.混币技术的目的是?
- 8.环签名去掉了群签名中的哪个角色?
- 9.聚合签名的主要目的是?
- 10.如何在以太坊上实现访问控制?
- 11.以下说法错误的是( )
- 12.变色龙哈希函数通过什么方式实现可编辑区块链?
- 多选题
- 练习1
- 1.区块链由多种核心技术综合形成,包括
- 2.Merkle树的主要作用包括?
- 3.区块链不可能三角指的是哪三角?
- 4.PBFT共识算法的核心是以下哪些协议?
- 练习2
- 1.智能合约具有什么特点?
- 2.比特币系统通过什么脚本实现转账交易?
- 3.以太坊智能合约账户具有什么项目?
- 4.以太坊支持的交易类型有哪些?
- 5.data字段在以下哪种情况下是必须有内容的?
- 练习3
- 1.以下哪些算法已被成功在短时间内找到碰撞?
- 2.以下哪种攻击属于侧信道攻击的一种?
- 3.P2P网络一般分为以下哪几种拓扑结构?
- 4.合约层的安全威胁主要出现在哪个阶段中?
- 5.混合加密是以下哪两种加密机制的混合?
- 6.安全多方计算的特点包括以下哪几点?
- 7.根据隐私保护技术所处数据流通环节的不同,差分隐私技术分为以下哪几类?
- 8.一般的零知识证明模型包含哪几个阶段?
- 9.以下哪些认证方式可用于身份认证协议?
简答题
第一章
1.区块链的概述(问题:区块链是通过哪些机制实现信任的?)
区块链是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的、一种全新的分布式基础架构和计算范式。
区块链技术巧妙地通过对等网络技术、共识算法、哈希算法、公钥算法、分布式账本、智能合约等技术的组合为解决网络的信任问题找到了较好的解决方法。
2.哈希函数的性质(问题:区块链为什么能够保证链上数据的不可篡改?)
构成区块及区块链的核心技术是杂凑函数。
哈希函数是将任意长度的消息压缩到某一固定长度的消息摘要的函数,也称为单向散列函数、杂凑函数、杂凑算法等,是密码学中重要的保证数据完整性的方法。
哈希函数具有单向性、抗碰撞性、可验证性等特点。
单向性是指已知函数H的输入x,容易求其输出H(x);反之,已知输出H(x),求输入x则非常困难。
抗碰撞性是指想找到输出相同的两个不同输入是非常困难的。
可验证性是指杂凑函数H(x)的输入发生任何一点变化,其输出都会发生明显的改变。
哈希函数性质的重要性:
1.哈希函数的这些性质保证了区块内容的无法篡改。如果修改了某个区块的内容,那么其哈希值就会发生变化。而哈希值包含在其子区块的区块头部,因此该子区块的值也会发生变化。以此类推,从修改的区块开始,区块链的后续所有区块的内容都会有所变化;
2.这种不可篡改性使得区块链式账本与传统账本的维护方法有显著不同,传统账本可以进行增删查改操作,而对区块只能增和查两个操作。在实际应用中,如果需要对区块链上记录的内容进行删除和修改,一般是通过在新增的区块中重新记录的方式。
…
3.区块链的特点(P18-P19有详细解释)(问题:区块链的主要特点有哪些?)
1.对等性:整个区块链网络采用无中心或弱中心的架构,采用分布式存储、传输、验证等方式。
2.开放性:在去中心的区块链系统中(常见于公有链),节点可以随时加入和退出区块链,系统具有最大限度的开放性。在私有链和联盟链中,其开放性体现在节点之间的数据共享。
3.可信性:区块链的可信性是由共识、杂凑、非对称密码技术、分布式记账等多种技术配合的结果。
4.可靠性:使用分布式高冗余的架构保障数据安全和可靠性,以增加系统存储空间和通信复杂度为代价。
5.功能性:智能合约的可编程性为上层应用提供灵活的开发空间,开源的区块链系统使其为各种应用提供适合的功能。
6.匿名性:公钥作为用户地址在一定程度上保护了用户的隐私,但并不完全。
4.燃料P27(问题:以太坊的燃料起什么作用?)
总结:用于代码运行计费,防止无限循环等故障。
第二章
1.对称加密算法和非对称加密算法P53(问题:在区块链中,哪些环节使用了非对称算法?)
对称加密算法又称单钥加密算法,即加解密过程中所使用的密钥是相同的,具有加解密速度快、效率高、占用空间小的特点。
非对称加密算法中有公钥和私钥两种密钥。公钥是公开的,不需要保密且他人可以获取,私钥一般通过随机数算法生成,由个人持有,必须妥善保管和注意保密。公钥和私钥是成双出现的,即每个公钥对应一个私钥。若用其中一个密钥加密数据,则只有对应的密钥才可以解密,反之亦然。
在区块链系统中,使用非对称加密算法用于用户标识、操作权限校验、数字资产地址的生成、资产所有权的标识和数字资产的流转等诸多功能。
2.非对称加密算法P52(在非对称加密算法中,公钥和私钥都需要保密吗?为什么?)
非对称加密算法中有公钥和私钥两种密钥。公钥是公开的,不需要保密且他人可以获取,私钥一般通过随机数算法生成,由个人持有,必须妥善保管和注意保密。公钥和私钥是成双出现的,即每个公钥对应一个私钥。若用其中一个密钥加密数据,则只有对应的密钥才可以解密,反之亦然。
3.Merkle树(P58-P59)(问题:简述用Merkle树进行区块链交易验证的过程及由此带来的好处。)
Merkle树的定义与性质:
Merkle (默克尔)树,是一种典型的二叉树结构,1979年由Ralph Merkle发明。
Merkle树由一个根节点、一组中间节点和一组叶节点组成。
叶节点包含存储数据或其哈希值,中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。
Merkle树的作用:
快速检验:用作快速归纳和校验大规模数据完整性,生成整个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径。
防止篡改:在一个完整的Merkle树中,底层(叶子节点)数据的任何变动,都会逐级向上传递到其父节点,一直到Merkle树的根节点使得根节点的哈希值发生变化。
Merkle树在区块链中的应用: P58最后一段
一个节点仅需下载区块头(80字节/区块),然后通过从一个满节点回溯一条小的Merkle路径就能认证一笔交易的存在,而不需要存储或者传输大量区块链区块中的所有交易。
4.RSA密码体制
RSA密码体制由美国麻省理工学院(MIT)的研究小组提出的,由3位作者姓氏的第一个字母命名。RSA密码是目前使用最广泛的公钥密码,其理论基础是数论中的下论判断:要求的到两个大素数(如大100位)的乘积在计算机上很容易实现,但要分解两个大素数的乘积在计算机上几乎不可能实现,即单向函数。
RSA算法由三部分构成:密钥生成算法、加密算法、解密算法
第三章
1.下面以Gnutella协议为例说明P2P网络中基于泛洪的资源搜索过程。Gnutella是一种分布式无结构的P2P网络通信协议,当Peer节点需要在网络中下载一个特定的文件时,需要查询拥有该文件的Peer节点的位置,查询步骤如下:P62(问题:简述P2P网络中基于泛洪的资源搜索过程)
1.生成一个查询请求,包含查询的文件名或者关键字,查询者将该请求发送给每个与自己直接相连的节点。
2.收到请求的节点检查自己的存储空间是否有请求的文件,如发现文件则响应请求与查询节点建立连接,否则将该查询转发给自己的邻居节点。
3.每个收到查询的节点重复这个过程,直到找到文件为止。
第四章
1.简述比特币的PoW机制中难题计算方式及如何进行难度调整P89
什么是PoW机制
PoW机制要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。具体来说,工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。
为什么比特币要用到PoW机制
比特币网络中任何一个节点,如果想生成一个新的区块并写入区块链吧,那么必须解出比特币网络的工作量证明的谜题。
谜题关键的三个要素是PoW函数、区块和难度值。
PoW函数是谜题的计算方式,区块决定了谜题的输入数据,难度值决定了所需的计算量。
PoW机制中难题计算方式(以比特币矿工解这道题工作量证明谜题的步骤)
总结如下:
1.生成Coinbase交易,并与其他所有准备打包进区块的交易组成交易列表,通过MerkleTree算法生成Merkle Root Hash
2.把Merkle Root Hash及其他相关字段组装成区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入
3.不停变更区块头中的随机数即Nonce的值,并对每次变更后的区块头做双重SHA-256运算(即SHA256(SHA256(Block_header)),将结果值与当前网络的目标值比较,如果小于目标值,那么解题成功,工作量证明完成。
难度的调整是在每个完整节点中独立自动发生的。这个公式总结如下:
新难度值=旧难度值*(过去2016个区块花费的时长/20160分钟)
2.PBFT流程的三阶段协议流程P95(问题:概述PBFT的主要工作流程,并简要分析为何PBFT的扩展性不佳?)
三阶段协议是PBFT算法的核心流程,用于解决系统的一致性问题,保证所有可信节点在给定状态和参数组的条件下,按照相同的顺序执行完请求后能够取得相同的状态。
三个阶段分为预备、准备、提交阶段
1.第一阶段:pre-prepare阶段:主节点将请求广播发送给其他备份节点
2.第二阶段:prepare阶段:所有备份节点将请求广播发送给其他节点,并收到2f个prepare认证;
3.第三阶段:commit阶段:所有节点将请求广播发送给其他节点,并收到2f+1个commit认证;
不适用于节点数量过大的区块链,扩展性差:
PBFT算法的计算效率依赖于参与协议的节点数量,由于每个副本节点都需要和其它节点进行P2P的共识同步,因此随着节点的增多,性能会下降的很快。
第六章
1.考察如例题矿工收到Bob的交易Tx2时,为验证交易的合法性(即确认Bob是否真正拥有他想要支付的0.1btc)的步骤P123-124(问题:简述比特币脚本的执行过程)
2.以太坊用于创建智能合约的交易,其主要字段内容是什么?
3.链码的生存周期?
1.安装:链码在编写完成后,需要部署在Fabric网络中的peer节点上,同时注明版本号,完成安装过程。
2.实例化:在peer节点上安装的链码需要经过实例化才能真正激活可用,实例化的过程包括链码编译、打包、封装docker容器镜像等步骤。
3.调用:实例化后的链码可以被用户在peer外部进行远程调用,充当用户与账本之间的桥梁,进行查询、写入等操作。调用包括invoke和Query查询。
4.升级:peer上的链码具有可升级的特点,可以把更新版本的链码通过install操作安装到当前运行链码的peer上。
第八章
1.简述8.3.2提到的身份保护技术P170(针对区块链数据的交易聚类分析攻击是一种威胁用户身份隐私的攻击方式,请列举几种本章提到的可以用于抵抗这种攻击的安全技术,并分别分析原因)
1.混币技术
混币的目的是割裂输入地址和输出地址之间的关系。混币可以让交易者快速、高效地与其他交易者的资金进行混合,在现有的交易账户和混币后的新账户之间建立一种随机的映射关系,从而实现完全匿名。
还包括中心化混币技术和去中心化混币技术
(1)中心化混币技术
用户只需要向混币服务提供商资产的转出、转入钱包地址与金额,交易就在混币服务提供商的数据库内进行处理。服务商会匹配不同的钱包地址和不同的金额,并往地址中发送随机数量的比特币,直到指定地址上达到了发送方请求的总金额。
优点:用户无需担心交易的复杂性,只需输入比特币地址,加入混币即可。
缺点:虽然操作简单,但是由于所有交易都是中心化服务器处理的,这会给用户带来重大的风险。
(2)去中心化混币技术
不同的用户组成一个交易所并使用协议进行有效地混币。一旦用户间形成交易所,处理混合比特币就不需要中间人了。
优点:不需要中间人,没有中间机构监管这些交易。
缺点:这种模式的缺点是有时很难找到愿意组成交易所的人,存在恶意渗入攻击等问题。
2.环签名
环签名方案由群签名演化而来,门罗币是应用环签名的典型代表,帮助门罗币实现了交易的隐私性:通过区块链系统中无关节点无法追查交易的发送方,当其它节点验证交易时,只能确定签名是诸多公钥中的一个,却无从定位到哪个公钥才是具体的发送方。
3.零知识证明
证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某一论断是正确的。以货币交易为例,就是在不告诉他人付款人、收款人是谁,也不告诉他人金额多少的前提下,设法证明这笔交易是合法的。
(1)交互式零知识证明
交互式零知识证明由证明者和验证者经过多轮的挑战、证明和验证实现,验证者通过进行多轮挑战,直到认可该证明,但验证者无法通过承诺和每轮挑战的回应得到任何关于答案的信息。(多轮的过程使计算开销较大,而且需要证明者和验证者同时在线。只能信任一个验证者,且该证明只在某个时刻有效。)
(2)非交互式零知识证明
在非交互式零知识证明中,证明者只需要发送一次数据供验证者验证即可,无需多轮交互,也无需证明者长期在线等待挑战。(一次证明可被多个验证者验证;hash函数的随机性保证了挑战包含随机数的随机性;证明者不可能先知道挑战再更改承诺)
第九章
1.比特币的体系结构P182-P183(比特币系统中,全节点与钱包节点的区别是什么?分别有什么作用?)
1.网络层
P2P网络:比特币系统是不存在真正服务器节点,所有节点之间都是对等的。
种子节点:但是为保证比特币系统在全球能够稳定运行,在比特币系统存在全球固定的种子节点,这几个节点已经硬编码在比特币的核心源码中。
seed.bitcoin.sipa.be
dnsseed.bluematt.me
dnsseed.bitcoin.dashjr.org
seed.bitcoinstats.com
seed.bitcoin.jonasschnelli.ch
seed.btc.petertodd.org
seed.bitcoin.sprovoost.nl
dnsseed.emzy.de
seed.bitcoin.wiz.biz
2.数据层
比特币的全部数据以交易的方式存储在区块链中,每个交易由表明交易来源的交易输入和表明交易去向的交易输出组成
交易输入和交易输出都可以有多项,表示一次交易可以将先前多个账户中的比特币合并后转给另外多个账户。所有交易通过输入与输出链接在一起,使得每一笔交易都可追溯。
未经使用交易的输出称之为UTXO(Unspent Transaction Outputs)可以被新的交易引用作为其合法的输入。
比特币使用了Merkle 树确保数据的完整性:防篡改、易验证。
比特币采用了非对称椭圆曲线加密算法(Elliptic Curve Cryptography,ECC),用户自己保留私钥,对自己发出的交易进行签名确认,并公开公钥。
比特币采用公钥\私钥作为交易的账号,使用该算法对交易进行数字签名,签名后的交易确保发生后不会被任何人修改。
3.共识层
比特币系统的共识算法采用基于工作量证明算法( Proof of Work, PoW)的机制来实现共识,该机制最早于 1998 年在 Bmoney 设计中提出。
POW通过计算来猜测一个数值(nonce),和本区块上特定数据合并后,经过Hash(报文摘要)运算后,如果Hash值满足一定的条件,从而获得创建区块需求权限的共识,并获得比特币奖励,这就是所谓挖矿。
4.接口应用层
应用层通过不同的节点类型提供的各种接口获得比特币的相关信息
**全节点:**维持包含全部交易信息的完整区块链节点,为完整区块链节点,保存有全部的交易数据。
**钱包节点:**为用户提供交互界面,不同平台有不同的钱包。用户通过钱包进行交易和查询自己的比特币数量,钱包是用户操作比特币的接口。
第十章
1.以太坊系统的主要组件P229(问题:简述以太坊外部账户与合约账户的定义和异同点)
1.账户
以太坊的全球“共享状态”是由很多小的对象(账户)组成,这些账户通过消息传递框架实现彼此交互。
每个账户都有一个与之关联的状态以及一个20字节的地址。以太坊中的地址是160位比特的标识符,用于标识任何账户。
有两种类型的账户:外部账户(由私钥控制,没有与之关联的代码)和合约账户(由合约代码控制,有与之关联的代码)。
异同点:
外部账户:转账、激活智能合约;
合约账户:响应外部账户或其他合约账户的交易触发合约
2.账户状态
Nonce随机数:如果该账户是外部账户,这个数代表从这个账户地址发出来的交易数。如果该账户是合约账户,则该nonce是该账户创建的合约数,每创建一次会加1。
Balance账户余额:该地址拥有的Wei数,每个Ether有10^18Wei。
StorageRoot:Merkle Patricia树的根节点的哈希值。Merkle tree对该账户的存储内容的哈希进行编码,默认情况下为空。
CodeHash:该账户EVM代码的哈希。对于合约账户,就是被Hash的代码并作为codeHash保存。对于外部账户而言,Codehash字段是空字符串的哈希值。
3.世界状态
由账户地址和账户状态的一个映射组成。保存所有的账户状态,全网只有唯一一棵状态树。
(1)Merkle树:
根哈希保证整棵树的正确性
只提供一个从根到叶的分支即可证明对应交易确实在树里
(2)前缀树:利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较,查询效率更高
(3)Patricia树:压缩前缀树,比前缀树更节省空间。
(4)Merkle树+Patricia树:Merkle Patricia树,不但方便验证,还方便插入新数据。
全节点:包含了整个链,从创世纪块到当前块,执行其中包含的所有交易。便于访问历史区块和验证交易。
轻节点:仅仅下载链的头,从创世纪块到当前块的头,不执行任何的交易或检索任何相关联的状态。只要保存了区块头,可以保证数据完整性。
Merkle证明的组成如下:
1)一块需要验证的数据。
2)树的根节点Hash。
3)一个“分支”(从chunk到根这个路径上所有的hash值)。
任何可以读取证明的人都可以验证分支的hash是连贯的。
4.Gas和支付:在以太坊网络上交易而消耗的计算都会产生费用,以“gas”计算。
交易发送人(转账人)在交易发送前设置以下2项:(参考第四讲 智能合约层 46页)
gasLimit:愿意为交易支付的最大Gas
gasPrice:每单位的Gas愿意支付的价格水平
发送者没有提供足够的gas来执行交易,那么交易执行就会出现“gas不足”然后被认为是无效的。
在这种情况下,交易处理就会被终止以及所有已改变的状态将会被恢复,最后我们就又回到了交易之前的状态。(!不返回任何gas给送者)
交易发送人愿意支付的gas价格越高 (参考第四讲 智能合约层 46页)
1)矿工从交易中获得价值越大
2)矿工会选择价格高的交易
5 交易和消息:以太坊是基于交易的状态机,发生在不同账户之间的交易推动着以太坊的全球状态从一个状态转换到另外一个状态。两类交易:消息调用和合约创建
所有类型的交易均包含以下八部分:
v,r,s:用于生成签名,该签名可以标识交易的发送人。
Init:仅在合约创建交易存在,用来初始化新的合约账户。Init只执行一次,然后被抛弃。首次运行init时,它会返回账户代码的正文,这段代码与合约账户产生永久关联关系。
数据:仅用于消息调用的可选字段。它是指消息调用的输入数据(即参数)。比如,如果智能合约充当域名注册的服务,对合约的调用可能需要输入字段如域名或IP地址。
6 区块:将交易打包后进行持久化存储
7 执行交易:将交易打包后进行持久化存储
2.为了让交易能够更快地执行,交易发送者应该设置较高的燃料价格还是较低的燃料价格?为什么?P233
发送者没有提供足够的gas来执行交易,那么交易执行就会出现“gas不足”然后被认为是无效的。在这种情况下,交易处理就会被终止以及所有已改变的状态将会被恢复,最后我们就又回到了交易之前的状态。并且交易发送人愿意支付的gas价格越高 ,矿工从交易中获得价值大。所以想要交易能够更快地执行,交易发送者应该设置较高的燃料价格。
第十一章
1.Fabric具有那些类型的节点?分别具有什么功能?P270
从0.6版本到1.0版本,再到2.0版本,改进chaincode生命周期管理、安全和数据隐私
节点是区块链的通信实体,Fabric节点有三种。
1.客户端节点:创建交易并提交交易到背书节点中
2.Peer节点:接收客户端的交易请求,提交交易到排序节点中,Peer节点之间通过gRPC消息进行通信;按照实际功能,可以分为背书节点、记账节点、锚节点、主节点等。
3.排序节点:在区块链网络中的作用是原子广播和全排序,即对全网所有交易进行排序后打包。
2.什么是通道?其主要作用有哪些?P276
通道是由成员(组织)、组织锚节点、账本、链码应用程序和排序服务节点定义。
满足数据的安全性和访问控制要求。
Fabric每个交易都是在一个通道上执行的,每一方必须经过身份验证和授权,才能在该通道上进行交易。加入通道的每个Peer节点都有其自己的身份,有MSP(成员服务提供者)提供。
3.Hyperledger Fabric交易流程P277(问题:简述Fabric的交易流程)
画图题
第一章
1.分布式账本和中心式账本P3
2.典型区块链交易流程P12
第二章
1.Merkle树示例P58
2.Merkle树交易验证的路径P58
如图2-7所示,判断HK(深色填充)代表的交易是否存在,只需要生成一个仅有4个哈希值的Merkle路径。该路径有4个哈希值(浅色填充)HL、HL1、HMNOP、HABCDEFGH