999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

區塊鏈典型挖礦算法分析

2017-12-21 09:42:04張成成
數字技術與應用 2017年10期
關鍵詞:比特幣

張成成

摘要:區塊鏈挖礦不僅是系統發行新幣的途徑,還是保障區塊鏈系統安全穩定運行最重要的基石。而挖礦算法在設計的時候為了保證區塊鏈免受51%攻擊,則挖礦算法就必須保證不同。不同的挖礦算法消耗的主要計算機資源也不同,本文選擇比特幣、以太坊和Filecoin的挖礦算法為例,它們分別以消耗CPU、內存和硬盤資源為主。通過分析這三種挖礦算法的主要過程,得出區塊鏈安全性和資源浪費之間沒有兩全其美的解決方案。

關鍵詞:區塊鏈;共識機制;比特幣;以太坊;Filecoin

中圖分類號:TP309 文獻標識碼:A 文章編號:1007-9416(2017)10-0108-03

自從2009年1月3日中本聰挖出比特幣的創始區塊以來,區塊鏈成為一種新的解決去中心化節點的信息同步問題的方案,其創新性不斷被人們所認知[1]。這其中,最關鍵的是以PoW(Proof of Work,工作量證明)共識機制為基礎的公有鏈,這些系統普遍采用不同的挖礦算法來保障整個系統的安全穩定性。安全可信是區塊鏈的基石,在此基礎上人們才能談論區塊鏈的其它應用。而為了保障公有鏈的安全性,中本聰提出了挖礦的概念。挖礦是一種通過消耗計算機資源來提高惡意節點攻擊網絡成本的一種方式。挖礦的中心思想起源于Hashcash機制,該機制初次提出時主要用來阻止惡意用戶向郵件服務器發送垃圾郵件[2]。所有的用戶向郵件服務器發送郵件的時候都要在郵件中填充一些隨機字符,然后計算郵件內容的哈希值,只有當計算結果小于設定的值的時候,該郵件才能滿足郵件服務器的接受條件。在這個過程中,用戶為了發送一個郵件,需要消耗一點時間來找出一個隨機字符,使得整個郵件能被郵件服務器驗證通過。無論是合法用戶還是惡意用戶,都無法繞開這個過程,這在一定程度上會影響正常用戶的發送速度,但是影響微乎其微。而惡意用戶為了大量發送垃圾郵件,就不得不大量計算滿足條件的值,這無疑會增加惡意用戶的攻擊成本。這就是中本聰設計比特幣的時候,需要礦工計算區塊頭的哈希值的原因。然而,惡意節點仍然可以事先花費大量的時間來計算滿足條件的隨機值,然后在極短的時間內發送給郵件服務器,從而完成DOS攻擊。為了防止這種情況的發生,Hashcash要求用戶在郵件內容中添加一條最近的消息,例如最近一天的博彩結果等。這樣惡意節點的提前運算行為就被嚴格限制了。而在區塊鏈挖礦過程中,礦工計算區塊哈希值的時候也必須包含前一個區塊頭的哈希值。這樣就能嚴格限制惡意節點提前進行挖礦的時間。區塊鏈挖礦的目的也是為了保障系統的安全穩定運行,本質上以每個節點的資源消耗來換取系統的高度可靠性。

目前基于PoW的公有鏈采用的挖礦算法主要目的是為了消耗每個節點的計算機資源。計算機資源主要分為以下幾大類:CPU、內存、硬盤等。那么相應的,區塊鏈的挖礦算法也存在著以消耗這三類計算機資源為主要目的的挖礦算法。PoW共識機制的挖礦算法主要以消耗CPU和內存為主。而于今年正式發布的Filecoin則開創性的提出了一種名為時空證明(Proof-of-Spacetime)的新的共識機制。該機制的挖礦算法主要以消耗計算機硬盤資源為主。由于PoW共識機制的挖礦算法有很多,所以本文主要介紹兩種具有代表性的挖礦算法。

1 挖礦算法

區塊鏈挖礦算法種類眾多的原因之一就是為了防止51%攻擊。在區塊鏈中,PoW共識機制挖礦的能力與礦工所掌握的算力成正比。區塊鏈的特性就是每個區塊都指向前一個區塊,這樣就環環相扣,從最新的一個區塊就能一次找到創世區塊。但是如果一個惡意節點控制了大部分的算力,那么就可以按照下列步驟發起攻擊:

(1)如下圖1所示,在區塊鏈上所有的區塊都環環相扣,后面的區塊包含前一個區塊的哈希值。惡意節點A首先在第n個區塊中進行一次交易,將一筆資金發送給B,交易數據寫入到區塊n中。

(2)然后掌握51%算力的惡意節點就馬上從第n號區塊后進行挖礦,計算新的n區塊,但是該區塊不包含由A到B交易的信息,取而代之的是惡意節點A把同樣一筆數額的資金發送給C的交易信息。之后其它節點就從n號區塊后進行挖礦驗證,而惡意節點就在n號區塊后進行挖礦。因為區塊鏈的特點就是以區塊數量最多的鏈作為主鏈,則惡意節點的算力占了絕大部分后,惡意節點所在的鏈則很有可能成為主鏈。那么,A發送給B的交易的區塊就徹底消失了,這樣就能使得B損失了一部分資金。

正是因為51%攻擊的巨大危害性,則不同的區塊量系統在選擇挖礦算法的時候就努力避免選擇與現有區塊鏈系統相同的挖礦算法。這樣就使得其它鏈的礦機就無法更加高效的在新的區塊鏈上挖礦,新的區塊鏈的礦工算力被其它礦工綁架的概率就降低了,從而保障區塊鏈系統的安全性。

接下來將主要介紹比特幣、以太坊和Filecoin的挖礦算法。

2 挖礦算法分析

2.1 比特幣挖礦算法

比特幣作為最早的區塊鏈系統,其挖礦算法采用的是SHA256散列函數,該函數屬于SHA2系列。比特幣的挖礦過程很簡單:

(1)礦工收到用戶的交易信息后,首先驗證,然后構造交易的默克爾樹,得到一個默克爾樹根哈希值,打包進區塊頭中。對于礦工來說,最優的選擇就是先打包手續費高的交易,這樣才能保證其利益最大化。

(2)填充區塊頭,組成80個字節的比特幣區塊頭。區塊頭的數據結構如表1所示。

(3)將80個字節的區塊頭信息進行雙SHA256運算,得到一個32字節的哈希值。之后判斷得到的結果是否小于當前區塊的難度值,如果已達到,則該區塊就是合法的區塊。礦工把它加入到主鏈中,之后開始計算下一個區塊。如果不小于當前區塊難度值,則繼續更換區塊頭中的隨機數值,重新對區塊頭進行雙哈希運算。

這就是比特幣挖礦的完整過程。可以發現,整個挖礦過程就是不斷計算做哈希運算的過程。而整個尋找合適隨機數的過程是可以多個核心并行查找計算的。因此,擁有眾多流處理器的GPU芯片逐漸就取代了比特幣的CPU挖礦。然而,無論是CPU還是GPU,其計算過程均是將哈希運算的算法過程編譯成底層指令完成計算,指令中并沒有專門為哈希運算進行專門優化,無法充分發揮芯片的運算潛力。隨后,FPGA(Field-Programmable Gate Array,現場可編程門陣列)通過自身強大的自定義硬件過程,使得哈希函數可以直接通過硬件編程進一步提高運算效率。而近些年,ASIC(Application-specific integrated circuit,專用集成電路)的發展促使礦工可以制作專門的硬件結構對哈希運算進行硬件定制。無疑,這種方式最大可能挖掘礦機芯片的計算潛力。endprint

但是,這些優化操作只會將算力更加集中在某幾個組織手中。尤其是有了ASIC芯片之后,普通用戶使用CPU或者GPU進行挖礦已經沒有什么利潤可言了。為了防止算力太過集中的情況發生,以太坊就提出了一種新的以消耗內存資源為目的的挖礦算法,這就是Ethash。

2.2 以太坊挖礦算法

Ethash工作過程,其實就是要求從一個巨大的數據集中隨機選擇若干元素,然后對其做哈希運算的運算過程。具體過程如下:

(1)生成32個字節的種子。以太坊規定每30000個區塊是一個窗口,在同一個窗口期中,種子是相同的。種子的生成過程是這樣的:第一個窗口期的種子是將32字節的0值做一次Keccak256運算,得到一個32字節的種子。而以后每個窗口期的種子生成方式就是將前一個窗口期的種子做一次Keccak256運算。

(2)生成不定長度的緩存。緩存的生成過程是這樣的:每個緩存單元的大小為64字節,即512位。第一個緩存單元是當前窗口的種子值做Keccak512運算得到的。之后每個緩存單元都是前一個緩存單元的Keccak512值。而每個窗口期的緩存大小隨著窗口期的增加而線性增大。初始大小為16MB,之后每個窗口期增加不到128KB。之后將初步得到的緩存做3個輪次的Rand Memo Hash運算。Rand Memo Hash算法將緩存的各個單元進行混淆。

(3)生成不定長度的數據集合。首先從生成的緩存中隨機找出256個緩存單元,然后合并做哈希運算。這樣得到的數據集初始大小為1GB,而后每個窗口期增加不到8MB。注意,在驗證區塊的過程中,也是同樣的操作。這樣就需要將緩存和數據集保存到內存中,以方便挖礦或者驗證區塊的時候頻繁的讀取數據消耗過多的時間。

(4)礦工之后就通過PoW機制進行挖礦操作。但是因為每個緩存和數據集生成時間需要消耗大量的時間,則為了防止在下一個窗口期到來的時候影響出塊速度,則鼓勵礦工提前計算好緩存值和數據集。

Ethash在運行過程中需要消耗大量的內存資源進行密集的查找元素計算工作。而ASIC礦機運行過程中需要競爭大量的帶寬資源,這就使得采用Ethash算法的以太坊很難出現具有實用價值的ASIC礦機。實際上,當前以太坊礦工使用的芯片主要是顯卡芯片,利用GPU的眾多核心加快挖礦速度。

2.3 Filecoin挖礦算法

Filecoin其實存在于IPFS(Inter Planetary File System,星際文件系統)的激勵層,而IPFS能夠提供去中心化的數據存儲和訪問功能。因此,Filecoin需要大量的數據讀寫操作,這就要求礦工的挖礦過程進行數據讀寫操作。Filecoin的挖礦共分為存儲挖礦和檢索挖礦兩部分,分別進行數據的存儲和檢索工作。

2.3.1 存儲挖礦

存儲挖礦分為四部分:抵押、接收訂單、密封和證明。

2.3.1.1 抵押

抵押的主要目的是為了保證存儲礦工能夠為網絡提供存儲服務。存儲礦工首先在區塊鏈上進行一次抵押交易,該交易主要通過保存一個抵押品來抵押存儲礦工的存儲容量。而當存儲礦工成功生成了他們提交數據的存儲證明,那么存儲礦工先前的抵押品就可以退回。如果存儲礦工未完成相應的存儲證明,那么將會失去部分數量的抵押品。一旦區塊鏈上(分配表)出現了一個抵押交易,那么礦工就可以向存儲市場提供他們的存儲空間,并且可以設置一定的價格,并生成一個賣單掛到市場的訂單賬本中。

2.3.1.2 接收訂單

接收訂單的主要目的是為了從存儲市場中獲取存儲請求。系統就會檢查礦工在存儲市場上的賣單是否與對應的來自客戶端的買單相匹配。一旦賣單和買單想匹配,那么客戶就會將自己的數據發送給存儲礦工。而實際上,礦工收到的是一個個數據片。當存儲礦工收到數據片后,就把數據存儲到自己的硬盤中,與此同時,礦工和客戶端都會簽署一個交易訂單,并將之提交到區塊鏈上。

2.3.1.3 密封

密封的目的是為未來的證明準備數據片。存儲礦工的存儲空間被分為幾個扇區,每一部分都包含分配給礦工的數據片。網絡通過分配表對每個存儲礦工的各個存儲扇區進行跟蹤。當一個存儲扇區存儲滿了之后,該扇區就會被密封。密封操作過程很慢,它需要依次將一個扇區的數據轉換保存為一個副本。而每個數據的物理拷貝都與存儲礦工的公鑰相關聯。

2.3.1.4 證明

存儲礦工需要證明他們存儲了提交的數據片。當存儲礦工被分配到一個數據的時候,他們必須重復生成數據副本證明,以此來保證存儲礦工確實保存了數據。該證明將推送到區塊鏈中,并被全網驗證。

2.3.2 檢索挖礦

檢索挖礦分為兩部分:接收訂單和發送。

2.3.2.1 接收訂單

索引礦工從索引市場中獲取數據請求。索引礦工通過向網絡中傳播賣單來宣布他們的數據片。他們設置一個價格,然后添加一個賣單到市場的訂單賬本中。然后,索引礦工檢查他們的訂單是否與對應的客戶買單相匹配。

2.3.2.2 發送

一旦訂單匹配,索引礦工將會發送他們的數據片給客戶端。客戶端收到數據片后,礦工和客戶端簽署一個交易訂單并提交到區塊鏈中。

3 結語

區塊鏈,尤其是公有鏈中,為了保障系統的安全性,容錯率達到50%的PoW共識機制似乎是個好的選擇。但是它也帶來了嚴重的能源浪費問題。這個能源能源浪費問題包含兩個方面,一個指能源浪費,一個指礦機的浪費。能源浪費指的是礦工需要消耗大量的電力來進行挖礦。以比特幣為例,當前的比特幣網絡全網算力為5000PH/S,而阿瓦隆即將發布的Avaon741礦機單機算力為8TH/S,所用功率為1150瓦,即使全網礦機全部更換為最新礦機,全網一天仍要消耗約1700萬度電力能源。無疑,這是一種巨大的能源浪費。

礦機浪費指的是廢舊的礦機無法二次利用。以比特幣ASIC礦機為例,該種礦機通過對底層的硬件進行定制優化,使其做哈希運算速度明顯高于顯卡礦機,但是正因為這一點,所以導致了比特幣ASIC礦機在挖礦淘汰后就無法二次利用。而以太坊挖礦主要以顯卡為主,其挖礦淘汰后仍然可以被個人電腦收購使用。同樣,Filecoin礦機挖礦淘汰后仍然可以被普通用戶加以利用,這和以太坊一樣,均在一定程度上減少了能源浪費。

然而,通過以上三個典型算法的說明,我們發現區塊鏈中的挖礦算法既要保證系統的安全,又要盡可能的降低能源浪費,這是個很難同時滿足的要求。這同時也說明了,區塊鏈系統的安全性是需要以一定的能源浪費為代價的。

參考文獻

[1]Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[J]. Consulted, 2008.

[2]Back A. Hashcash - A Denial of Service Counter-Measure[C]// USENIX Technical Conference.2002.endprint

猜你喜歡
比特幣
國際比較視角下比特幣價值體現研究——基于互聯網經濟學理論
商情(2016年44期)2017-03-05 00:03:57
區塊鏈對互聯網金融發展的重塑與挑戰分析
比特幣淺析
科技資訊(2016年28期)2017-02-28 11:15:45
從比特幣的生產和交易流程看電子貨幣離我們現實生活有多遠
未來幣(NXT):第二代虛擬貨幣的卓越代表
區塊鏈技術在金融領域的應用與前景研究
中國市場(2016年32期)2016-12-06 11:21:13
“區塊鏈”發展現狀評述及展望
商(2016年34期)2016-11-24 14:46:00
智能合約與金融合約
商(2016年6期)2016-04-20 17:50:36
比特幣對經濟穩健運行的意義分析
中國市場(2016年7期)2016-03-07 09:48:34
試論大眾媒體對“虛擬財富”的社會控制功能
企業導報(2015年15期)2016-01-18 10:25:16
主站蜘蛛池模板: 久久久黄色片| 久久午夜夜伦鲁鲁片不卡| 91九色国产在线| 国产福利微拍精品一区二区| 国产又爽又黄无遮挡免费观看| 欧美中文字幕一区| 婷婷六月在线| 日本免费新一区视频| 国产极品美女在线观看| 91久久国产成人免费观看| 欧美一级爱操视频| 最新亚洲人成网站在线观看| 久久久久亚洲Av片无码观看| 新SSS无码手机在线观看| 久久综合一个色综合网| 国产欧美日韩免费| 久久久亚洲国产美女国产盗摄| 欧美精品在线看| 亚洲欧美另类日本| 欧美五月婷婷| 婷婷亚洲视频| 婷婷丁香色| 精品国产自在现线看久久| 亚洲欧洲日产国产无码AV| 就去吻亚洲精品国产欧美| 亚洲精品日产AⅤ| 国产一级毛片网站| 国产综合精品一区二区| 91在线中文| 精品人妻系列无码专区久久| 国产麻豆精品久久一二三| 国产精品亚洲综合久久小说| 精品无码国产自产野外拍在线| 欧美精品1区2区| 婷婷久久综合九色综合88| 黄色网在线免费观看| 欧美亚洲第一页| 9啪在线视频| 亚洲 成人国产| 国产成人a毛片在线| 五月婷婷综合网| 精品三级网站| 亚洲啪啪网| 国产在线无码av完整版在线观看| 色香蕉网站| 久久9966精品国产免费| 中文字幕首页系列人妻| 99在线观看国产| 免费看a级毛片| 扒开粉嫩的小缝隙喷白浆视频| 青青青视频91在线 | 国产精品入口麻豆| 日本a∨在线观看| 五月婷婷导航| 久久天天躁狠狠躁夜夜2020一| 真人高潮娇喘嗯啊在线观看| 国产精品爽爽va在线无码观看| 国产亚洲精品97AA片在线播放| 91久久夜色精品| 国产视频a| 欧美综合在线观看| 高清久久精品亚洲日韩Av| 亚洲高清资源| 欧美日韩福利| 99精品高清在线播放| www.99在线观看| 久久人搡人人玩人妻精品| 91成人免费观看| 久久综合色天堂av| 久久夜色撩人精品国产| 华人在线亚洲欧美精品| 天堂网亚洲系列亚洲系列| 午夜国产理论| 手机永久AV在线播放| 久热精品免费| 亚洲欧洲日韩久久狠狠爱| 久久综合亚洲色一区二区三区| 日本a∨在线观看| 中国精品自拍| 国产特级毛片aaaaaa| 精品视频一区二区观看| 午夜视频在线观看免费网站|