04-BTC-UTXO与挖矿

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、未被花费的交易输出(Unspent Transaction Output)

二、挖矿

1.挖矿难度的调整

2.伯努利试验与伯努利过程

总结


前言

    今天看了北大肖臻老师《区块链技术与应用》公开课,有很大收获,在此写博客以做笔记,加深印象,若有不当之处,欢迎斧正。


一、未被花费的交易输出(Unspent Transaction Output)

比特币的全节点要要维护一个叫做UTXO(Unspent Transaction Output)的数据结构

比特币采用的是基于交易的账本模式,UTXO就是未被花费的交易输出,如图: 

A发起了一笔交易,给B、C分别转了5比特和3比特,如果B收到这5比特后把它花了出去,那么B的输出就不在UTXO中,C还没有花出去,那么这个输出就在UTXO中。也就i是说同一个交易有的输出在UTXO中,有的不在。

  • UTXO集合中的每一个元素要给出产生这个输出的交易的哈希值和这个输出在这个交易的第几个输出

维护UTXO的作用:检测双花问题,你想花掉的币只有在UTXO集合里面才是合法的,所以全节点要在内存中维护UTXO,以便快速检测双花问题。

  • 在一个交易中总的输入不一定会等于总的输出,有时候总输入可能会略大于总输出,中间多出来的一点点输入就作为交易的手续费,奖励给负责打包的矿工。 
  • 现在矿工挖矿的主要动力是为了出块奖励,但出块奖励大约每隔四年就会减半,所以到最后打包区块的交易费就成了矿工挖矿的动力。

二、挖矿

1.挖矿难度的调整

近几年比特币的火爆加剧了挖矿行业的竞争,使得挖矿难度一调再调,到现在为止已经非常高了,但只有4个字节的nonce无法适用于这么高的mining难度,所以就使用了最开始的铸币交易中的Coinbase域来扩展nonce

2.伯努利试验与伯努利过程

挖矿就是不断地尝试新的nonce,每一次尝试都可以看作是一个伯努利试验,如果我们做很多的伯努利试验,每一个试验都是随机的,那么这些试验就构成了一个伯努利过程,伯努利过程的一个性质是无记忆性,也就是说你做了大量的试验,前面很多次的试验对后面的试验的结果是没有任何影响的。对于挖矿来说,每一次尝试找到正确nonce的可能性是微乎其微的,要尝试大量的nonce才能找到正确的答案,那么这种情况下可以用泊松过程来近似。


总结

UTXO是比特币当中重要的数据结构

猜你喜欢

转载自blog.csdn.net/qq_28559977/article/details/125761234