PKU-Blockchain - Lecture 3

transaction-based ledger

transaction-based ledger:Bitcoin 系统中不会记录每个节点拥有的比特币总量,所有的比特币个数的计算需要在区块链上计算完成。

全节点要在内存中维护数据结构 UTXO(Unspent Transaction Output),以便快速检验 double spending
UTXO:还未花费的交易的输出组成的集合。集合中的每个元素要给出产生这个输出的交易的哈希值,以及它在交易里时第一个输出

为防止自私的节点只在链中打包自己的交易,比特币系统中引入 transaction fee 作为打包其他人区块的小费。

account-based ledger:需要显式的记录每个账户的余额的模式,如以太坊。

20241206111309

20241206111349

20241206111447

通过改变 merkle root hashnonce 来尝试 puzzle(merkle root hash 可以被改变的原因是在 coinbase 域中可以添加随意的信息,从而影响根哈希值,从而增大整个问题求解的搜索空间)。

20241206112336

mining probability analysis

挖矿找 nonce 的每一次尝试都是一次伯努利试验(Bernoulli trial),连续独立的多次伯努利试验组成伯努利过程(Bernoulli process)。由于挖矿的难度之大,伯努利过程在概率上可以与泊松过程(Poisson process)近似。

泊松过程满足指数分布(exponential distribution),指数分布具有无记忆性,用来保障未来得到正确结果的可能性不受你总努力时长的影响(progress free),是挖矿过程公平的体现(否则算力强的矿工在长时间的挖矿后成功概率将获得不成比例的增长)。

20241206112902

比特币的总量是固定的。挖矿难度的增大是由于人为的设定(比特币的总量限制),且挖矿只与算力有关,解决出来的问题并没有实际意义。 但这个挖矿机制的设立,对整个系统的安全性保障是至关重要的。

20241206114311

security in Bitcoin

恶意节点也有可能获得记账权。但其无法伪造交易(无法知道别人的私钥)/硬将某个交易写进区块链(其余节点不认同,则不会在其的区块上继续扩展,区块链维护的最长合法链) 。

20241206114858

Double spending?:

某个刚发布的区块被篡改的概率还是不小的,但在过了一段时间之后(在其后面加了很多块之后),被篡改的概率就会指数级别的下降(恶意节点竞争最长合法链的难度大大增加)。

Selfish mining:还是以下图为例,在 forking attack 中挖出 M->M’ 的块时先不发布,等计算出了 7 个块后再发布(此时已经过了 six confirmation),就可以成为最长链。这种攻击方法只有在恶意节点占据算力总量很大的情况下才有可能实现。

Selfish mining 也不只是局限于攻击手段,也是一种风险(你和别人此时都挖了一个区块,但过去很长时间了你还没挖出第二个,此时需要和他抢先发出去)与机遇(藏大招,别人挖了一个发布了,你已经挖了两个了,此时再发布对方就作废了)并存的策略。

20241206115544

作者

Zylll

发布于

2024-12-06

更新于

2024-12-06

许可协议