《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制

《区块链原理与技术》专业课学习笔记 第一部分

  • 一、概论
    • 1.什么是区块链
    • 2.区块链与比特币的关系
      • 2.1 区块链是比特币的底层技术,是比特币的核心基础与架构
      • 2.2 区块链不止是比特币
    • 3 区块链的特点
      • 3.1去中心化
      • 3.2 透明性
      • 3.3 不可篡改性
      • 3.4 多方共识
    • 4 区块链的分类
  • 二、区块链共识层
    • 1. 一致性问题
      • 1.1 共识性要求
      • 1.2 共识设计的理论限制:FLP不可能原理
      • 1.3 CAP原理
      • 1.4 区块链分叉问题
    • 2. 区块链共识算法
      • 2.1 不同区块链需要不同的共识机制
      • 2.2 BFT-based:拜占庭容错算法
      • 2.3 比特币共识的思路:工作量证明
    • 3. 对共识机制的攻击
      • 3.1 双花攻击
      • 3.2 多重身份攻击/女巫攻击
      • 3.3 其他攻击
  • 区块链安全与攻击
    • 为什么区块链不安全?
      • 区块链层级架构视角
      • 区块链的六类安全隐患
      • 网络连通性与区块链安全性
    • 怎样让区块链不安全
    • 怎样让区块链更安全

一、概论

1.什么是区块链

区块链:一种按照时间顺序将数据区块以顺序相连的方式组合成链式结构,并以密码学方式保证不可篡改和不可伪造的分布式账本技术。

区块链具有三个基本要素:

  • 交易(transaction):一次操作,导致账本状态的一次改变。
  • 区块(block):记录一段时间内发生的交易和状态结果,是对当前账本状态的共识。
  • (chain):由一个个区块按照发生顺序串联成,是整个状态变化的日志记录。

区块链中的每个区块保存规定时间段内的数据记录,并通过密码学的方式构建一条安全可信的链条,在节点之间通过共识算法,形成一个全员共有、不可篡改的分布式账本。

2.区块链与比特币的关系

2.1 区块链是比特币的底层技术,是比特币的核心基础与架构

比特币的核心问题:货币如何发行?交易如何记账?
如何发行——挖矿机制:通过哈希计算得到特定数值,先计算出的人获得记账权。

记账有比特币奖励和交易手续费,计算量可以证明工作量,保证账本的可靠性,也不会发生通货膨胀。

如何记账——区块链的链式哈希结构,可以做到防篡改。

2.2 区块链不止是比特币

区块链本质是一种去中心化的数字账本,在此基础上可以产生很多加密货币应用,这种技术可以扩展到很多领域。

3 区块链的特点

3.1去中心化

账本数据的维护工作由全部或部分节点承担,普通用户之间的交易不需要第三方介入。

3.2 透明性

区块链的交易和历史都是透明公开的。

3.3 不可篡改性

比特币的每次交易都会记录在区块链上,并且很难篡改。

3.4 多方共识

区块链作为多方参与维护的分布式账本,参与方要约定好共识算法,即数据校验、写入和冲突解决的规则。

4 区块链的分类

  • 公有区块链:所有人都可以参与
  • 私有区块链:对单独的个人或实体开放
  • 联盟区块链:对特定的组织、团体开放。

二、区块链共识层

解决的主要问题:如何在去中心化存在恶意节点的场景下维护区块链的全局账本。

区块链的共识机制是一种多方协作机制,用于协调多参与方达成共同接收的唯一结果,且保证此过程难以被欺骗,且持续稳定运行,是区块链的核心引擎。

1. 一致性问题

共识:不信任节点之间对指定数据的最终状态达成一致的过程。

分布式共识:在某些节点故障的情况下,在多个节点之间达成共同的状态。

1.1 共识性要求

在分布式系统中达成一致性的过程,应该满足:

  1. 可终止性:一致性的结果在有限时间内完成。
  2. 约同性:不同节点最终完成决策的结果是相同的。
  3. 合法性:决策的结果必须是某个节点提出的提案。

对应对分布式系统的要求为:

  1. 活性
  2. 安全性
  3. 正确性

1.2 共识设计的理论限制:FLP不可能原理

FLP不可能原理:在网络可靠,但允许节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的算法。

这说明我们需要在活性和安全性上进行折中。折中方向为:

  • 通过弱化安全性的异步假设为同步假设以实现活性——实用拜占庭容错算法( Pratical Byzantine Fault Tolerance, PBFT)
  • 通过弱化安全性的异步假设为同步假设以实现安全性——比特币工作量证明

1.3 CAP原理

CAP原理本质上描述了分布式系统在应用过程中三个特性的取舍,即不可能同时满足:

  1. 一致性(Consistency):每次读操作都能得到最近写的结果,或返回错误。
  2. 可用性(Availability):每次请求都能返回一个非错误结果,但结果不需要是最近写的结果。
  3. 分区容忍性(Patition tolerance):当任意节点的连接中断或者大大延迟,系统扔能工作。

1.4 区块链分叉问题

硬分叉:旧区块不兼容新区块

区块链发生了永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点产生的区块。

软分叉:旧的节点不会感知区块链代码发生的改变,并继续接受新节点创建的区块。新旧节点在一条链上。

当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而产生不合法的区块,导致临时性分叉产生。这会强迫老节点更新规则。

恶意的分叉:51%攻击

2. 区块链共识算法

2.1 不同区块链需要不同的共识机制

对于公有链而言,因为参与者之间不存在任何信任,所以采用算力敏感的“挖矿”共识来作为激励机制。

对于联盟链/私链,节点间有一定的信任基础,不需要算力敏感,BFT类型的共识机制比较适合。

2.2 BFT-based:拜占庭容错算法

拜占庭问题:在有叛徒的情况下,如何在不同节点之间达成正确的共识。

当节点总数为N,叛徒数量为F,则当 N≥3F+1 时,这个问题才有解。

拜占庭容错算法(Byzantine Fault Tolerance,BFT)就是面向拜占庭问题的容错算法。

实用拜占庭容错算法:

  • 预准备阶段(pre-prepare)
  • 准备阶段(prepare)
  • 提交阶段(commit)

2.3 比特币共识的思路:工作量证明

工作量证明(Proof of Work,PoW)要求用户获取服务前进行适量复杂的计算,来证明用户对服务的真实需求,需要满足以下条件:

  • 不容易完成(需要工作量)
  • 容易验证:其他节点可以快速确认工作量
  • 工作过程公平:任何节点没有完成工作的捷径
  • 具有随机性:能力越强,只保证率先完成度概率越大

在比特币的PoW中,矿工通过花费算力来竞争区块链上的记账权。挖矿可以获得比特币奖励+交易手续费,这也是比特币发行的过程。

解决链分叉问题:比特币的最长链机制——诚实的矿工会将最长的区块链认可为全局的账本,并在这条链上继续延伸。因此恶意矿工更难造出更长的链。

3. 对共识机制的攻击

3.1 双花攻击

大致过程为:

  1. 攻击者在区块N向商家发起了交易,商家承认交易。
  2. 攻击者在区块N开始分叉,这个分叉不承认交易。
  3. 当分叉链长度大于主网链,广播分叉链,分叉链成为主网链,交易不被承认,付费失败,攻击者还可以用这笔钱再次交易。

3.2 多重身份攻击/女巫攻击

攻击方法:一个攻击这节点通过网络广播多个身份信息,非法地拥有多个身份标识,进行改变交易顺序、阻止交易被确认、误导正常节点的路由表、消耗节点间资源等恶意行为。

女巫攻击可以通过伪造的多个身份进行不公平的重复投票,从而掌控网络。

对抗方法:工作量证明机制

3.3 其他攻击

  • 短距离攻击
  • 长举例攻击
  • 币领累计攻击
  • 预计算攻击

你可能感兴趣的:(区块链原理与技术,区块链,学习)