主页 > 最新版imtoken官网 > 北京大学肖振《区块链技术与应用》02

北京大学肖振《区块链技术与应用》02

最新版imtoken官网 2023-12-18 05:09:49

5.比特币系统的实现

6.比特币网络

7.比特币挖矿难度调整

5.比特币系统的实现

5.1Bitcoin 基于交易的账本

比特币全节点维护UTXO的数据结构:未花费交易输出

在同一个交易中,有些输出是这种结构,有些不是。

没有花费的东西。还是没有花。转账时应注明硬币的来源。

对于UTXO中的每个元素,可以通过给出产生该输出的交易的哈希值以及它在该交易中的哪个输出来定位UTXO的输出。检测双花。

总投入=总产出

1BTC0.99BTC,其中0.01作为交易费用给予该节点

如果只有区块奖励,如果节点比较自私,只会打包自己的交易,不管别人的交易。因此,设计了第二种激励机制——交易费用。交易费

每十分钟产生 210,000 个区块,持续约 4 年比特币存了100块钱,区块奖励减半。交易费后来成为主要的激励因素。

5.2个基于账户的账本

银行账户模式

一个例子

现在区块奖励大约是交易费用的 100 倍

nonce 域只有 32 位,现在很难。即使你尝试nonce,你也可能无法挖出一个块

输入和输出都是脚本化的

在此处记录交易、输入和输出

将本次交易中的输入脚本与上一笔交易的输出脚本配对,验证交易的有效性

有一个问题,其实获取hash的时候只有一个区块头,并没有具体的交易信息

挖矿就是不断尝试nonce来解决难题。每次尝试都称为伯努利试验:具有二元结果的随机实验

伯努利过程:一系列独立的伯努利试验

无记忆独立无记忆

泊松过程泊松分布,不太可能

出块时间服从指数分布

指数分布

横轴是整个系统的平均出块时间,纵轴是概率密度。

未来开采多少时间与过去开采多少时间无关。

无进程正是挖矿公平的保证,避免了不成比例的优势。

5.3安全

5.3.1.攻击者M强行将钱转给自己

无法保证记账权不会落在恶意节点上。攻击者 M 强行将钱转给自己,没有 A 的签名无效。攻击者不仅没有偷到钱,还失去了区块奖励。

检测恶意攻击的标准是诚实节点是否可以接受交易。延长最长的有效链。

5.3.2.双花,分叉攻击

花钱买东西,商家看到已经写入节点比特币存了100块钱,发货,然后攻击者将钱转给自己。延伸下面的链会使上面的交易无效,同时收到钱和货物。攻击者想要这样做的概率非常低,而且必须不断获得记账权。回滚操作非常困难。预防方法是多等几次确认。再等几个街区。确认

还有另一种类型叫做 0 确认。零确认更常用。转账交易已发布但尚未写入区块链,下一个区块尚未被挖掘。

比特币机制,节点接受它听到的第一笔交易,支付和交付之间存在时间差。

5.3.3.不包括法律交易

比特币协议规定每个区块的大小不能超过1MB

如果交易数据过多,部分交易只能记录到下一笔交易。

这是正常的。

5.3.4.保存多个计费权限区块,请勿发布,自私挖矿

如果你在没有其他人的情况下发布,你将不会获得区块奖励

这样的恶意节点需要占用大量的算力,比如51%

自私挖矿不仅是为了分叉攻击,也是为了减少竞争。

每个人仍在挖掘一个区块。他挖了两个,最后一个也挖出来了,他马上放出来,减少竞争。有风险。

6.比特币网络

7.比特币挖矿难度调整

挖矿难度与目标阈值成反比

H(区块头)