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是比特幣當中重要的數據結構
總結
以上是生活随笔為你收集整理的04-BTC-UTXO与挖矿的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML、CSS、JavaScript常
- 下一篇: 从零教你写专利之开宗明义篇