当前位置:主页 > 查看内容

《区块链 基础知识25讲》笔记

发布时间:2021-06-04 00:00| 位朋友查看

简介:第一部分 区块链术语与技术基础 第一讲 理解分层的概念 软件系统可以通过如下划分来进一步分析应用层与实现层功能性特征与非功能性特征。 应用层关注用户的需求实现层则关注如何满足这些需求。 功能性特征关注实现了什么非功能性特征关注这些东西怎么实现。……

第一部分 区块链术语与技术基础

第一讲 理解分层的概念

  • 软件系统可以通过如下划分来进一步分析:应用层与实现层;功能性特征与非功能性特征。
  • 应用层关注用户的需求,实现层则关注如何满足这些需求。
  • 功能性特征关注实现了什么,非功能性特征关注这些东西怎么实现。
  • 大多数用户关注软件系统应用层的功能性特征,而很少关注其中的非功能性特征,特别是实现层的非功能性特征。
  • 对于任何软件系统而言,完备性都是一个很重要的非功能性特征,它包括三个方面:数据完备性;行为完备性;安全性。
  • 大多数软件错误,比如数据丢失,或被陌生人访问了用户数据,都是系统缺乏完备性导致的。

第二讲 纵观全局

  • 软件系统的架构决定了其中的节点计算机如何被组织,以及如何与其他计算机连接。
  • 中心化和去中心化的软件系统可以看系统架构的南北极。
  • 分布式系统由许多独立的计算机组成,它们通过使用通信介质相互协作,以实现特定的目标,且没有任何计算机能控制整个系统(简单的判定条件)。
  • 根据经验,可以指出只要有一个单一的组件可能导致整个系统崩溃,那么不管系统的架构多么复杂,它都不是去中心化的。
  • 区块链是去中心化软件系统实现层的一部分。
  • 区块链的意义在于确保去中心化软件中一个特殊的非功能性特征:实现并维护系统的完备性。

第三讲 认识去中心化的潜力

  • 点对点系统由计算机组成,这些计算机将计算资源直接开放给系统中的其他成员。
  • 点对点系统的优势是它们允许成员不通过中间人直接进行交互。
  • 使用点对点系统取代中间人能够加快信息的处理速度,降低成本。
  • 点对点系统可以是中心化的,也可以是完全去中心化的。
  • 完全去中心化的点对点系统组建了一个成员完全平等的网络,其成员可以不通过中心化的协调直接进行两两间的交互。
  • Napster通过它的文件共享系统将传统的音乐产业带入了新时代,展现了点对点系统的强大力量。
  • 任何虚拟资产的生产者和消费者之间充当中间人的公司都很容易被点对点系统取代。
  • 金融系统中的很大一部分公司是在资产的提供者和消费者之间充当一个简单的中间人角色。因此,数字化和点对点系统可能会像Napster重塑音乐产业一样重塑金融行业
  • 随着数字化的发展,越来越多的虚拟化商品和服务将受益于点对点系统的效率提升。
  • 区块链能够为完全去中心化系统的实现和维护提供完备性,而完全去中心化的点对点系统有能力改变所有有中间商参与的行业。

第二部分 为什么这个世界需要区块链

第四讲 发现核心问题

  • 完备性与信任是点对点系统设计者应该主要考虑的事情。
  • 如果人们信任一个点对点系统,就会加入进来并持续作出贡献;而如果从系统中得到的正确反馈持续得到保证,则会进一步加强这种信任感。
  • 一旦人们对一个点对点系统失去信任,他们会放弃它,从而最后导致系统的终结。
  • 点对点系统完备性的主要威胁是:技术性故障;恶意节点。
  • 在点对点系统中实现完备性取决于:对节点数量的了解;对节点可信度的了解。
  • 对于由未知信任度的陌生节点组成的完全去中心化点对点系统而言,区块链解决的核心问题就是实现并确保系统的完备性。

第五讲 消除术语的歧义

  • 区块链这一术语是多义的,在不同的语境中对于不同的人,它可代表不同的含义。
  • 区块链可以指代:一种数据结构;一种算法;一种完整的技术方案;一类完全去中心化的点对点系统。
  • 管理和区分所有权是区块链一个极好的应用场景,但并不是唯一的一个。
  • 区块链是一个完全分布式的点对点账本系统,其利用一个特殊算法实现对区块内信息生成顺序的协调,并使用加密技术对区块数据进行连接,从而确保了系统的完备性。

第六讲 理解所有权的本质

  • 所有权证明需要三个要素:对所有者的证明;对事物被拥有的证明;提供一个所有者和事物之间的连接。
  • 可以使用身份证、出生证明和驾驶证来识别所有者。可以使用序列号、生产日期、生产证书或详细的对象描述来识别特定的商品。
  • 所有者和物品之间的关系可以保留在账本中,与法庭中的证人起着相同的作用。
  • 只有一个账本是有风险的,因为它可能被损坏,或伪造。在这种情况下,账本不再是证明所有权最值得信赖的信息来源。可以利用一组独立的账本而不是仅使用一个中央账本来记录所有权,并使用大多数账本都认可的结果来对所有权进行证明。
  • 可以通过使用区块链数据结构来创建基于完全去中心化系统的账本。每个节点上的区块链数据表示一个账本,并由运行该节点的计算机来维护。区块链算法负责让各个节点账本内的所有权状态同步到一个一致的账本。
  • 完全去中心化点对点账本系统的完备性,是其进行正确的所有权证明并确保只有合法所有人才能够进行资产转移的坚实基础。

第七讲 双花问题

  • 双花这个术语有多种含义,在不同语境下具有不同的含义。
  • 双花可以指代:复制数字资产引起的问题;在去中心化点对点系统中可能存在的问题;威胁去中心化点对点系统的一个例子。
  • 在本书中,双花用来指代对完全去中心化点对点账本系统的一个实际威胁。
  • 区块链技术是一种解决双花问题的手段。

第三部分 区块链如何工作

第八讲 设计区块链

  • 为了设计一个基于完全去中心化的点对点帐本系统,需要确保完成以下的任务。
  1. 描述所有权。
  2. 保护交易权。
  3. 存储交易数据。
  4. 准备好在不可信环境中可分发的账本。
  5. 构建一个分发账本的机制。
  6. 向所有账本添加并验证新的交易记录。
  7. 确定能够描述真相的账本。

第九讲 记录所有权

  • 描述一笔所有权转让的交易时,需要交易数据提供以下信息。
  1. 原所有权拥有者的账户标识符。
  2. 交易目标账户的标识符。
  3. 要交易的资产数量。
  4. 交易完成的时间。
  5. 支付给系统的费用。
  6. 证明所有权拥有者的确同意进行交易。
  • 交易数据的完整历史记录是一个审计线索,可以让人们获得与证明所有权相关的证据。
  • 任何不属于该历史记录的交易都被视为没有发生。
  • 通过将交易数据添加到交易数据的历史记录中,并允许其影响汇总的交易数据来执行交易。
  • 必须保留交易数据添加到历史交易记录中的顺序,以便在汇总这些数据时产生相同的结果。
  • 维护完备性,只有满足了以下三个条件的交易数据才能够被添加到区块链数据结构中。
  1. 形式正确性(正确的格式)。
  2. 语义正确性(意义及预期结果合理)。
  3. 授权正确性(只有拥有账户所有权的人,才可以通过区块链触发一笔交易)。

第十讲 哈希算法

  • 无论输入数据多大,哈希算法都可以将任意类型的输入数据转变为固定长度的哈希值。
  • 多种不同的哈希算法对同一段输入数据可以产生不同长度的哈希值。
  • 加密哈希算法是一类重要的可用来创建任意类型数据块的数字指纹的工具。
  • 加密哈希算法显示出以下特征。
  1. 能够为任意类型的数据快速创建哈希值。
  2. 确定性。
  3. 伪随机。
  4. 单向函数。
  5. 防碰撞(不易发生冲突,或者是有较好的冲突解决函数)。
  • 可以通过以下模式来对数据应用哈希算法。
  1. 独立哈希。
  2. 重复哈希。
  3. 组合哈希。
  4. 顺序哈希。
  5. 分层哈希。

第十一讲 哈希在现实世界的应用

  • 哈希引用有以下用途。
  1. 对比数据。
  2. 检测数据是否发生改变。
  3. 及时发现数据的变化。
  4. 存储大量数据,并及时检测到数据的更改。
  5. 创造出需要大量计算机运算的任务(哈希难题)。
  • 在区块链中,哈希难题的解答过程常被称为工作量证明。

第十二讲 确认并保护用户账号的安全

  • 加密学可以用来保护数据安全,防止未经授权的人获取数据。
  • 主要的加密行为包括:
  1. 加密:使用密钥将数据存为加密文档。
  2. 解密:使用对应的密钥,把加密文档还原成原数据。
  • 非对称加密中有两个互补的密钥,使用其中一个把数据加密成文档后,只能使用与之相对应的另一个密钥进行解密。
  • 现实生活中使用非对称加密技术时,这些密钥被称之为公钥和私钥。公钥是人人可见的,私钥是保密的。
  • 有两个使用公钥和私钥的经典案例:
  1. 任何使用公钥加密的数据,只能用与之对应的私钥进行解密。公钥相当于大家的邮箱,人人都可向这一邮箱发送邮件,但只有邮箱的主人才能读取邮箱内的邮件。
  2. 数据的所有者使用私钥加密数据,任何拥有对应公钥的人都可以对加密后的数据进行加密,并读取其中信息。这就相当于一个证明作者身份的公告栏。
  • 区块链使用非对称加密技术,主要为了实现以下两个目标:
  1. 确认账户:用户的账户可看作公钥。
  2. 授权交易:账户的拥有者使用对应的私钥创建一笔交易。人们使用对应的公钥可以确认这笔交易是由私钥拥有者创建的。

第十三讲 交易授权

  • 文件上的手写签名说明了签名人同意所签署文件中的内容。
  • 手写签名的有效性是基于笔迹的唯一性。
  • 数字签名等同于手写签名。
  • 数字签名的三个主要元素:
  1. 创建数字签名。
  2. 使用数字签名验证信息。
  3. 使用数字签名识别伪造的问候语。
  • 数字签名有以下两个用途:
  1. 识别其独一无二的签署人。
  2. 证明签署人同意文件中的内容,并授权执行。
  • 区块链中的数字签名可以追溯到一个特定私钥授权了一笔特定的交易。

第十四讲 存储交易数据

  • 区块链数据结构是一种特殊的数据结构,它由被称为区块的有序单元组成。
  • 区块链数据结构中的每个区块,都由一个区块头和一个包含交易数据的默克尔树组成。
  • 区块链数据结构由两个主要的组成部分:一个有序的区块头组成的链和默克尔树形式保存的交易数据。
  • 你可以将有序的区块头构成的链想象为一张张老式的图书馆借阅卡,并且这些借阅卡是按照添加到图书馆中的先后顺序进行排序的。
  • 让每个区块头引用其前一个区块头。
  • 区块链数据结构中的每一个区块头都有其唯一的哈希引用。
  • 对特定交易数据的哈希引用,通常是通过对保存特定交易数据的默克尔树的根进行引用实现的。

第十五讲 区块链的数据存储

  • 以下是把新的交易数据添加到区块链数据结构上的步骤。
  1. 创建一个包含所有新交易数据的默克尔树。
  2. 创建一个包含上个区块头的哈希引用与新交易数据的默克尔树的根的新区块头。
  3. 创建新区块头的哈希引用。
  • 想要改变区块链上一个区块内的交易数据,就要从需要改动的地方向后依次改动哈希引用,一直到修改完整条区块链上最新区块中的哈希引用为止。
  • 改变区块链中的数据可谓牵一发而动全身,故区块链对于任何修改都非常敏感。
  • 任何对区块链中数据或大或小的修改都会导致整个数据结构的不一致,所以对数据的修改很容易检测出来。
  • 改变区块链上的数据是一个有针对性且复杂的过程。
  • 区块链数据结构对数据修改的高敏感度是哈希引用这一特征决定的。

第十六讲 保护数据的安全

  • 通过解决哈希难题,向区块链数据结构中添加新区块的活动,也被称作挖矿。
  • 区块链将交易数据存储在一个对修改敏感的数据结构中,从而保护历史交易记录免受操纵及伪造。
  • 通过以下两个方法确保历史交易记录的不可变性。
  1. 将交易数据存储在对修改极为敏感的区块链数据结构中,当发生修改时就要从引发修改的点开始依次重写区块数据,一直到整条链末端。
  2. 哈希难题对每个区块头都是唯一的,这取决于其独特的内容。
  • 当区块链上的数据发生变化时,就需要重写发生变化之后的所有区块,而这样做的成本会使得修改历史交易记录变得不那么有吸引力。
  • 在区块链数据结构中,区块头的每次写入或重写都需要解决哈希难题,这就使区块链数据结构成为一个仅可添加新数据的结构。
  • 设计一条区块链时所面临的挑战就在于确定恰当的哈希难题的难度等级。随着技术进步,可能需要以一种动态的方式来确定难度等级。
  • 区块头至少包含以下数据:
  1. 前一个区块头的哈希引用。
  2. 包含交易数据的默克尔树的根。
  3. 哈希难题的难度等级。
  4. 开始解决哈希难题的时间(时间戳)。
  5. 解决哈希难题的随机数(区块头的验证规则使用)。

第十七讲 点对点系统中数据的存储与分发

  • 分布式点对点系统中的计算机通过互联网可以进行相互沟通。
  • 由于互联网已经实现全面普及,故通过互联网连接独立节点来创建一个分布式点对点网络变得越来越具有吸引力。
  • 一个使用互联网作为沟通媒介的点对点系统具有以下特点。
  1. 计算机通过互联网相连接。
  2. 每台计算机都能通过独特的地址进行辨别。
  3. 每台计算机都能在任意时间与系统断开或重新建立连接。
  4. 每台计算机都能独立维护与其保持连接的一系列对等节点。
  5. 节点之间相互沟通收到的信息。
  6. 节点之间完成信息传递,是通过各自持有的独特的地址实现的。
  • 由于网络中存在敌对方,节点之间的沟通具有以下特点。
  1. 无法保证信息能够成功到达特定节点,可能会出现信息丢失的情况。
  2. 信息可能被重复传递。
  3. 信息到达的顺序可能不正确。
  • 区块链中的节点通过以下方式在有敌对方存在的不可信网络中进行沟通。
  1. 信息通过类似人们闲聊的方式进行传递。每个接收到信息的节点都会把它传递给能与其沟通的对等节点,而对等节点也会以同样的方式来处理接收到的信息。
  2. 通过哈希值来检查交易数据或区块是否重复,如有,就进行剔除。
  3. 每个节点都能对信息进行排序,因为交易数据和区块头中都包含时间戳。
  • 点对点系统中计算机之间的沟通存在以下目的。
  1. 确保现有连接有效。
  2. 建立新的连接。
  3. 分发新的信息。
  • 转发所有权相关的信息存在三种情况。
  1. 一种持续的方式:向所有与系统连接的节点传递新的交易数据和区块信息。
  2. 作为一种更新:针对那些曾经与系统断开连接,而目前已经重新建立连接的节点。
  3. 作为加载程序的一部分:向新的节点传送完整的区块链数据,确保其在加入系统之后成为成熟的节点。

第十八讲 核实并添加交易数据

;原文链接:https://blog.csdn.net/Ritannn/article/details/115581801
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:小程序 基本常识(一) 下一篇:没有了

推荐图文


随机推荐