區塊鏈技術及應用---區塊鏈技術(一)

第一章 瘋狂的比特幣及其原理機制

1.1 比特幣誕生

比特幣起源於2008年一位化名中本聰的人(或團隊)發佈的一款比特幣系統,系統軟件全部開源,挖掘的一一個區塊命名爲“創世區塊”。這款系統本身分佈在全球各地,沒有中央管理服務器,沒有負責的主題=體,沒有信用背書,然而這款三無系統卻有出乎意料的穩定性。

1.2 瘋狂的比特幣

1.2.1 瘋狂的價格

對於比特幣的發展史,它的價格就像過山車一樣大起大落:
曾經因爲交易平臺本身漏洞被黑客攻擊而導致價格的暴跌;也曾因爲亞洲投資者湧入、英國脫歐、比特幣本身機制的原因導致價格暴漲。低的時候價格有幾美元,高的時候甚至突破了一萬美元,目前的價格(截止2020.4.13)約爲6703.62美元一個比特幣,可以預見比特幣的價格還會繼續起伏。

1.2.2 瘋狂的礦機和芯片

比特幣就像礦石一樣,“礦機”就是賺取比特幣的計算機,用戶下載比特幣運算軟件,參與記賬並獲取相應的記賬激勵,挖到比特幣。

第一階段普通計算機(CPU)即可挖礦並能有不錯的收益;第二階段,挖礦節點增多,CPU產出率下降,開始使用多處理器地GPU提升算力,增大產出率;第三階段出現了比特幣挖礦定製化機器,專門爲哈希運算設計,算力進一步提高。

芯片經歷了CPU–>GPU–>FPGA–>ASIC的階段。
在這裏插入圖片描述
值得注意的是比特幣挖礦耗電巨大,這是因爲比特幣獨特的計算密集型挖礦算法和證明工作量的共識協議。之際上面向企業級應用的區塊鏈平臺和應用採用的共識協議和算法不需要這麼大的能量消耗。

另外還有兩個概念要提一下:礦場和礦池
單個節點挖到比特幣的概率是與其算力佔所有節點總算力的比例成正比的,隨着挖礦節點劇增,單個節點挖礦效益下降,出現了管理衆多挖礦設備的場所----礦場。礦場需要消耗巨大的能量並會發出極大的噪聲,通常設立在沒有人煙的地方,並且要注意通風防塵、溫度控制等設備維護措施。
除了產業化的礦場,還有將大量算力較低的礦機(稱作礦工)聯合起來共同運作的平臺----礦池,挖到的比特幣獎勵按照貢獻度分享(礦池實際沒有提升單個礦工收益,但提升了穩定性)

1.3 通俗地講比特幣機制

簡單來說,假設一個村上沒有銀行,也沒有令人信任的村長負責記錄和維護村民地財務往來(即沒有任何中間機構或個人),這時候村民想了一個方法:大家一起記賬。

舉個例子,張三要轉給李四1000塊錢,張三在村裏吼一句:“我張三要給李四轉1000塊錢。”附近村民聽見後確定兩件事:(1)聲音是張三,不是別人冒名頂替的。(2)張三有足夠的錢,每個村民有個賬本上面記錄了所有村民有多少錢。確定完兩件事後在本子上記下xxxx年xx月xx日張三轉給李四1000塊錢,然後口口相傳給十里八村,大家都知道後可以共同證明這件事。

這樣一個所有村民達成一致的記賬系統就是比特幣系統。
在這裏插入圖片描述
故事到這裏引出了三個值得思考的問題:

  1. 記的賬會不會被篡改
  2. 村民有什麼動力幫別人記賬
  3. 多人記賬記得不同怎麼辦,以誰記的賬爲準

且看比特幣系統如何解決,
在這裏插入圖片描述
第一,比特幣採用兩種策略保證賬本不會被篡改,(1)人人記賬,人人手上有一本賬本,個人無權修改其他村民的賬本,即使自己做了假賬別人是不認可的。(2)採用“區塊+鏈”的賬本結構,一個區塊記錄一段時間的交易,區塊之間由“鏈”連接成爲一個完整的賬本,如果對區塊內容進行修改—>破壞鏈式結構導致鏈條斷了很容易被檢測到。
在這裏插入圖片描述
第二,比特幣系統是人人記賬,那麼我爲什麼要給別人記賬呢?這就涉及比特幣系統的激勵機制,第一個被認可的記賬會獲得若干比特幣的獎勵,這也是獲得比特幣的唯一來源,這種獎勵措施鼓勵衆多礦工積極記賬。誰的賬本被認可後,所有人自動拷貝這塊賬本,保證區塊鏈自動安全運行。

第三,有了激勵,大家就會搶着記賬是自己的記賬被認可,以誰記的賬爲準就是一個問題了,於是想了一個公平的辦法:對每一塊賬本(類比於現實中賬本的一頁)都出一道難題,先解出這道難題的礦工就以他記的賬爲準。這裏破解難題的過程就被稱作“挖礦”,需要說明的是解題過程很難,但答案很容易驗證。

比特幣通過“區塊+鏈”的分佈式賬本防止交易篡改,通過發放比特幣激勵來促使礦工記賬,通過計算難題來解決記賬一致性問題。

1.4比特幣交易

瞭解比特幣交易首先要了解比特幣地址,要完成交易需要一個類似於現實中銀行賬戶的實體。實際上比特幣交易中的實體是一對公私鑰的組合,公鑰可以理解成“銀行賬戶”,在交易中被引用來指明資金的來源和去向,私鑰可以理解成“驗證密碼”,用於確認交易的合法性。

公私鑰及錢包地址的產生過程:首先隨機生成256比特的比特串作爲私鑰(可以生成2256個,基本不可能發生碰撞),再根據橢圓曲線算法對私鑰運算生成公鑰,最後公鑰根據哈希算法和Base58編碼得到錢包地址。

比特幣交易有兩種類型:(1)coinbase交易,就是挖礦獎勵比特幣。(2)普通用戶之間的轉賬交易。

根據不同用戶不同資金比特幣有網頁錢包、手機錢包、硬件錢包等,其安全性與價格各不相同。

獲得比特幣的三種途徑:

  1. 礦工挖礦得到的激勵
  2. 線下通過中間人購買,線下支付等價物後轉出方將比特幣從他的地址轉到購買方的地址,也可以通過現上交易所購買。
  3. 商家收取比特幣賣東西。

1.5 比特幣挖礦

比特幣系統記賬者爭搶激勵被形象地比作“挖礦”,實質上比特幣挖礦就是爭奪某一個區塊的記賬權。最初生產一個“交易記錄區塊”能獲得50個比特幣的激勵,爲了控制比特幣的發行數量激勵每4年就會減半,預計一共會發售2100萬個比特幣。
比特幣系統約每10分鐘記錄一個交易區塊,系統會隨機生成一道數學難題,礦工們通過解題爭奪該區塊的記賬權,奪得記賬權的節點將交易數據打包簽名成一個不可修改地區塊向其他節點廣播,被全部節點認可後這個區塊會被永久保存。

1.5.1 數學難題

解釋一下挖礦過程中解得數學難題,先來了解一下哈希算法:簡單理解爲把一個任意長度的輸入值計算成一個固定長度的字符串,這個字符串就是得到的哈希值。比特幣系統採用SHA-256算法,得到的是一個長度爲256bit的哈希值。

比特幣系統裏一個區塊生成時需要將上一個區塊的哈希值、本區快交易信息的默克爾樹根、一個未知的隨機數拼接在一起進行哈希運算,這就是數學難題。

爲保證大約10分鐘生成一個區塊,這個運算需要有一定難度,比如開頭要有n個0,由於哈希值的位數是有限的—總可以計算出一個符合要求的哈希值;隨機數的運算沒有規律—只能通過暴力枚舉算得,所以要算出這個哈希值需要大量運算。哈希值由16進制數表示,前n位是0就需要16n次運算。

隨着技術發展,哈希運算越來越快,但爲了保持10分鐘一個區塊的速度就需要提升題目難度,比如增加以0開頭的位數,如果題目難了減少以0開頭的位數來降低難度。比特幣系統大概每14天調整一次難度(通過對比生成一個區塊的實際時間與期望時間)。

1.5.2 礦池原理

一般是一個企業維護一個礦池服務器,用戶在礦池註冊賬戶,添加礦工,一個賬戶可有多個礦工,礦工主動向礦池申請任務或者礦池給礦工分配任務,執行任務。礦工只負責計算,不參與驗證,有礦池服務器進行驗證,即礦工不用存儲歷史區塊,極大降低了礦工的算力消耗和存儲消耗。

但是礦池弊端也很明顯,即這種託管式是違反區塊鏈去中心化的理念的。不過我們也不用太過擔心,因爲從經濟學角度來說,如果一個礦池掌握了大量算力,它爲了自己的利益保證也會努力維護比特幣系統的正常運行的。

1.6 比特幣分叉

比特幣分叉就是系統更新造成的版本差異,一款應用升級只需要廠商發佈、用戶接收即可,但是比特幣這種去中心化的系統升級必須考慮協調網絡中的所有節點。如果兩個節點在一定時間內運行不同版本就叫做分叉

分叉分爲兩種:軟分叉和硬分叉。

  1. 軟分叉:就可以理解成更新內容較少,新版本兼容舊版本,然後通過新版本用戶數量的增加促使舊版本用戶更新,
  2. 硬分叉:可以理解爲大幅度更新,新版本不兼容舊版本,最終導致形成兩條獨立的鏈。

這裏拓展一下:歷史上一次較大的硬分叉事件是2017年8月1日的“比特現金”。起因是開發者和礦工的分歧,比特幣一個區塊大小爲1M,按10分鐘一個區塊的速度只能完成7筆交易,造成大量交易排隊,礦工的收益也少。爲解決這個問題提出來兩種方案:擴容方案和隔離見證方案。
擴容方案就是直接擴大一個區塊的大小,容納更多交易。隔離見證方案分割交易爲交易信息和見證信息,類似於行李託運,即將交易信息上車,見證信息託運。礦工們認爲擴容方案能獲得更多激勵,開發者們認爲擴容是揚湯止沸,因爲區塊不可能無限擴大,而且這樣會提高挖礦門檻不利於去中心化。二者最終沒有達成一致意見,造成了硬分叉,於是出現了“比特幣現金”,它與比特幣是兩條鏈。

小結

比特幣等電子貨幣的價值並不是跟本文所述完全一致,我們要對這類貨幣有自己的價值判斷,這其實很像投資,一樣產品的價值是起伏的,說的極端點就是有人覺得很有價值,有人覺得一文不值,我們要認識到這其中存在風險。

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