比特幣是如何調節難度,定量分配獎勵的?

在知乎上看了一下關於區塊鏈原理的回答,然而還是有一些疑惑,非常好奇:

首先是,比特幣每4年產量下降一倍,但既然比特幣是一個去中心化的系統,而且算力也並不是每4年上升一倍,那麼,誰來維護這個分配獎勵的設定,保證無論算力如何,一定時間內產出的一共就那麼多呢?而且,既然是求解數學問題,那麼為什麼可以調節難度呢?

另一個疑惑是,既然比特幣是通過記賬來得到獎勵的,那麼考慮最極端的情況,比如比特幣剛剛誕生,還沒有人進行轉賬交易的時候,「挖礦」是如何獲得獎勵的呢?


這些問題非常好,初次接觸區塊鏈概念的人都會有這些疑惑:

認真的說,比特幣白皮書是最可靠,最權威,最簡明的回答,看懂了它,很多問題就不用請教什麼"專家"了。

一個已經誕生九年,實際內容不足8頁的文獻,後人不去翻閱原始資料,反而老是問一些各種「權威人士」各種模糊回答,可知投資這個東西的人們到底是何種心態。

就是不炒幣,我覺的比特幣和以太坊的白皮書是關於區塊鏈的最好的入門教材,如果感興趣,花點精力去學習,我覺得不虧。

https://bitcoin.org/bitcoin.pdf

最後的最後,人都是懶惰的,都是會說你直接告訴我不行嗎?

抱歉,因為這些概念真的是相輔相成的結合一體,簡單說兩句,容易讓人似懂非懂,最可怕的是其實沒搞明白,反而認為搞明白了。說的複雜了,還不如看白皮書呢。

然後下面我就開始胡說八道,先聲明下,以下都是胡說八道,想找權威回答,還是看白皮書。

FAQ:

Q:比特幣每4年產量下降一倍,但既然比特幣是一個去中心化的系統,而且算力也並不是每4年上升一倍,那麼,誰來維護這個分配獎勵的設定,保證無論算力如何,一定時間內產出的一共就那麼多呢?

A: 比特幣挖礦本質上是計算一個hash值,最後得到的結果小於一個大家公認的數,大家就承認你挖到了。舉個最簡化的模擬(實際演算法和細節都不一樣的):

sha256(timt.time()*m ) &< difficult

指定difficult,求m,誰先找到m值誰就求解成功。

很明顯,difficult越小,這個m值越難求解,我們把difficult稱之為難度。

求解m的人會越來越多,本來平均10分鐘會有人求解成功,變成平均5分鐘就有人算出來了,而每次求解成功,系統都會發放獎勵,這樣就會違背比特幣系統生產速率恆定的初衷,於是系統會自動減小difficult,也就是所謂的提升難度。提升周期大概為2周一次。

難度並不總是上升的,如果算力下降,難度也會下降,這樣就維持比特幣產出在長時間周期內大概是平穩的。

誰來維護呢?就是參與這個系統的所有節點來維護,如果你算的這個m值是個瞎猜的數,大家都不承認,那你挖出的這個區塊只能自娛自樂,沒法併到主鏈上,自然一文不值。

Q:既然比特幣是通過記賬來得到獎勵的,那麼考慮最極端的情況,比如比特幣剛剛誕生,還沒有人進行轉賬交易的時候,「挖礦」是如何獲得獎勵的呢?

A: 每次求解m成功的人都能得到系統獎勵,最初是50BTC,每四年減少一半,現在是12.5BTC;中本聰設想的是早期BTC價值不高,需要獎勵礦工來維持全網算力,後期比特幣世界足夠繁榮,就可以依靠手續費用,不用發放獎勵來維持全網算力了。這個時間也很容易推算,大概2020年就會再減半為6.25BTC,這其實已經和現在每區塊的交易費用相當了;具體可以參考wiki:

Controlled supply

最後的最後,有一種特殊情況,就是我們所謂的Genesis Block,創世區塊的獎勵其實是中本聰自己發放自己的,另外這個區塊得到獎勵的地址其實不能構造 UTXO花費的,所以創世區塊的50BTC永遠不能使用,只能作為一個紀念留著了。直到今天為止,還陸續有人為 創始區塊的地址 打小額的幣來紀念比特幣的生日:)。 所以你如果是土豪中的土豪(超過比爾蓋茨身家1000倍之類的),可以匿名把幣都買下來,再都發給創世區塊的地址,比特幣就完了:)

Q:獎勵四年減半的細節

A:在中本聰的設計裡面,每挖出21萬個區塊,區塊獎勵就會減半:第1-210000個區塊,每塊獎勵50btc,第210001-420000個區塊,每塊獎勵25btc……以此類推。

容易看出,這是一個公比為0.5的等比數列,而這個數列的和為210000×50(1+0.5+0.25+0.125+……)=2100萬,即BTC總量2100萬的來源。

在比特幣系統裡面,打包一個區塊的時間大約是十分鐘。也就是說理論上,每210萬分鐘,新幣的發行速度就會發生一次減半,換算成年就是大約3.995年。

這就是江湖上流傳的「四年減半」這個說法的由來。由於比特幣的算力一直在快速增加,導致系統平均出塊時間略小於10分鐘,因此實際上的減半時間比理論值3.995還要更短一些。

歷史上也是這麼發生的,我們知道,比特幣的創世區塊於2009年1月3日被挖出,而比特幣的第一次減半則發生於2012年11月28日,中間間隔共計1425天,約合3.90年;第二次減半在2016年,現在每個區塊的獎勵已經變成12.5BTC了,目前平均每個塊的交易費用大概是4~5BTC,也就是說,下次減半之後,交易手續費和獎勵費用差不多會持平了。


其實這都是基礎知識,既然題主不看白皮書,我就都打著比方說吧。

比特幣參與者達成共識-協議,協議內容包括了獎勵分配規則。開發者根據協議寫代碼,節點運行這些代碼,檢測每一個區塊,把不符合協議的區塊拋棄掉。

狹義上每個節點都在維護,廣義上每個參與者都在維護。

產量

產量不是嚴格固定的。

  • 算力越大產量越高。
  • 難度越高產量越低。

每隔一段時間,系統(共識-協議-代碼)會根據過去的產量調節難度,大致相當於根據算力改變難度,道高一尺,則魔高一尺,最終結果是產量趨向於每十分鐘1塊。

難度調節

扔若干個骰子全是6視為有效,要增加難度就加一個骰子,要降低難度就減一個骰子。

早期獎勵

這樣是記賬:

這是挖礦獎勵
賬單1
賬單2
謝謝大家

沒人轉賬怎麼辦?這樣也可以:

這是挖礦獎勵
謝謝大家

未來可能還有這樣記賬的:

這是挖礦獎勵,可惜獎勵已經沒有了,我愛小芳
謝謝大家


謝邀。先說一下分散式共識的問題。難度和區塊獎勵的演算法都是比特幣協議里事先定義好的,由網路中的節點負責檢驗。礦工挖出的塊只有在遵守規則的前提下才能被其他節點承認,一個不符合規則的區塊只會成為無效孤塊。

比特幣引入難度機制的目的是把區塊間隔時間控制在10分鐘。具體的方法是反覆計算一個隨機數的SHA256散列值,結果開頭有一定位數的0的數值為有效解。具體演算法可以參考下面這個答案。

laforet:用SHA-256尋找以多個0開頭的散列值,運算工作量是如何上升的?其對應的複雜度函數或擬合函數是什麼?

每2016個區塊,節點會根據此前平均區塊間隔時間反推出當前全網算力,並以此為基準調整難度,將平均出塊時間恢復到10分鐘。實際運用中由於算力持續增長和礦工之間的博弈,難度調節其實是長期滯後的。因此比特幣區塊鏈到目前為止的平均區塊時間不是10分鐘,而是9.3分鐘左右。

圖上紅線為網路難度,綠色曲線為2016個區塊的平均算力。藍色的1008區塊平均算力曲線中可以看出礦工在臨近算力調節時會故意減少算力,防止收益下降過快。

在區塊間隔時間大致穩定後,我們可以看一下中本聰最初設定的分發模型。

最初的獎勵為每個區塊50BTC,每2.1萬個區塊後減半,所以通脹速度會幾何級數下降,無限逼近2100萬的總量上限。

理解了這個分配方式之後就很好理解早期挖礦的收益問題了。區塊獎勵是只要挖出符合規則的區塊就能獲得,通過記錄他人交易獲得的手續費是額外收入。比特幣第一年歷史中大部分的區塊都是空的,但是挖礦獎勵卻是最高的50BTC。即使是在兩次減半後的2017年,某些礦池也會為了確保自己搶先出塊選擇不打包任何交易。


你需要一個系統的《數字貨幣與區塊鏈原理》教程:

視頻版:數字貨幣與區塊鏈 - 飛揚學院

圖文版:掘金小冊

注意:收費的,對比特幣不感興趣不要買!不要買!不要買!


這種問題只有兩個字:看書

書單自己百度


前面最高贊的,已經寫得很好了。大家應該去看白皮書。


比特幣每4年產量下降一倍,但既然比特幣是一個去中心化的系統,而且算力也並不是每4年上升一倍,那麼,誰來維護這個分配獎勵的設定,保證無論算力如何,一定時間內產出的一共就那麼多呢?

這個問題涉及到比特幣的共識機制。獎勵的分配是由全網路的參與人維護的。因為比特幣是一個去中心化的系統,所以一筆交易,一筆獎勵等等信息只有網路中的大部分人都認同了才算有效。而每個參與者的這個認同過程是沒有聯繫的,大家都只對自己負責。

個人層面上,假設現在你收到了一個新的區塊,其中包含了N筆交易以及給予礦工的挖礦獎勵。這時你會對這個區塊進行校驗,如果你的覺得這個區塊沒問題,那就把這些信息記錄到自己本地的賬本上。如果覺得有問題,那就放棄這個區塊,等待下個正確的區塊。

全網層面上,大部分人為了和別人保持賬本一致,就也會記錄正確的區塊,這樣就保證了一個包含正確信息的區塊被大家認同。

回到原來的問題上,每個參與者都會知道當前給礦工的打包費是多少。如果收到的區塊內關於礦工打包費的信息有問題,那麼這個區塊就會被認定為作廢,就不會記錄到本地的賬本上。如果全網大部分參與者都不認可這個區塊,那就意味著大部分人手裡的賬本上都沒有這筆異常的獎勵,最後的結果就是在宏觀上看只有符合系統規則的獎勵才有效。

另一個疑惑是,既然比特幣是通過記賬來得到獎勵的,那麼考慮最極端的情況,比如比特幣剛剛誕生,還沒有人進行轉賬交易的時候,「挖礦」是如何獲得獎勵的呢?

礦工挖礦的收益分兩部分,一是生成區塊給予的獎勵,二是打包進區塊內的交易的交易費。兩者收益的來源是不同的。

生成區塊給予的獎勵是系統給予的。這筆獎勵是憑空生成的新的比特幣,礦工就是這比特幣的第一個持有者。這個過程就像現實中的挖礦一般:從土地里挖出新的礦物,礦工就是這筆礦物的第一個接觸人。上個問題中說到過,這筆獎勵是每四年遞減的,所以通過挖礦生成的新比特幣會越來越少。這就是為什麼比特幣的總量會有個2100萬的上限。

和礦工獎勵不同,交易費是提出交易的人支付的。每一筆交易的提出都需要支付一定數量的交易費(以比特幣結算)。這筆交易費可以理解為提出交易的人給礦工的辛苦費。在一筆交易提出後,交易信息就會被放入交易池中。礦工生成新的區塊時可以從交易池中選擇一定數量的交易打包到區塊中。一般情況下,礦工會選擇交易費高的交易,這樣礦工的收益就會增加。但是,礦工也可以選擇不打包任何交易,那麼礦工就只剩下系統給予的獎勵了。

總結下就是:

挖礦的獎勵 = 系統給予的新的比特幣 + 打包的交易的交易費總和

在比特幣初期,由於沒有多少交易。所以你可以發現當時的區塊內都是空的,我們稱之為「空塊」。當時的礦工的主要收益就是系統給予的新比特幣獎勵。


我在3Blue1Brown看到介紹比特幣的內容 不知道對你有沒有幫助http://www.bilibili.com/video/av12465079


幾乎所有的貨幣發行,都要遵循本國創造的財富價值。

而比特幣相向而行,隨著時間的推移,發行的越來越少。

這就好比古董,每年都會出土,但是會越來越少,所以古董價值越來越高。

這樣理解的話,是不是比特幣只有收藏價值,而沒有貨幣的特性?


產量和算力沒關係


比特幣的白皮書只有八頁紙,而且有中文版,為什麼不直接去看


https://zhuanlan.zhihu.com/p/32381286


推薦閱讀:

有了 20% 存款準備金和 5% 超額準備金,為什麼還有銀行存貸比超標?
Accounting/Corporate finance 專業的Mphil /低年級phd學生學習的 quantitative method主要有哪些?難度如何?
學金融學有什麼用,能做什麼工作?
為什麼上財的金融比南京大學的金融還要高分?
資本資產定價模型的假設前提有哪些?

TAG:金融學 | 計算機科學 | 比特幣Bitcoin | 密碼學 | 區塊鏈Blockchain |