比特幣約10分鐘產生的原理

本文是以普通人的角度來猜測。如有不對,請告訴我。


每約10分鐘頒發一次比特幣。

這句話已經很通俗易懂了。
正常的應該說,約10分鐘可挖出一個區塊,一個區塊獎勵一定的比特幣。
但是呢!我這樣說,只是爲了突出10分鐘


疑問:究竟是怎麼控制約10分鐘挖出一次?

網上多數的回答是調節數學問題的難度來控制挖掘速度。

???不懂啊,爲什麼調節數學問題難度就可以控制挖掘速度呢?
上面的問題還沒解決,新的疑問又來了,
1.數學問題,如果我很聰明,一下子解出答案,怎麼辦?
2.誰出的題目?

只有一直查資料。
啊啊啊!!!什麼hash啊,什麼散列值啊?隨機數啊?。。。新名詞不斷的出現。(而且隨機數,有的地方寫隨機值,不仔細看很容易認爲是散列值。)

終於查到有用的,(本人小白,不知道引用會不會觸犯法律)

http://8btc.com/article-137-1.html

複製過來,

問題: 比特幣挖礦算法是怎樣的?

回答:需要以下參數
1.block的版本:version
2.上一個block的hash值: prev_hash
3.需要寫入的交易記錄的hash樹的值:merkle_root
4.更新時間: ntime
5.當前難度: nbits

挖礦的過程就是, 找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的範圍是0~2^32,
TARGET可以根據當前難度求出的。除了x之外,你還可以嘗試改動merkle_root和ntime。由於hash的特性,找這樣一個x只能暴力搜索。

看出什麼了嗎?好吧,看到這裏,SHA256?這又是什麼?
這裏再提供一個鏈接,

http://www.epubit.com.cn/book/onlinechapter/29313

這裏爲止,可能有些人還是有很多不懂的地方。
但我接下來,假定你知道以下幾點,
1.SHA256是一個hash公式。帶入一個數x進去,算出的數y是很難得回x。(這說法不嚴謹,其他同學別鑽牛角尖就好)
2.(好像沒2了)

小結:
如果要挖比特幣,你就要不斷的把不同的x帶入特定hash公式,算出不同的y。而y呢,就要達到標準,即前幾位是0。而控制約10分鐘挖一次就在於控制y前面有幾個0。


問題:那誰頒佈y的標準?y又是如何控制約10分鐘?

這裏以後全是我猜測,不對的話,希望有大神說出來。

整個網絡,比特幣網絡,比特幣協議,比特幣系統,比特幣挖礦源碼。
這幾個詞,想到什麼了嗎?

頒佈y的標準是整個網絡喔,也不能說是頒佈,而是算出。
整個網絡有點抽象,範圍有點大,上面的幾個詞就爲了逐步縮小了範圍。

看多比特幣資料的人,都知道,比特幣系統是可以知道從最開始到現在所有交易情況,當然也包括挖掘情況。
只要我在前幾個資料中提取挖掘情況,就可以計算出最近的挖掘速度。如果過快,就會調高y的標準。然後和整個比特幣市場說,現在y的標準是這樣喔。至於過慢情況,不會有吧?有也沒問題,降低y的標準就是了。

我可不是亂猜的,比特幣系統中認爲,

每產生2016個block(約14天),網絡會根據這段時間產生新block的平均間隔調整之後的TARGET。

看吧!每隔一段時間就會調整y(即TARGET)。

爲什麼挖掘會過快呢?因爲計算機的運算速度,加上很多人加入比特幣市場等原因。

小結:
利用最近的挖掘情況算出最近的挖掘速度,然後調整y的標準,即調整數學問題的難度。


問題:如果我一次就算出x值,那不就很賺?

也需有人想過這個問題,那麼我只能叫你買彩票試試。(雖然我沒買過彩票,不懂具體機制)

制約這一問題不會產生的,有以下兩點,(或許還有其他制約點)
1.SHA256的不可逆計算。說白了,x只能一個一個的帶入公式算出y,數學點的說法就是隻能枚舉。(暴力破解)
2.比特幣系統的解題難度調節。具體就是上一問的情況。

買彩票,你買中一次,恭喜恭喜!你再買中一次,哇哇,走**(狗屎)運了你!!再買中一次,那麼我只能說。。。
以上情況,你認爲多少機率會發生?很小甚至爲0。

彩票系統設置這樣,比特幣系統也是設置成這樣。比特幣協議中SHA256爲基礎的公式以目前的技術只能暴力破解。而每個x值的機會都是一樣的,那麼最終挖掘結果就會公平。
加上比特幣會調節y,那麼就更加不會出現不公平現象(這句話有幾個理由,但是呢,說出來感覺離話題太遠了)

再來一個極端的假設,有人破解了SHA256等hash公式,可以很快的挖掘比特幣。
然後你發現不對勁,調節系統出了問題,就會想比特幣原來這麼容易挖,這麼不值錢,比特幣系統這麼垃圾,種種。大家都像你這麼想的話,那麼比特幣系統就會崩盤,就不存在比特幣了。

小結:
比特幣的挖掘,目前只能勤奮地挖掘。


總結:

1.比特幣挖掘就是不斷地枚舉x並帶入hash公式解出合適的y。
2.hash公式的計算是不可逆的。x可以算出y,y不能算出x(以當時的技術)
3.通過計算最近的挖掘速度,調節y的標準,控制挖掘速度。即,網上說的“調節數學問題難度來控制挖掘速度”。
4.x值最好只能枚舉。(爲啥說最好呢,突然想到幾個假設,覺得這樣說比較好)


因爲這篇文章大部分是我的猜測,如果有同學覺得哪裏不對,請聯繫我。QQ:841212582


開始日期:20170912

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章