《区块链原理与技术》专业课学习笔记 第一部分
区块链:一种按照时间顺序将数据区块以顺序相连的方式组合成链式结构,并以密码学方式保证不可篡改和不可伪造的分布式账本技术。
区块链具有三个基本要素:
区块链中的每个区块保存规定时间段内的数据记录,并通过密码学的方式构建一条安全可信的链条,在节点之间通过共识算法,形成一个全员共有、不可篡改的分布式账本。
比特币的核心问题:货币如何发行?交易如何记账?
如何发行——挖矿机制:通过哈希计算得到特定数值,先计算出的人获得记账权。
记账有比特币奖励和交易手续费,计算量可以证明工作量,保证账本的可靠性,也不会发生通货膨胀。
如何记账——区块链的链式哈希结构,可以做到防篡改。
区块链本质是一种去中心化的数字账本,在此基础上可以产生很多加密货币应用,这种技术可以扩展到很多领域。
账本数据的维护工作由全部或部分节点承担,普通用户之间的交易不需要第三方介入。
区块链的交易和历史都是透明公开的。
比特币的每次交易都会记录在区块链上,并且很难篡改。
区块链作为多方参与维护的分布式账本,参与方要约定好共识算法,即数据校验、写入和冲突解决的规则。
解决的主要问题:如何在去中心化且存在恶意节点的场景下维护区块链的全局账本。
区块链的共识机制是一种多方协作机制,用于协调多参与方达成共同接收的唯一结果,且保证此过程难以被欺骗,且持续稳定运行,是区块链的核心引擎。
共识:不信任节点之间对指定数据的最终状态达成一致的过程。
分布式共识:在某些节点故障的情况下,在多个节点之间达成共同的状态。
在分布式系统中达成一致性的过程,应该满足:
对应对分布式系统的要求为:
FLP不可能原理:在网络可靠,但允许节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的算法。
这说明我们需要在活性和安全性上进行折中。折中方向为:
CAP原理本质上描述了分布式系统在应用过程中三个特性的取舍,即不可能同时满足:
硬分叉:旧区块不兼容新区块
区块链发生了永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点产生的区块。
软分叉:旧的节点不会感知区块链代码发生的改变,并继续接受新节点创建的区块。新旧节点在一条链上。
当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而产生不合法的区块,导致临时性分叉产生。这会强迫老节点更新规则。
恶意的分叉:51%攻击
对于公有链而言,因为参与者之间不存在任何信任,所以采用算力敏感的“挖矿”共识来作为激励机制。
对于联盟链/私链,节点间有一定的信任基础,不需要算力敏感,BFT类型的共识机制比较适合。
拜占庭问题:在有叛徒的情况下,如何在不同节点之间达成正确的共识。
当节点总数为N,叛徒数量为F,则当 N≥3F+1 时,这个问题才有解。
拜占庭容错算法(Byzantine Fault Tolerance,BFT)就是面向拜占庭问题的容错算法。
实用拜占庭容错算法:
工作量证明(Proof of Work,PoW)要求用户获取服务前进行适量复杂的计算,来证明用户对服务的真实需求,需要满足以下条件:
在比特币的PoW中,矿工通过花费算力来竞争区块链上的记账权。挖矿可以获得比特币奖励+交易手续费,这也是比特币发行的过程。
解决链分叉问题:比特币的最长链机制——诚实的矿工会将最长的区块链认可为全局的账本,并在这条链上继续延伸。因此恶意矿工更难造出更长的链。
大致过程为:
攻击方法:一个攻击这节点通过网络广播多个身份信息,非法地拥有多个身份标识,进行改变交易顺序、阻止交易被确认、误导正常节点的路由表、消耗节点间资源等恶意行为。
女巫攻击可以通过伪造的多个身份进行不公平的重复投票,从而掌控网络。
对抗方法:工作量证明机制