比特币的共识协议与安全性保障

一、分布式共识理论

1. FLP不可能原理

在一个异步的系统中,网络延时没有上限,即使只有一个成员有问题,也不可能取得共识。

FLP 不可能原理告诉我们,不要浪费时间,去试图为异步分布式系统设计面向任意场景的共识算法。但是我们在实际工程当中可以付出一些代价来做到共识。

2. CAP定理

任何一个分布式系统无法同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance),往往需要弱化某一个特性的需求。例如Paxos算法可以达成一致性,但是存在某种情况会一直无法达成共识。

二、比特币的共识设计

比特币的共识设计没有拘泥于传统的分布式共识理论,引入了经济博弈机制,采用挖矿奖励来达成区块链的共识。

1. 区块设计

完整的区块包括区块头(Block header)和区块体(Block body),区块头包括版本信息、上一个区块头的哈希、Merkle根哈希、谜题目标阈值、谜底nonce值;区块体则是交易列表组成,所有交易组成Merkle tree,计算出根哈希,也就是区块头中的Merkle根哈希(详解见默克尔树(Merkle tree)章节)。
在这里插入图片描述

2. 交易信息设计(Tx)

双花攻击(double spending attack)
双花攻击是数字货币领域中的一个比较常见的问题,顾名思义,就是将数字货币付给两个人或多个人,以谋取个人不正当利益。
交易信息
在比特币中,采用独有的设计去除双花攻击、交易伪造等数字货币常见问题。一笔交易包含的信息如下图所示:
在这里插入图片描述

  1. 每一笔交易需要说明交易来源,因此当本次转账完成后,交易来源也就自动失效,不能再花费了,也就不存在双花攻击的问题;
  2. 另外还需要A的签名,别人无法获取你的私钥,也就无法伪造你的签名,也就不能将你的货币花费出去;
  3. B的地址指明转账的目标人,转账的货币就将属于B,只有B可以支配或转账他人。

3. 计算力投票

在比特币的系统中,存在轻节点和全节点两种节点,轻节点只需要保存区块头,占用很少的存储空间,通常用户所用的比特币钱包就是轻节点;而全节点除了保存区块头还需要保存区块体,里面包含所有交易信息,也就是交易列表。

计算力投票过程需要计算出区块头中每一个域的信息,包括Merkle Root Hash,这就需要存储所有交易数据,因此挖矿只能由所有全节点参与,轻节点则从全节点获取区块信息。

挖矿计算公式为:H(block header) ≤ target,全节点不断尝试区块头中的nonce值,直到哈希结果在target阈值范围内,找到符合要求的nonce值,也就获得了记账权。将挖出的区块广播给其他全节点,其他全节点会验证区块是否符合要求,验证交易是否合法、验证nonce值是否正确等,验证通过后则认可并存储该区块。

4. 最长合法链

共识协议规定所有接受的区块必须在最长合法链上,这样不会产生大量分叉,保证区块链的最终一致性,也容易达成共识。

最长合法链还能够防止分叉攻击,分叉攻击就是在较旧的区块后面挖矿,原有链上后面的区块内的也就失效了。如果所有全节点维护最长合法链,那么某一些作恶全节点尝试在旧区块后面挖矿就将失败,因为作恶节点挖矿将大概率没有诚实节点速度快,也就永远不会成为最长合法链。

5. 区块奖励

全节点在挖矿的时候,会在交易列表里加入铸币交易,如果幸运地挖到区块,并且所有节点达成共识存储该区块,里面的铸币交易也随之生效,这就是常说的区块奖励。区块奖励使得所有节点都会充当诚实节点,利用算力获得奖励,从而维护区块链系统,而不是浪费算力去作恶。

hash rate表示每秒钟能够尝试nonce的数目,代表着投票的权重,也就更可能获得奖励。

区块奖励每21万个区块减半,最一开始是50BTC,后来是25BTC,目前的区块奖励已减至12.5BTC。所有比特币的产生均是通过区块奖励产生的,我们可以计算出比特币的总量是2100万BTC。

由于比特币总量是固定的,以及尝试nonce值的挖矿过程类似于19世纪的加利福利亚淘金热,我们也将比特币称为数字黄金。

三、比特币的安全性

比特币的安全性由两点保障:

1. 密码学保证

  • 只有私钥签名才能发起转账,任何人无法通过伪造签名来窃取比特币;
  • 哈希算法保证区块链无法篡改,任何人可查看验证账本。

2. 共识机制

  • 所有节点必须验证签名,保证任何伪造签名的交易不被加入到区块中;
  • 工作量证明以及区块奖励使得作恶不再可行,比特币的共识协议已经过10多年的考验。
发布了8 篇原创文章 · 获赞 0 · 访问量 1489

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104146376