科普:比特幣的前世今生,數字貨幣的未來趨勢 (二)

平淡清幽 發佈 2020-01-12T06:43:54+00:00

找到這個隨機數的人,把信息包和這個隨機數廣播出去,接收到的人,會馬上驗證, 如果通過驗證,就被記錄到那個整個比特幣帳本中作為新的一個區塊, 同時停止自己礦機上的尋找,開始在新的區塊上的重複這套打包挖礦的過程。


比特幣為什麼這麼猛?

比特幣之所以這麼猛,這麼強,說實在,它背後還真是有點硬東西在支撐。咱先把幾個唬人的核心概念拋出來, 然後再慢慢把它們掰拆掰拆。首先也是最重要的, 比特幣是一種公共記帳貨幣。


其次,支撐這個公共記帳貨幣系統主要有這幾項關鍵技術:分布式共識機制,有了這個就可以使去中心化權力結構成為可能;區塊鏈技術, 這個用來記錄便於驗證且不可更改的公共歷史;非對稱加密技術,這個保證了比特幣安全,保密; 最後一個是工作量證明機制,哈,這個最好玩, 後面再細說。


常有人問,什麼是比特幣?這個還東西真不太容易用以前熟悉的語言解釋明白, 你還是得學點新東西才能理解。

比特幣是這麼個系統, 它有一個軟體, 誰願意下載這個軟體都可以。下載這個軟體到你的電腦上以後, 你聯網並啟動這個軟體, 你的電腦就成為比特幣系統的一個節點, 比特幣系統就是由成千上萬的這樣的節點構成的。


運行這個比特幣軟體,它首先到網上尋找到最新的歷史記錄,並同步到你的電腦上, 所以每個節點上就都有一份整個比特幣系統從0開始的所有帳戶的全部帳目記錄。這個軟體會自動記錄更新驗證, 保證每個節點上的備份是一致的。


這個系統上記錄的帳戶里的數目就是比特幣,而且整個比特幣系統是一個不可更改的歷史記錄 。分布式共識機制和區塊鏈技術是實現以上功能所使用的技術。


下面再稍微說說非對稱加密技術,這個技術是現代密碼學裡的很重要的技術, 細節上很複雜, 但我們在這裡不需要深究。這個東西主要用於把帳戶和它的主人聯繫起來。對我們吃瓜群眾來說,只要類比電郵的用戶名和密碼理解一下就差不多了。當然這種技術要比電郵系統的安全行保密性高得多。


最後一個技術,也是吃瓜小夥伴們最感興趣的: 工作量證明機制,我要這麼說,你肯定嗤之以鼻, "工作量證明機制? 這是個什麼鬼? 這有啥好感興趣的? " 好, 讓我換一個說法試試, '挖礦!' 怎麼樣? 立馬不瞌睡了吧?


比特幣挖礦?挖什麼? 怎麼挖? 為什麼要挖?

要設計和構建一個可以信賴可以使用的分布式記帳貨幣系統, 必須解決在缺少可信的中央節點和可信任的通道的情況下,分布在網絡中的各個節點如何達成共識的問題。


這個問題具體到貨幣系統來說,就是在人人平等的分布式貨幣系統中, 理論上每個人都可以記帳。但人人記帳的話鐵定會出亂子,那麼讓誰來記帳? 怎麼記? 別人憑什麼相信你記的帳?


要不怎麼說中本聰簡直一個是神一樣的存在呢?



就在別人試圖用數學,密碼學的方法解決這個問題而陷入泥坑的時候,中本聰另闢蹊徑想一個神奇而巧妙的方法,漂亮的解決了這個問題。他把這個問題從數學,密碼學的框框中拎出來, 把它放在了人性的層面,於是,問題立刻迎刃而解。


他的辦法是, 為了鼓勵人們記帳,規定記帳的人有賞;為了避免人人記帳造成混亂,規定一次只能有一個人記帳, 記帳的人得先付點代價,得幹活,幹得最快最好的人才有權給大家記帳; 幹這個活,就是挖礦。


現在我們清楚了, 實際上挖礦就是比特幣系統中,競爭記帳權的爭奪過程。爭搶記帳權的人就是礦工, 搶到記帳權並成功記帳的礦工,便得到比特幣作為獎勵。這就是礦工和挖礦在整個比特幣系統中的角色和定位。


那麼,具體是怎麼挖礦,怎麼爭搶記帳權呢?


這個可以從兩個層面上理解。如果只想挖礦掙錢, 懶得動腦筋了解它背後是怎麼實現的, 那麼你只需準備好挖礦設備, 聯上網,下載好挖礦軟體, 啟動挖礦軟體, 保證機器供電,讓它跑就行了。


所謂挖礦設備,可以是電腦,用CPU或GPU挖礦,也可以是專門設計的挖礦機。現在用電腦挖礦已經沒戲了, 必須用強大的專門挖礦機,否則電費都掙不回來, 更不用說靠幹這個發財了。而且這活還不能蠻幹,要在"礦池"(還有未挖出幣的區域)里挖礦,否則可能一輩子都是白辛苦。


下面到了關鍵的地方,說說比特幣好是好,可為啥比特幣挖礦競爭那麼激烈, 耗費那麼多電力等資源, 既不綠色,又不環保?

挖礦的過程是這樣的, 本來呢,一個礦工(他的節點)把過去大約10分鐘全網發生的轉帳等信息收集,驗證,打包好, 形成一個交易信息包,再把上一區塊的哈希摘要加上, 就可以對這堆東西做哈希處理得到本區塊的哈希摘要了。


單純從記帳的角度看, 這已經夠了, 他就可以把這些東西廣播出去,讓其它節點驗證了。


但這裡有幾個問題,首先,這種事情每個節點都會做,而我們無法保證每個人都能做到誠實地記帳。實際上比特幣程序是公開源程序的, 每個礦工願意的話都可以改動程序, 這樣他肯定有誘惑給自己的帳上多記幾個幣。

其次,每個礦工這樣輕易的打包,哈希,然後把區塊廣播出去,比特幣系統之間的網上會有數據包滿天飛,節點會有無數的區塊要驗證。也就是說, 這樣構建的系統肯定會超負荷, 系統立馬就崩潰了,這是一定的。


就像前面提到的,中本聰在這個環節引入了被稱為工作量證明的競爭方法,巧妙的解決了這個問題。


具體說來, 他是這樣做的, 不是把本區塊的交易信息包加上上一區塊的摘要就直接做哈希處理, 而是要把這堆東西再加一個8位隨機數(叫Nonce),然後再對它們做哈希處理。


這樣就能得到一個64位的字符串值形式的摘要, 如果這個摘要滿足一定的要求,它就真的能被當作本區塊的信息摘要, 如果信息摘要不滿足要求,礦工就不得不再用一個新的隨機數去試。這裡面沒有技巧可言, 就是一個笨辦法, 不停的試。


你運行比特幣節點軟體,其中的挖礦功能就開始工作, 同時很多其他人也在做同樣的事情。誰先找到, 誰就得到這個個區塊的記帳權, 以及新發行出來的比特幣。


找到這個隨機數的人, 把信息包和這個隨機數廣播出去,接收到的人,會馬上驗證, 如果通過驗證,就被記錄到那個整個比特幣帳本中作為新的一個區塊, 同時停止自己礦機上的尋找,開始在新的區塊上的重複這套打包挖礦的過程。


如果你挖礦成功, 爭取到記帳權,你就可以給自己發獎金,具體方法就是你可以在一個你指定的地址中憑空記入一定數量的比特幣,最初是50,每4年減半,現在是12.5。 按照中本聰的設計,比特幣的總量是2100萬個,大約到2140年挖完。

關鍵字: