你的位置:首頁 > 公告動態 > 社會新聞

挖礦的具體原理是什么?

2019/11/23 22:50:14      點擊:
挖礦的具體原理是什么?


     挖礦的原理,我們剛才說過它是做一個很難的數學題,但是這個數學題并不是看你腦子聰明不聰明,而是看你CPU的速度如何啊,因為沒有人能夠通過腦子把它算出來,大家的方法只能是一個一個試,具體的原理是什么呢?首先我們回憶一下,以前我們曾經講過一種叫做哈希函數的東西,它的意思呢也可以叫數字摘要或者散列函數啊,它的意思是說我們可以把一個字符串通過一定的運算轉化成一個摘要的形式,而且呢你這個算比較容易反而算很難,哈希算法里面有一個很著名的哈希算法叫上256 12256啊,這是美國國家軍局發明的一種算法,如果我把一個字符串輸入到這個x256函數里邊,比如這個字符串叫apple APPle啊,輸出了多少呢?輸出的是一個啊這個二進制數這個二進制數256位,比如說101011010啊沒有什么規律是吧?一共有多少位呢?一共有256位256位啊,所以就叫沙256嘛,而且呢這個算法吧,就是不管你前面輸入的是什么,那后面它結果都是256位,一個二進制數,你把一個10個g的電影放進去,它最后輸出了還是250 6倍的數啊,而且呢如果你改一點點它就數字都不一樣,比如我的apple,這我加一個點多了一個點,最后的這每一位的數字都有可能會發生,這就是它的一個特點,而且呢哈基算法的難度啊,就在于它正向有去之處啊,它正向算比較容易,正向算比較容易是它反向算,非常的困難,這就是它算法的一個特點啊。
    
     我們舉個例子啊,比如說有這么一個函數就是x的三次方加log2x加y1x等于y啊,我就舉個例子,你給我一個x讓我算出y來,其實這個并不難,但是你給我一個y等于x十幾,這就很困難哈,奇函數比這個還要復雜的多,所以基本上是不可能的,我們只能怎么問,我們只能一個一個去試啊,假如你告訴我一個一個結果,你問我什么結果是這樣的,那我就只能一個一個試,一直把它試出來為止啊,這個呢就是哈希算法的一個基本的問題啊,那么這個挖礦呢,其實就是基于這個上256的這個一個運算,我們來說一下挖礦的具體的原理是什么,剛才我們說到啊,這個區塊鏈呢,其實是一大堆的交易信息,對吧,一大堆的交易信息啊,比如說呢,這個區塊鏈已經鏈接到了某一個位置,從最開始第1個塊開始練,一直練到了某一個位置,這是目前的情況,這個塊里并不只有交易信息,它實際上是有一個塊的頭部,還有呢它里面有一些內容啊,這個內容呢其實就是信息,就是我們交易的這個記錄賬單啊,現在呢,有很多的人說我現在啊都想進行打包,為什么呢?因為打包有獎勵還有手續費對吧,每一個人呢都有自己的一個賬單啊,這個賬單是他收集的周圍一大堆人,每一個人都拿著賬單準備去往上接塊,但是在接塊的時候他必須要算一個數學題,什么數學題呢,首先它會有一個字符串啊,它會有一個字符串,這個字符串里面的內容非常多啊,但是我們說一些主要的這個字符串包含哪些內容呢?首先包含目前的這個塊,目前已有的這個塊也就是前塊,這個錢塊的頭部,這個錢塊的頭部啊,這是第1個部分。


     第2個部分呢,他現在已經有了這個賬單的信息,你已經有打包好的這個賬單的信息啊,比如說像時間呢之類的時間戳之類的啊,還有一大堆亂七八糟的啊,然后還有一個很重要的就是有一個隨機數,這是你的一個字符串,現在你對這個字符串做兩次哈希運算啊,做兩次這個沙拉不就運算它的哈希值,等于什么呢?等于上256,12 256, 然后字符串,你把這個字符串啊做兩次這個哈希運算啊,這個速度其實非常快,你一下子能算出來這個數是幾,但是你算出來之后會發現它是一個256位的數對不對,這個256位的數我們要求什么呢?要求它的前分類必須是0前n位必須是0,比如說你算出來的這么個數這個數,結果是00000啊,00,比如說有這個9個0啊,這有9個0,然后后面是什么1011啊,一直到最后一共有256位,你算出這么一個數的,假如我的要求就是前9個位數是對的,那你就算對了,你就有資格去打包。


     你就有資格打包的,意思是說你要把你算出來的這個哈希值作為一個新塊的頭部,然后你算出來這么一個一個數對吧,作為一個新塊的頭部打一個包,打完了這個包之后再把你這個包接到后面去啊,于是呢你就接出一個新塊的,接觸個新塊來你就獲得了什么呀,獲得了你想要的獎勵就這樣?那么我們怎么能算出來前面這幾位都是0呢,就要改變一個內容,就是改變這個隨機數,其他的內容你是改不了的,所以你就改變這個隨機數,隨機數最開始從0開始,從0開始零算一次看看是不是滿足條件,不滿足好算一一不行算,22不行算三那都是二進制的啊,你就不停這么試,直到你把它釋出來為止,而且大家要注意每個人在計算的時候,它的這個題目難度是不一樣的,為什么呢?因為每一個人雖然前塊的頭部大家都一樣啊,但是你所打包的這個賬單可能是不一樣的,你的時間開始時間可能是不一樣,所以呢造成這個隨機數大小不同。


     有人運氣好,他第1個數就算出來了,那直接就打包起來了,有人運氣不好,他就是計算能力強,做的好長時間最后也算不出來,不過平均來講是這樣的,誰的計算能力更強,誰就更有希望打磨這個塊,誰就更有可能去挖到這個礦啊,就是這樣一個原理說大家為什么拼命的去買這個礦機呢,對不對?好那我們繼續往下說啊,說這個我們有一個難度的設置,這個難度的設置也就是這個n位啊,這個n是怎么確定的,難度n的確定顯而易見啊,前面的這個零它個數越多這個問題就越難啊,為什么個數多就難呢,咱們想象說在這個問題中啊,你不可能反算,只能是一個一個隨機去試,每一個每一位上出現0的概率和出現一的概率各是50%,所以第1個是0的話你概率是多少概率是1/2,對吧,概率是1/2,第二,的話概率也是1/2,第3位是0概率也是1/2,一直到最后一位是0,概率也是1/2,這樣乘起來結果是多少得1/2的n次冪,顯而易見這個n越大這個難度就越高分,越小難度就越低對吧?那中本通當時在設計的時候就是保證每10分鐘,每10分鐘它需要出一個塊需要出一個塊,然后打包幾千條信息啊,那怎么去保證呢?就是調整這個n的難度啊,調整這個n的數字。


      我們舉個例子啊,比如說世界上有1萬臺礦機,每一臺的計算能力是14個t每秒,也就是每秒鐘可以計算14t次哈,氣運算14t是多少?一t是10的12次方,所以這個數是1.4×10的,13次方每秒啊,這10分鐘你到底能算多少次?咱們算一下這個10分鐘啊,應該是600秒對吧?1.4×10的13次方啊,這是每一個礦級一秒鐘算的,在乘以10的4次方這表示有1萬臺礦機,然后你還得乘以10分鐘,大概是600秒對吧,這個數字大概是8×10的19次方,也就是說10分鐘大家可以進行這么多次運算啊,這么多次運算,那我們再想一下你如果啊概率是1/2的n次冪,你想出來這個塊的話,你需要計算的次數就是2的n次冪次方,你看這就是1/4的話,你出的這個塊平均你要算64次,同樣道理你算了這么多次對不對?那么它大概相當于是2的多少次冪呢?我們可以通過計算發現,如果這個n等于66的話啊,這個時候啊你的出現概率能夠算出概率是1/2的66次冪,然后你平均需要算的次數平均的次數就是2的66次方大概也是8×10的19次方,所以在這種情況下呢,礦期就會把難度設置成n等于66,第1個能夠算出來前66位全都是0的人就成功打包這個塊就成功的挖到了礦,你沒有辦法讓自己運氣變得更好,你能夠做的就是買更多的礦機,然后拼命的去挖礦,這樣呢你就可能會得到這個比特幣,大概就是這樣一個原理是吧,好我們這一次呢解釋的到底區塊鏈這個塊到底是怎么形成,但實際上還有很多問題沒有解決啊,比如說我們如何去防止這個雙重支付的問題就沒有解決。

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <网址链> <网址链> <网址链> <网址链> <网址链> <网址链>