主页 > 苹果手机imtoken怎么下载 > 【区块链学习】比特币—协议

【区块链学习】比特币—协议

苹果手机imtoken怎么下载 2023-05-15 08:11:40

简介:中心化数字人民币双花攻击双花攻击

数字货币的发行仅依靠密码学。

由于文件本身是可以复制的,数字货币本身就是一个文件,我不能修改签名,但是可以直接复制文件。

改进:集中处理

集中式数据库处理数字货币

每次进行交易时,都会请求中央机构。 数字货币的发行和每一笔交易都需要经过中央机关的确认。

去中心化货币

两个主要问题:

谁来发行货币 如何验证交易的有效性 验证交易的有效性 比特币如何交易?

比特币协议_比特币 p2p协议_外国的比特币便宜中国的比特币贵为什么?

假设A获得coinbase(铸币权),新发行10个比特币(此交易称为铸币交易)。 A转10个比特币给B(5)和C(5),A在交易上签名,交易中需要说明所花费的10个比特币的来源(来自铸币交易)。

之后,B将自己的5个比特币转给C(2)和D(3)。 交易需要B的签名,交易需要说明花费的5个比特币来自第二笔交易。

比特币 p2p协议_比特币协议_外国的比特币便宜中国的比特币贵为什么?

然后比特币协议,C将自己拥有的7个比特币全部转给E,并在交易上签名,可以发现交易中C的比特币来自两笔交易。 这样,一个简单的区块链就形成了。

两种哈希指针

指向上一个区块:让每个区块形成一条链

指向币种来源:比特币的来源不是凭空捏造的,可以防止双花攻击。

Q:交易中的身份识别

A:

A(付款人)需要知道B(收款人)的地址,这是通过B的公钥计算出来的。

B(收款人)需要知道A(付款人)的公钥,或者所有节点都需要A的公钥来验证交易和验证签名

Q:如何防止恶意签名

如果有B'恶意签署区块并替换A怎么办

A:币源区块有输出,输出包含A的公钥,检查币源输出公钥的哈希值是否与付款人的哈希值一致。

比特币协议_比特币 p2p协议_外国的比特币便宜中国的比特币贵为什么?

Q:如何查询交易是否合法

A:在比特币系统中,验证过程是通过执行脚本(BitCoin Script)来实现的。 将当前交易输入脚本与上一个交易输出脚本(表示币种来源的交易)拼接执行,若能正确执行,则交易合法。

块的组成

每个区块分为区块头和区块体。

区块头 区块体

版本 比特币协议版本

交易清单 交易清单

前一个区块头的哈希值

默克尔根哈希

目标挖矿难度目标阈值

随机数

外国的比特币便宜中国的比特币贵为什么?_比特币协议_比特币 p2p协议

区块头的作用

挖矿相关(区块头的作用)

整个区块头的哈希值必须小于目标阈值才能挖矿。

比特币协议_外国的比特币便宜中国的比特币贵为什么?_比特币 p2p协议

区块头存储目标阈值的编码nBits

阻止链接

比特币协议_外国的比特币便宜中国的比特币贵为什么?_比特币 p2p协议

使用header链接即可,因为merkle root hash已经可以保证body中的交易列表没有被篡改。

便捷的轻节点存储

轻节点只保存区块头信息。

如何将交易写入区块

比特币协议_比特币 p2p协议_外国的比特币便宜中国的比特币贵为什么?

账本内容需要获得分布式共识(distributed consensus)

分布式共识

示例:分布式哈希

系统中多台机器共同维护一个哈希表,共识是表中存储哪个key-value

比特币的共识机制

投票,但要根据工作量证明进行投票。

比特币系统采用了一个非常巧妙的方案来解决这个问题。 虽然还是投票,但不是简单的根据账户数量,而是根据算力。

在比特币系统中,每个节点都可以自己组装一个候选区块比特币协议,然后尝试各种nonce值,这就是挖矿。

比特币协议_外国的比特币便宜中国的比特币贵为什么?_比特币 p2p协议

当节点找到符合要求的随机数时,就获得记账权,这样就可以将该块发布到系统中。 其他节点收到区块后,验证区块的有效性。 如果系统中的大多数节点通过验证,他们将收到该块作为最新块并将其添加到区块链中。

比特币 p2p协议_比特币协议_外国的比特币便宜中国的比特币贵为什么?

比特币协议_比特币 p2p协议_外国的比特币便宜中国的比特币贵为什么?

存在的问题

分叉攻击分叉攻击

比特币协议_外国的比特币便宜中国的比特币贵为什么?_比特币 p2p协议

如图所示,用户A回滚了上述A给B转账的记录,从而非法获取利益。 在两条链上,发现交易都是合法的。 这是典型的双花攻击。 A将钱转给B后,使用分叉攻击将钱转回,覆盖原来的记录。

在比特币系统中,这种情况其实是很难发生的。 因为大多数矿工都认可最长的合法链条,所以他们会沿着上面的链条继续挖矿。 而如果攻击者A想要回滚记录,他必须让下链比上链长。 理论上,攻击者需要达到整个系统51%的算力才能使这次攻击成功。

法律链竞争问题

在区块链的正常运行场景中,也可能会出现分叉。 当两个节点同时获得记账权时,就会有两条等长的合法链。 默认情况下,节点接收它首先听到的块,然后节点继续沿着该块。 但随着时间的推移,必有一条链胜出,从而保证了区块链的一致性。 (被丢弃的块称为“孤儿块”)

比特币激励机制

比特币通过设置区块奖励解决了无人出块的问题。

获得合法区块的节点可以向该区块添加特殊交易(铸币交易)。 事实上,这是生成新比特币的唯一途径。

挖矿就是通过自身的算力计算nonce,获得算力,从而获得增加区块的能力。 而添加区块会得到区块奖励,即拥有比特币。 挖矿挖的是区块,收获的是比特币

点击原文查看原文笔记