从零认识比特币 第3课 协议与共识

Byzantine Faults and CAP Theorem

Byzantine General

  • 拜占庭的将军
    拜占庭的将军们包围了一个城市,每一个将军都可以选择进攻或者撤退,整个事件只有在全部的人都选择进攻,或者全部的人都选择撤退才算成功。这是一个决策问题

拜占庭的将军们同意服从多数的原则,他们进行投票。

最后的结果是,4个人选择进攻,4个人选择撤退,还有一个人是叛徒

如果这个叛徒对4个进攻的人说进攻,对4个撤退的人说撤退,会怎么样呢?
进攻的人和撤退的人都会认为他们是大多数,因此无法达成一致,结果就是失败

Byzantine Faults

在比特币中,一个恶意的节点可能会发送不同的区块到不同的其他的节点,这就是拜占庭错误

Byzantine Fault Tolerance

一个系统被设计成可以经受的住这样拜占庭错误的
比特币区块链就是拜占庭容忍的,因为他会让发送错误信息变得非常昂贵,节点想要让一个区块成功的加入到区块链中,需要大量的计算和工作

Databases

Databases on ACID

一个理想的数据库,需要有一个属性

  • Atomicity:如果一个交易的一部分失败了,那整个就失败了,就是对于一个交易来说没有成功一半的说法
  • Consistency:任何写入的数据需要满足所有的条件,读取同样的数据的结果必须是同样的
  • isolation:同步进行的交易的结果必须相同,就好像他们是按照先后顺序发生的
  • Durability:如果一个交易发生了,那他就会被保留下来

SQL vs noSQL

略,noSQL举了个Apache Cassandra的例子,无关

CAP Theorem

CAP理论表示,下面三个中,只有两个可能实现同时发生:

  • Consistency of data
  • Availability of data
  • Partition-tolerance(指数据如何存储和分布)

design implication for distributed system

设计分布式系统,设计师无法放弃Partition-tolerance,所以只能在Consistency和Availability之间选择一个。
这个是一个选择:

  • 如果系统反应速度不重要的话,就选择Consistency
  • 如果系统反应需要即时,则选择Availability

比特币区块链中,选择了Availability。虽然没有Consistent,但是比特币区块链最终会变得consistent

Bitcoin Blockchain

没有中心节点来实现Consistency,所以需要一个共识算法consensus algorithm,来让节点投票选择数据库(区块链)的真实状态。

因为比特币区块链是开放的,所以不能采用简单的多数投票原则:

  • 没有办法确定是存在多数的
  • 没有节点有其他所有节点的概况
  • 多数投票的结果可能被操纵

比特币区块链最终会consistent:

  • 越老的区块,就需要更多的工作去修改它
  • 没有撤销过超过五小时的交易
  • the longest internal fork was 24 blocks in length

forks

有两种forks在比特币区块链中

  • Regular operations or internal fork: 矿工处理竞争块时,竞争链的临时存在
  • Software fork:in open source software projects, a fork is a new software project trajectory that starts form an earlier project

software forks

这里面又有两种forks:

  • soft fork:新版本的软件是向后兼容的
  • hard fork:新版本是不向后兼容的
    这部分我好像记得在哪里看到过,之后会单独出一个博文来解释这个,点个关注不迷路哦~

这里有一个简单的例子:
在这里插入图片描述

提醒一下hard fork非常不好,好像曾经有一次造成了严重的currency split

Altcoin

就是Alternative cryptocurrencies,使用Bitcoin的代码产生的其他币种
在这里插入图片描述
这里又要提一下Ethereum以太币了。不过多讲解:
在这里插入图片描述

Consensus Protocols

这里讲解四个

Proof of Work(PoW)

之后单独细讲

Proof of Stake(PoS)

stake有点像是股本,权力,权重的概念

  • 节点认证区块是根据他们在系统中的stake,好比方,这些节点拥有的货币越多,权重越大
  • 如果节点表现不好,就会丧失他的权力,

如何设计一个PoS系统,以至于节点是被经济利益驱动的想要表现好呢?关键两点

  • Crptoeconomics
  • 如何避免Sybil attack

举一个经典的例子Vitalik Buterin‘s metaphor:
100围在桌子边,签署文件,每一个人只有在他们签署的文件是多数人签署的时候得到奖励。奖励在最后发放。这样,每个人不会有想要作弊的动机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJc67ZqQ-1580388868645)(https://pic2.zhimg.com/80/v2-56ecee149302a78b7c77ebc9ef50e0e7_hd.png)]

Proof of Authority(PoA)

之后单独讲,这里老师的课件上比较模糊

proof of Elapsed Time (PoET)

之后有机会单独讲一下,老师PPT不太清楚

Consensus attack

共识攻击

  • Sybil attack
    在这里插入图片描述
  • 51% attack
    在这里插入图片描述
  • Double-spend attacks
    在这里插入图片描述
发布了78 篇原创文章 · 获赞 14 · 访问量 9725

猜你喜欢

转载自blog.csdn.net/qq_34107425/article/details/104118115