主页 > imtoken地址查询 > 03-BTC-协议

03-BTC-协议

imtoken地址查询 2023-11-08 05:11:42

目录

前言

学习肖震老师《区块链技术与应用》公开课笔记,供大家参考。

比特币的共识协议

作为一种数字货币,比特币与纸币的区别在于数字货币是可以复制的。 这种行为称为双花攻击。 比特币作为一种去中心化的数字货币,需要解决两个问题:

如何验证交易的合法性,防止双花攻击

数字货币发行权

如何验证交易的合法性,防止双花攻击

假设用户A获得了铸币权(Createcoin),他发行了10个比特币,即获得了10个比特币。 然后他把这10个比特币转给B和C,他们每人得到5个比特币。 接下来,B 给 C 2 个硬币和 D 3 个硬币。 最后,C将获得的7个币全部交给E,这些交易组成一个小区块链,如下图所示。

双花问题和比特币的关系_摩根币和比特币是什么关系?_比特币和区块链的关系和区别

双花问题和比特币的关系_摩根币和比特币是什么关系?_比特币和区块链的关系和区别

注:比特币中的每笔交易都包括输入和输出两部分。 输入部分应注明货币来源,输出部分应给出收款人公钥的哈希值。

图中的区块链中有两种哈希指针。 一种哈希指针用于连接每个块并将它们串成一个链表; 来源的合法性可以防止双花攻击。

图中第二个方框A到B的转账,需要A的签名和B的地址,也就是B的公钥(比特币系统中收钱的地址是根据公钥计算出来的),所有节点也是需要知道A的公钥来验证交易的签名和交易的来源是同一个人,所以区块链上的每个节点都需要独立验证。 这些验证都是通过 BitCoin Script 实现的。

块内容

上图是一个简化的交易系统。 事实上,每个区块中可以有很多交易。 这些交易组成一棵默克尔树,每个区块的内容如下

笨重

版本

哪个版本的比特币协议

双花问题和比特币的关系_摩根币和比特币是什么关系?_比特币和区块链的关系和区别

前一个区块头的哈希值

指向区块链中前一个区块的指针

默克尔根哈希

整个默克尔树的根哈希值

目标

挖矿难度目标预值

随机数

随机数

块体

比特币和区块链的关系和区别_摩根币和比特币是什么关系?_双花问题和比特币的关系

交易清单

交易清单

数字货币发行权

在区块链中,每个账户都可以发布交易。 如果每个账户在本地维护一个区块链,那么为了保证区块链的一致性,账本的内容必须获得分布式共识。

分布式共识

分布式系统中两个著名的不可能结论

在异步系统(没有网络传输延迟上限的异步系统)中,即使只有一个成员故障,也不可能达成共识。

CAP指的是分布式系统中我们想要的三个属性:

一致性[一致性]

双花问题和比特币的关系_摩根币和比特币是什么关系?_比特币和区块链的关系和区别

可用性【可用性】

分区容差【分区容差】

结论是任何分布式系统,比如分布式哈希表,最多只能满足这三个属性中的两个。 如果你想要前两个属性,你将得不到第三个属性。

分布式共识中的著名协议

协议可以保证一致性,这是第一个属性。 如果协议达成共识,那么共识必须是一致的,即每个成员认为的共识是相同的。 然而,在某些情况下,协议可能永远无法达成共识。 这种可能性比较小双花问题和比特币的关系,但客观。

比特币中的共识协议(consensus in BitCoin)

比特币要解决的问题之一是如何在假设系统中大多数节点都很好的情况下达成共识? 针对这个问题,我们提出了两种解决方案:

将所有交易写入一个候选块,然后发送给所有节点。 大家验证这个区块中的交易是否合法,然后投票赞成和反对,在链中通过一定的投票比例后将候选区块写入区块。 但是这种方式是基于对投票权的严格要求双花问题和比特币的关系,创建区块链账户非常容易,这里有一个安全漏洞:

如果一个人不断地创建很多账户,当这个人创建的账户数量超过账户总数的一半时,这个人就拥有了控制区块链写入的权力。 这种情况称为女巫攻击(sybil attack)。

比特币和区块链的关系和区别_摩根币和比特币是什么关系?_双花问题和比特币的关系

所以区块链使用的另一种方案:

区块链中的每个节点都可以在本地组装候选区块,加载它认为合法的区块,并尝试各种随机数值。 当nonce满足H(block header)≤target时,则称该节点获得了记账权。

但是,区块链的新区块遵循最长有效链的原则,也就是说,当区块链中间产生一个新区块时,可能会出现如下图所示的两笔交易,A转账给B,A给自己转钱。 两笔交易都是合法的,但是由于生成的新区块不在最长的合法链上,所以该区块不被接受。 这种情况称为分叉攻击。 区块链收到的区块 Blocks 应该是延长最长的合法链。

比特币和区块链的关系和区别_双花问题和比特币的关系_摩根币和比特币是什么关系?

区块链中也可能存在两个节点几乎同时获得记账权的情况。 如果发生这种情况,根据比特币协议,每个节点都会接受它首先收到的那个。 根据不同节点在网络中的位置,一些节点首先听到一个新生成的块,然后接受这个块; 一些节点首先听到另一个块,然后接受另一个块。 它会沿着新生成的区块后面继续扩充区块,表示该区块已经通过,获得了记账权。

等长的临时分叉将维持一段时间,直到一个分叉获胜。 即哪条链先产生新区块,哪条链是最长的合法链。 另一个过时的称为孤立块。 这两个新块可以一起绘制。 两个区块链的胜负取决于谁的算力最强,有时也取决于谁的运气好。

竞争记账权的好处:最先获得记账权的节点具有一定的权力,可以决定将哪些交易写入下一个区块。 但这些不应该被设定为争夺记账权的动机,所以巧妙地建立了一个机制:区块奖励。

比特币协议规定,获得记账权的节点可以在发布的区块中进行一项特殊的交易:铸币交易。 本次交易可以发行一定数量的比特币。

因此,比特币争夺记账权,即货币发行权。 这个过程称为挖矿,比特币称为数字黄金,竞争记账权的节点称为矿工(miner)。

至此我们已经解决了比特币的两个问题。