
?!区区!?-选择填空
?!区区!?
阅读说明
一共有两个版本,上面是重点词汇加粗版本,下面是重点词汇填空版本。
你可以选择你喜欢的版本来阅读。
第一章绪论
区块链概念及特征
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证分布式账本的不可篡改和不可伪造。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链利用对等网络模型,对各参与节点进行组网,并在各对等节点间分配任务和共享资源。
区块链技术的组成部分
向区块链写入数据的事务请求需附有发起方私钥签名,该签名随事务请求在网络参与节点间广播并进行验证,因此事务请求是不可伪造和防篡改的。同时,区块链采用带有时间戳存储结构,具有极强的可追溯性和可验证性。
使用了共识机制后,所有的节点就对接收到的区块数据有了合法性判断的一致标准,从而也能构建出对其他节点的信任。区块链技术中的共识机制是要通过设计算法来实现的。
区块链技术演化发展
区块链1.0
- 是可编程的数字货币。
- 主要应用领域为“加密数字货币”,包括货币的发行机制、分配机制、币值调节机制等。
区块链2.0
- 是可编程的智能合约。
- 主要应用领域为智能合约,例如:股权、债券合约:证券与金融合约;保险合约:权利登记、转让;博彩;防伪;物联网等。
区块链3.0
- 是可编程的社会治理。主要应用在社会治理领域,
- 例如供应链自动化管理;自动化采购;智能化物联网应用;产权登记:虚拟资产兑换、转移等。
矿工的工作之一为记账——即与若干个矿工进行算力竞争,获胜者就要将内存池中的交易数据打包到区块中,并添加到区块链账本上,然后将新的区块广播给其他用户。
区块链部署形式
以太坊的内部货币是以太币。
公有链通过密码学及经济激励,保障在互不信任的网络环境中达成共识,实现完全去中心化的信用机制。
当前公有链中一般采用PoW或PoS共识算法。
一般认为,比特币中的区块经过6个确认后才是足够安全的,这大概需要1h,对于大多数企业应用需求来说根本无法满足。
公有链面临的安全风险:51%攻击。
联盟链只针对特定某个群体的成员和有限的第三方,内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过间记账过程。
联盟链中一般采用PBFT算法、Raft算法等共识算法。
区块链架构模式
比特市系统中每个区块发行比特币的数量是随着时间阶梯性递减的。
比特市交易过程中会产生手续费,默认手续费是万分之一个比特币。
第二章密码算法
密码学概述
从明文到密文的变换称为加密,从密文到明文的变换称为解密。
加密和解密都是在密钥的控制下进行的。
非对称密码体制存在密钥传输的过程中存在中间人攻击问题
公钥主要用于加密数据和验证数字签名。
私钥主要用于解密通过公钥加密的数据和生成数字签名。
非对称密码体制解决中间人攻击问题的方法是引入证书
Hash算法也称为哈希算法或散列算法,它主要是将任意长度的明文字符串换算为二进制的形式,再将这些二进制的内容计算得到固定长度的二进制密文串(也就是Hash散列值或简称Hash值)。它是一个从明文到密文的不可逆映射。
鉴于目前MD5和SHA-1已经被破解,所以出于安全性的考虑,一般推荐便用SHA-256或能够输出更长Hash值的算法(如SHA-512)。
SHA-256的工作过程分为以下主要步骤:
填充位:首先,信息长度会被扩充至位数为512的倍数,这样可以保证信息可以被块进行处理。
创建信息摘要:对每一个数据块,SHA-256会进行64轮的运算,使用了一系列复杂的数学函数和常数。
填充:在报文末尾进行填充,使报文长度在对512取模以后的余数是448。
需要注意的是,信息必须进行填充,也就是说,即使长度已经满足对512取模后余数是448,补位也必须要进行,这时要填充512个比特。因此,填充是至少补一位,最多补512位。
SHA-256用一个64位的数据来表示原始消息的长度。
AES算法
AES为分组加密法,把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文,在AES标准规范中,分组长度只能是128位。
128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。AES算法通过密钥编排函数来把密钥矩阵扩展成一个44个字组成的序列。
RSA的基础是数论中的欧拉定理,它的安全性依赖于分解两个大素数乘积的巨大难度。
编码与解码-BASE58CHECK编码
Base58Check编码增加了错误校验码来检查数据在传输过程中是否出现错误。
第三章区块链数据结构
区块链结构中后一个区块的哈希指针往往只对前一个区块头的数据做哈希计算,而为了保持区块内部的交易数据不被篡改。
SPV是中本聪在比特币白皮书中提出的一种机制,其核心目标是让轻量级客户端无需下载和验证整个区块链,也能高效地验证一笔交易是否已被网络确认。SPV节点只下载和存储所有区块头,而不存储完整的交易列表。
SPV的核心原理的Merkle证明:要证明一笔交易属于该区块,只需提供该交易在树中到根节点路径上的兄弟哈希。
数据存储在区块中,区块链中的第一个区块被称为创世区块。
难度值字段定义的是为了使区块有效,矿工节点需要执行的工作量证明算法的难度。“难度位”是难度目标值的实际标识方式,其占用的存储空间是4bytes,在区块中编码及存储时采用的都是指数/系数的格式。
比特币挖矿难度的调整是在每个挖矿节点上独立完成的。每当2016个区块被挖出后,挖矿难度就会进行一轮调整。
以太坊的区块头结构做了较大改进,增加了一些内容,最主要的就是存储了交易树、状态树和收据树的默克尔树根,这使交易数据的查询变得更加高效和便捷。
以太坊中有两类账户,即外部拥有账户和合约账户。
第四章区块链与P2P网络
覆盖网络中的无结构化覆盖网络通常基于随机图来建立。
广播式的路由算法主要包括洪泛算法和无控制洪泛算法。
第一章绪论
区块链概念及特征
狭义来讲,区块链是一种按照 时间顺序 将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证分布式账本的不可篡改和不可伪造。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用 密码学的方式 保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链利用 对等网络模型 ,对各参与节点进行组网,并在各对等节点间分配任务和共享资源。
区块链技术的组成部分
向区块链写入数据的事务请求需附有发起方私钥签名,该签名随事务请求在网络参与节点间广播并进行验证,因此事务请求是不可伪造和防篡改的。同时,区块链采用带有 时间戳 存储结构,具有极强的 可追溯性 和 可验证性 。
使用了共识机制后,所有的节点就对接收到的区块数据有了合法性判断的一致标准,从而也能构建出对其他节点的信任。区块链技术中的共识机制是要通过 设计算法 来实现的。
区块链技术演化发展
区块链1.0
- 是可编程的 数字货币 。
- 主要应用领域为 加密数字货币 ,包括货币的发行机制、分配机制、币值调节机制等。
区块链2.0
- 是可编程的 智能合约 。
- 主要应用领域为 智能合约 ,例如:股权、债券合约:证券与金融合约;保险合约:权利登记、转让;博彩;防伪;物联网等。
区块链3.0
- 是可编程的 社会治理 。主要应用在 社会治理领域 ,
- 例如供应链自动化管理;自动化采购;智能化物联网应用;产权登记:虚拟资产兑换、转移等。
矿工的工作之一为记账——即与若干个矿工进行算力竞争,获胜者就要将 内存池 中的交易数据打包到区块中,并添加到区块链账本上,然后将新的区块广播给其他用户。
区块链部署形式
以太坊的内部货币是 以太币 。
公有链通过 密码学 及 经济激励 ,保障在互不信任的网络环境中达成共识,实现完全去中心化的信用机制。
当前公有链中一般采用 PoW 或 PoS 共识算法。
一般认为,比特币中的区块经过 6个 确认后才是足够安全的,这大概需要1h,对于大多数企业应用需求来说根本无法满足。
公有链面临的安全风险: 51%攻击 。
联盟链只针对特定某个群体的成员和有限的第三方, 内部指定多个预选的节点为记账人 ,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过间记账过程。
联盟链中一般采用 PBFT算法 、 Raft算法 等共识算法。
区块链架构模式
比特市系统中每个区块发行比特币的数量是随着时间 阶梯性递减 的。
比特市交易过程中会产生 手续费 ,默认手续费是 万分之一个比特币 。
第二章密码算法
密码学概述
从明文到密文的变换称为 加密 ,从密文到明文的变换称为 解密 。
加密和解密都是在 密钥 的控制下进行的。
非对称密码体制存在密钥传输的过程中存在 中间人攻击 问题
公钥主要用于 加密数据 和 验证数字签名 。
私钥主要用于 解密通过公钥加密的数据 和 生成数字签名 。
非对称密码体制解决 中间人攻击问题 的方法是 引入证书
Hash算法也称为哈希算法或散列算法,它主要是将任意长度的明文字符串换算为二进制的形式,再将这些二进制的内容计算得到 固定长度的二进制密文串 (也就是Hash散列值或简称Hash值)。它是一个从明文到密文的不可逆映射。
鉴于目前MD5和SHA-1已经被破解,所以出于 安全性 的考虑,一般推荐便用 SHA-256 或 能够输出更长Hash值的算法 (如SHA-512)。
SHA-256的工作过程分为以下主要步骤:
填充位:首先,信息长度会被扩充至位数为 512的倍数 ,这样可以保证信息可以被块进行处理。
创建信息摘要:对每一个数据块,SHA-256会进行 64轮 的运算,使用了一系列复杂的数学函数和常数。
填充:在报文末尾进行填充,使报文长度在对512取模以后的余数是 448 。
需要注意的是,信息必须进行填充,也就是说,即使长度已经满足对512取模后余数是448,补位也必须要进行,这时要填充512个比特。因此,填充是至少补 一位 ,最多补 512位 。
SHA-256用一个 64位 的数据来表示原始消息的长度。
AES算法
AES为分组加密法,把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文,在AES标准规范中,分组长度只能是 128位 。
128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。AES算法通过 密钥编排函数 来把密钥矩阵扩展成一个44个字组成的序列。
RSA的基础是数论中的欧拉定理,它的安全性依赖于 分解两个大素数乘积的巨大难度 。
编码与解码-BASE58CHECK编码
Base58Check编码增加了 错误校验码 来检查数据在传输过程中是否出现错误。
第三章区块链数据结构
区块链结构中后一个区块的哈希指针往往只对 前一个区块头的数据 做哈希计算,而为了保持区块内部的交易数据不被篡改。
SPV是中本聪在比特币白皮书中提出的一种机制,其核心目标是让轻量级客户端无需下载和验证整个区块链,也能高效地验证一笔交易是否已被网络确认。SPV节点只下载和存储 所有区块头 ,而不存储完整的交易列表。
SPV的核心原理的Merkle证明:要证明一笔交易属于该区块,只需提供该交易在 树中到根节点路径上的兄弟哈希 。
数据存储在区块中,区块链中的第一个区块被称为 创世区块 。
难度值字段定义的是为了使区块有效,矿工节点需要执行的工作量证明算法的难度。“难度位”是难度目标值的实际标识方式,其占用的存储空间是4bytes,在区块中编码及存储时采用的都是 指数/系数 的格式。
比特币挖矿难度的调整是在每个挖矿节点上独立完成的。每当 2016 个区块被挖出后,挖矿难度就会进行一轮调整。
以太坊的区块头结构做了较大改进,增加了一些内容,最主要的就是存储了 交易树 、 状态树 和 收据树 的默克尔树根,这使交易数据的查询变得更加高效和便捷。
以太坊中有两类账户,即 外部拥有账户 和 合约账户 。
第四章区块链与P2P网络
覆盖网络中的无结构化覆盖网络通常基于 随机图 来建立。
广播式的路由算法主要包括 洪泛算法 和 无控制洪泛算法 。