比特幣和區塊鏈是啥基本原理?礦機是怎麼挖礦的?
2023-04-01 10:56:27
經常有小朋友問我到底是什麼?我們準備通過兩期節目來給大家介紹一下比特幣的基本原理,那今天呢,我們首先來介紹一下挖礦到底是怎麼回事?比特幣是什麼呢?比特幣呢,實際上是一種電子貨幣或數字貨幣。卡裡面那個貨幣它不太一樣啊,
2008金融危機,2008年11月1日的時候,有一個網名叫中本聰,啊,這個中本聰呢,我們到目前為止也不知道他到底是誰,我們現在管它叫白皮書,白皮書,全名叫比特幣一種點對點的電子現金系統,它在這個白皮書裡面呢,提出了這樣一種構想,就是說呢,我們可以設計一種去中心化的電子系統去中心化的電子記帳系統,我們在進行交易的時候最重要的兩件一件事啊,就是比如說吧,我付給你多少多少錢,我要檢查我自己的銀行卡裡還有沒有這麼多錢對吧?我付給你之後還剩多少錢你就記帳,好吧,那現在的我們不管是用信用卡還是用這個支付寶或者微信都是銀行來進帳,我們信任銀行因為銀行的背後是國家的信用對不對啊,那麼他這個就說呢?其實我們並不需要有一種中心化的這個計算系統我們可以去中心化每一個人的帳本都是讓別人去看都是公開的啊,這就叫舉個例子來說啊,比如說有這麼幾個小朋友。這幾個小朋友啊,分別叫ABC d吧,進行交易啊,買東西賣東西之類的,支付對吧?支付的時候比如說有一次呢,先支付的10個比特幣,10個比特幣給幣,這件事情之後你不能自己留著,因為你自己流著別人不信對吧?所以你要把這個帳單呢,要廣播出去要告訴所有人,所以說告訴b告訴c又告訴d廣播到網絡上所有人,同時把這個帳單呢告訴d告訴a告訴c對吧?然後呢,這個c呢,又支付比如支付了兩個比特幣。給弟,同時呢,也要把這個帳單告訴其餘的所有的人,那麼我們會把它進行打包啊,打包成一個框,我們叫他區塊一個區塊裡面呢,它的大小大概是一兆啊,我們可以存4000條左右的交易記錄,有時候多有時候少一點,就取決於每一條記錄的大小啊,好了,這個快打包完了之後我們再把這個塊連結到以前的交易記錄上形成了一條連結到以前的快樂,然後過一會再把新的會計到他後面就叫區塊鏈就這麼回事兒是吧,
那好我們有了這麼一個系統之後就要解決幾個問題什麼問題呢,比如說啊,這個帳單那以誰為準,這就是一個問題,以誰為準,因為每個人的帳單可能是不一樣的,比如說呢,她可能會先記錄這件事後記錄這件事可能不是這樣的順序可能是先記錄,然後對吧?每個人的帳單可能不太一樣,你到底是以誰為準?第2個就是我們為何要記帳?憑什麼憑什麼我要去花我自己的電腦資源進入一個跟我無關的這個帳戶呢?對不對?為什麼要去找第2個第2個問題,第3個問題呢?就是如何防偽,如何防偽?比如說這個廣播的一條消息,但是實際上並沒有支付給他,那這就是一個偽造的結果,我們怎麼去防衛隊吧,怎麼去防止篡改之前的記錄,我把它改掉啊?這個怎麼辦啊?如何篡改啊?還有很多很多其他的問題,比如說如何防止雙重支付啊?一個人同時發給兩個人10個比特幣,但是實際上一共就只有10個比特幣是如何進行保密你這個信息都是公開的那別人不就知道你有多少錢了嗎?怎麼去保密等等一系列的問題我們今天主要就是前兩個阿姨誰的帳單為準還有我為什麼要去照為什麼要有獎勵?記帳的獎勵,記帳的獎勵,每一個比特幣系統中的這個用戶呢,他都可以去結帳,如果他記得帳第1個它有手續費的收益,手續費,手續費什麼意思呢?就是10個比特幣給力的話必須要多付出那麼一點點,這一點點就是給這個打包的這個人他記帳的這個人他的一個手續費,這個如果你要用銀行卡的話其實也有手續費,而且他其實挺高的,那如果你用比特幣的手續費就低了,對吧,這就是第1個它的收益,第2個就是打包的那個人他有一個打包獎勵啊,打包的獎勵只能是一個人打包一個人他會獲得獎勵獎勵是多少呢,在2008年提供這個系統的時候呢,他設計了這樣的一個方案,每10分鐘打一個包,每10分鐘打一個包,最開始這個立打8折。50個比特幣啊,過了4年之後呢,沒打一個包會獎勵你25個比特幣啊,如果你要是再過4年就獎勵12:00,我就是每過4年之後她會簡單,咱們來算一算比特幣一共有多少個啊?首先呢,每過10分鐘你會打一個包,這一個包內有50個比特幣的獎勵對吧,一個小時。十分鐘,24個小時,每年都有365天,前4年的時候都是這樣,我才成了4年,這是第2個4年就不是這樣,第2個4年會減半對吧?所以我在程各第1個4年第24年後成了1/2,第3個4年會長1/2的平方,第4個4年1/2一直加下去如果把它算出來最後結果大概是2100萬。個,也就是說呢,這個比特幣一共就只有2100萬個它是通過打包獎勵這種方式把它擴散出去的對吧,嗯,就是這樣的一個問題
那你就正因為有了這個手續費和打包獎勵這兩條所以大家都搶著去打包你搶著去打包那下一個問題以誰為準,以誰為準,只能是一個人打包對吧?我想了一個辦法叫工作量證明這個工作量證明是什麼意思呢?就是說每一個參與的用戶他都要去做一個很難的數學題很難的數學題,你把它做出來了,那你就可以有權利進行打包,你如果要進行打包的你就會獲得手機費已經打爆獎勵對吧?這個很難的數學題難到什麼程度呢?難道沒有任何一個人能夠直接通過腦子把它做出來,我們必須一個一個數去嘗試直到你把它嘗試出來了,那麼你就獲得這個獎勵所以這個過程,我們稱之為挖礦挖礦,如果你把這個數學題做出來了,你就獲得了這個打包的獎勵,而這個打包的獎勵就是幾十個比特幣對吧?你就稱之為挖礦成功了。這就是挖礦的含義,那麼具體呢,這個數據到底是怎麼回事呢?咱們再往下繼續說,我們下面來講一下挖礦的具體原理是什麼啊?挖礦的原理,我們剛才說過它是做一個很難的數學題,但是這個數學題並不是看你腦子聰明不聰明,而是看你CPU的速度如何啊,因為沒有人能夠通過腦子把它算出來的只能是一個一個試,具體的原理是什麼呢?首先我們回憶一下以前我們曾經講過一種叫做哈希哈希函數的東西,啊,他的意思呢,也可以叫數字摘要或者散列函數啊,他的意思是說我們可以把一個字符串通過一定的運算轉化成一個摘要的形式,而且呢,你這個算比較容易很難,比如說哈希算法裡面有一個很著名的黑蒜嗎?叫上2563256,啊,這是美國國家安全局發明了一種算法,如果我把一個字符串輸入到這個12 56函數裡邊,比如這個字符串叫apple,輸出了多少個二進位數?這個二斤數有256位,比如說101011010一共有多少?一共有256位,256位,而且它這個算法吧,就是不管你前面輸入的是什麼,後面的結果都是256塊錢一個二進位數,你把一個10個g的電影放進去它最後是二百五六百的數啊,如果你改一點點那個數字都不一樣,比如我的我加一個點一個點最後的是每一位的數字都有可能會發生變化這就是它的一個特點,而且呢,哈希算法的難度就在於它正向比較容易,比較容易,非常的困難,特點,我們舉個例子啊,比如說吧,有這麼一個函數就是x的三次方加log,2x+4x等於y啊,不是舉個例子,你給我一個x讓我算出來,其實這個並不難,但是你給我一個困難基本上是不可能的,我們只能怎麼辦?我們只能一個一個去試,假如你告訴我一個結果就只能一個一個試著把它射出來為止啊,這個呢。就是哈希算法的一個基本的問題啊,那麼這個挖礦呢,其實就是基於這個運算,具體的原理是什麼?這個區塊鏈呢其實是一大堆的交易信息對吧?比如說呢,這個區塊鏈已經連結到了某一個位置,從最開始開始練一直練練到了某一個位置,這是目前的情況,實際上是有一個快的頭部,有一個快的頭部,還有呢,它裡面有一些內容啊,這個內容呢,其實就是信息就是我們交易的這個記錄帳單啊,現在呢,有很多的人說我現在都想進行打包,為什麼呢?因為打包有獎勵還有手續費是吧?每一個人呢,都有自己的一個帳單,這個帳單是他收集了周圍一大堆人啊。每一個人都在準備去網上接快,接快的時候它必須要算一個數學題,什麼數學題呢,首先它會有一個字符串,它會有一個字符串的內容非常多啊,但是我們說一些主要的這個字符串包含哪些內容呢?首先包含目前的這個塊,目前已有的這個快就是錢快,這個這是第1個部分,第2個部分呢就是,嗯,他現在已經有了這個帳單啊,帳單的信息,你已經有打包好的這個帳單的信息啊,還有呢,比如說像時間之類的之類的啊,還有一大堆亂七八糟的啊,然後還有一個很重要的就是有一個隨機數,隨機數啊,這是你的一個字符串,現在呢,
你對這個字符串做兩次哈希運算,做兩次這個月算它的哈希值等於什麼呢?等於12 256,然後下256,然後,你把這個字符串啊,做兩次這個哈希運算速度其實非常快,但是你說出來之後會發現他是一個256倍的數對不對?這個256倍的數,我們要求什麼呢?要求他的錢分了,必須是0,比如說你算出來的結果是00000200,比如說有9個鼎,這有9個0,然後後面是什麼1011一直到最後一共有256為你做出這麼一個數的價,如果我的要求就是前九個位數是的,那你就算對了對了,你算對了你就有資格去打包打包的意思是說你要把你算出來的這個哈希值作為一個新快的頭部然後呢?你說出來這麼一個一個數對吧,一個數然後呢,作為一個新礦的頭部打一個包,打完了這個包之後再把你這個包幹嘛呀,接到後面去啊,於是呢,你就接觸一個新快,你就獲得了你想要的獎勵就這樣,那麼我們怎麼能算出來前面這幾位都是0呢?就要改變一個內容,就是改變這個隨機數,內容你是改不了的對吧?所以你就改變對隨機數,隨機數,最開始從0開始從0開始0算一次看看是不是滿足條件不滿足,好算一步行不行?他都是二進位的啊,你就不能這麼說,誰知道你把他試出來為止,而且都要注意每個人在計算的時候它的這個題目難度是不一樣的。為什麼呢?因為每一個人呢,雖然錢快的頭部大家都一樣啊,但是你所打包的這個帳單可能是不一樣的對吧,你這時間他有時間可能是不一樣的還有你的個人信息也是不一樣的,所以造成有人運氣好,他第1個數就算出來了,那直接就打包起來了,對吧,有人運氣不好,他雖然計算能力強做了好長時間最後也算不出來不過平均來講是這樣的誰的計算能力更強誰就更有希望打破這個快誰就更有可能去挖到這個礦就是這樣的人你說大家為什麼拼命的去買這個礦機呢,對不對。好那我們繼續往下說啊,說這個,我們有一個難度的設置,這個難度的設置也就是這個啊,這個是怎麼確定的?難度係數越多這個問題他就越難啊,為什麼就難呢?咱們想像說在這個問題中啊,你不可能反算只能是一個一個隨機趨勢,每一個每一位上出現0的概率和出現一的概率各是50%,所以第1個是0的話,你看看這是多少案例是1/2對吧?那就是1/2第2,第三是1/2,一直到最後一位是零概率也是1/2和1/2的n次冪,這個難度就越高但越小難度就越低,對吧?保證每10分鐘,每10分鐘它需要出一個塊,需要打包幾千條信息啊,那怎麼去保證呢?就是調整這個案子難度,調整這個數字,我們舉個例子啊,比如說,比如說世界上有1萬臺礦機,1萬臺礦機,他的計算能力是14個t每秒,也就是每秒鐘可以計算14t44t是多少?12次方,所以這個數是1.4×10的13次方每秒號,你到底能算多少次?咱們算一下,這個10分鐘啊,1.4×10的13次方,每一個礦機一秒都算得再乘以10的4次方就表示有1萬臺礦機,然後呢,你還得乘以10分鐘大概是600秒,對吧?這個數字大概是8×10的19次方也就是說那10分鐘大家可以進行這麼多次運算之一的n次冪,你想出的這個快的話你需要計算的次數就是2的n次冪1/464的話你出的這個快平均你要算64次,你算了這麼多次,對不對?那麼它大概相當於是2的多少次冪呢?我們可以通過計算發現,如果這個n=66的話,啊,這個時候啊,你的出現概率能夠算出概率是1/2的66次面,然後呢,你平均需要犯的次數,平均的次數就是2的66次,方,大概也是8×10的19次方,所以在這種情況下呢?它就會把難度設置成n=66,適齡的人就成功打破這個框也就成功的挖到的礦你沒有辦法讓自己運氣變得更好,你能夠做的就是買更多的礦機然後拼命的去挖礦這樣你就有可能會得到這個比特幣大概就是這樣一個原理是吧,好我們這次呢,解釋到底區塊鏈這塊兒到底是怎麼形成但是實際上還有很多問題沒有解決啊?比如說我們如何去防止這個雙重支付的問題就沒有解決我們還沒有解決說我們怎麼防止偽造的問題啊,那這些問題呢,我們會在下一回再給大家做介紹,大家如果喜歡我的老師。對。