《区块链原理与技术》专业课学习笔记 第一部分
-
一、概论
- 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. 一致性问题
-
区块链安全与攻击
-
为什么区块链不安全?
- 区块链层级架构视角
- 区块链的六类安全隐患
- 网络连通性与区块链安全性
- 怎样让区块链不安全
- 怎样让区块链更安全
-
为什么区块链不安全?
一、概论
1.什么是区块链
区块链:一种按照时间顺序将数据区块以顺序相连的方式组合成链式结构,并以密码学方式保证不可篡改和不可伪造的分布式账本技术。
区块链具有三个基本要素:
- 交易(transaction):一次操作,导致账本状态的一次改变。
- 区块(block):记录一段时间内发生的交易和状态结果,是对当前账本状态的共识。
- 链(chain):由一个个区块按照发生顺序串联成,是整个状态变化的日志记录。
区块链中的每个区块保存规定时间段内的数据记录,并通过密码学的方式构建一条安全可信的链条,在节点之间通过共识算法,形成一个全员共有、不可篡改的分布式账本。
2.区块链与比特币的关系
2.1 区块链是比特币的底层技术,是比特币的核心基础与架构
比特币的核心问题:货币如何发行?交易如何记账?
如何发行——挖矿机制:通过哈希计算得到特定数值,先计算出的人获得记账权。
记账有比特币奖励和交易手续费,计算量可以证明工作量,保证账本的可靠性,也不会发生通货膨胀。
如何记账——区块链的链式哈希结构,可以做到防篡改。
2.2 区块链不止是比特币
区块链本质是一种去中心化的数字账本,在此基础上可以产生很多加密货币应用,这种技术可以扩展到很多领域。
3 区块链的特点
3.1去中心化
账本数据的维护工作由全部或部分节点承担,普通用户之间的交易不需要第三方介入。
3.2 透明性
区块链的交易和历史都是透明公开的。
3.3 不可篡改性
比特币的每次交易都会记录在区块链上,并且很难篡改。
3.4 多方共识
区块链作为多方参与维护的分布式账本,参与方要约定好共识算法,即数据校验、写入和冲突解决的规则。
4 区块链的分类
- 公有区块链:所有人都可以参与
- 私有区块链:对单独的个人或实体开放
- 联盟区块链:对特定的组织、团体开放。
二、区块链共识层
解决的主要问题:如何在去中心化且存在恶意节点的场景下维护区块链的全局账本。
区块链的共识机制是一种多方协作机制,用于协调多参与方达成共同接收的唯一结果,且保证此过程难以被欺骗,且持续稳定运行,是区块链的核心引擎。
1. 一致性问题
共识:不信任节点之间对指定数据的最终状态达成一致的过程。
分布式共识:在某些节点故障的情况下,在多个节点之间达成共同的状态。
1.1 共识性要求
在分布式系统中达成一致性的过程,应该满足:
- 可终止性:一致性的结果在有限时间内完成。
- 约同性:不同节点最终完成决策的结果是相同的。
- 合法性:决策的结果必须是某个节点提出的提案。
对应对分布式系统的要求为:
- 活性
- 安全性
- 正确性
1.2 共识设计的理论限制:FLP不可能原理
FLP不可能原理:在网络可靠,但允许节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的算法。
这说明我们需要在活性和安全性上进行折中。折中方向为:
- 通过弱化安全性的异步假设为同步假设以实现活性——实用拜占庭容错算法( Pratical Byzantine Fault Tolerance, PBFT)
- 通过弱化安全性的异步假设为同步假设以实现安全性——比特币工作量证明
1.3 CAP原理
CAP原理本质上描述了分布式系统在应用过程中三个特性的取舍,即不可能同时满足:
- 一致性(Consistency):每次读操作都能得到最近写的结果,或返回错误。
- 可用性(Availability):每次请求都能返回一个非错误结果,但结果不需要是最近写的结果。
- 分区容忍性(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 双花攻击
大致过程为:
- 攻击者在区块N向商家发起了交易,商家承认交易。
- 攻击者在区块N开始分叉,这个分叉不承认交易。
- 当分叉链长度大于主网链,广播分叉链,分叉链成为主网链,交易不被承认,付费失败,攻击者还可以用这笔钱再次交易。
3.2 多重身份攻击/女巫攻击
攻击方法:一个攻击这节点通过网络广播多个身份信息,非法地拥有多个身份标识,进行改变交易顺序、阻止交易被确认、误导正常节点的路由表、消耗节点间资源等恶意行为。
女巫攻击可以通过伪造的多个身份进行不公平的重复投票,从而掌控网络。文章来源:https://www.toymoban.com/news/detail-757162.html
对抗方法:工作量证明机制文章来源地址https://www.toymoban.com/news/detail-757162.html
3.3 其他攻击
- 短距离攻击
- 长举例攻击
- 币领累计攻击
- 预计算攻击
到了这里,关于《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!