比特幣重復計算
㈠ 礦卡是什麼意思
礦卡是專門用來做通算以賺取網路貨幣「比特幣」的顯卡。用特定程序可以生產比特幣,可以賣給有需要的人就能兌換現實貨幣,簡稱挖礦。
因為挖礦程序需要大量重復計算,所以顯卡常年滿負荷運行,對顯卡的使用率較高更容易出現故障。
(1)比特幣重復計算擴展閱讀
關於顯卡挖礦
比特幣為一種虛擬的貨幣,比特幣挖礦制度為通過計算機硬體為比特幣網路開展數學運算的過程,提供服務的礦工可以得到一筆報酬,因為網路報酬依據礦工完成的任務來計算,為此挖礦的競爭十分激烈。比特幣挖礦開始於CPU
或者GPU
這種低成本的硬體,不過隨著比特幣的流行,挖礦的過程出現較大變化。如今,挖礦活動轉移到現場可編程門陣列上來,通過優化可以實現哈希速度,這種模式的挖礦效率非常高。
㈡ 〈挖礦系列3〉比特幣礦機發展史
比特幣從發明誕生出來後,比特幣挖礦主要經歷了3個階段(現在的礦池是挖礦的方式,非礦機技術)
CPU→GPU→ASIC專業礦機
一、CPU挖礦
說起CPU挖礦,誰是第一個呢?前面文章也說了,就是比特幣的發明者中本聰(無明確的證據,按邏輯應該是正確的)。
CPU挖礦是第一代的挖礦。2009年1月3日,比特幣創始人中本聰用電腦CPU挖出了第一批比特幣,挖出了第一個創始區塊,區塊里包含50個比特幣。
隨後一些極客、程序員、游戲挖機紛紛加入CPU挖礦,但當時的CPU挖礦,僅僅是一種嘗試和好玩,並沒有現在的商業化。
二、GPU挖礦
GPU(圖形處理單元,即顯卡)挖礦是第二代的挖礦。
從CPU換到GPU挖礦,是因為CPU中央處理器是通用性計算單元,裡面設計了計算機很多的分析處理需求,其綜合能力強但單項能力較弱,而比特幣的SHA256 hash運算,是非常單一的無腦重復計算,而且CPU的並行運算能力不強,後來,有人發現GPU的高吞吐率和高並行處理能力,其運算效率比CPU高10倍以上,並且GPU可以超頻使用以提升性能,適用於大規模的並發運算,比如密碼破解,於是人們紛紛轉向GPU挖礦。
大家肯定都聽說過比特幣歷史上最貴的吃貨、比特幣Pizza的故事了。沒錯,這個人叫Laszlo Hanyecz,他是個程序員,他在2010年5月22日,用1萬枚比特幣購買了兩個披薩,當時這兩個披薩只值不到50美元,但是這一萬枚比特幣拿到現在值幾個億了。
大家都在說Laszlo Hanyecz肯定腸子都悔青了,但是也未必,因為Laszlo Hanyecz是第一個使用GPU挖比特幣的人,他挖到了非常多的比特幣,當時的1萬枚可能只是九牛一毛了。
圖片來源於網上
但是GPU也存在缺陷,就是原本是做圖像處理的,內置的這些硬體非常好電,散熱也是個問題。
三、ASIC專業礦機挖礦
ASIC專業礦機是屬於第三代的挖礦。
ASIC是Application Specific Integrated Circuit的縮寫,是一種專門為某種特定用途設計的電子電路(晶元)。用於挖礦的晶元,就是礦機ASIC晶元了。因為被設計為只進行某一挖礦需要的特定演算法,所以ASIC晶元的設計可以簡單的多,成本也低的多。不過最重要的是,就挖礦算力來說,ASIC可以比同時代的CPU、GPU高出幾萬倍甚至更多。
ASIC礦機的出現,是隨著參與挖礦的人越來越多,算力不段上升,而GPU的算力也達到了極限,為了突破這個局限,就有人開始研發專門的礦機。
世界上第一台ASIC晶元的礦機是誰發明的呢?對,就是人稱「南瓜張」的張楠賡的阿瓦隆礦機。
礦機的晶元,需要非常強的研發技術實力,比如通訊領域,最強的晶元研發企業是高通、華為海思,因此礦機的晶元研發是一場高科技的競賽,最早的礦機廠商有龍礦礦機、閃電礦機、瑞典的KNC Minner,都已經從市場上消失,現在市場上最大的礦機廠商包括比特幣大陸(螞蟻礦機)、嘉楠耘智(阿瓦隆礦機)、Bitfury、Watts Miners等,
現在最火爆的礦機當屬比特大陸的螞蟻系列了,後續再詳細介紹如何挑選和購買礦機。
本文只簡單結束了比特幣礦機從CPU、GPU到ASIC的技術發展歷程,而現在的ASIC礦機尤其比特幣大陸的礦機占據了市場70%以上的算力和市場份額,被質疑為「算力霸權」和跟「去中心化」違背,潛在的「51%」攻擊和不公平等。而現在的礦機已經是一條完整的產業鏈,無論如何發展,也是基於市場和追求利益的行為。後續繼續分析。
㈢ 比特幣挖礦到底在計算什麼
要知道挖礦到底在計算什麼,首先得知道比特幣的本質及產生的過程。比特幣是基於網路的電子貨幣,實際是互聯網的一串代碼,依靠演算法計算得出。挖礦是完成演算法的過程,也是生產比特幣的唯一方式。而且由於演算法規定,比特幣目前只有2100萬個。
1、挖礦既能生產比特幣,又能保障交易信息
類似於,一個數學系統包含2100萬個數學題,需要通過龐大的計算量不斷的去尋求這個每個數學題的特解。另外,特解是唯一的。
下面來具體解釋挖礦,從作用來說,挖礦不僅可以增加比特幣貨幣供應,而且還可以保護比特幣交易安全、防止欺詐交易。從過程來說,比特幣網路是一個點對點的支付系統,任何人都可以通過交易程序進行交易。
為了確保交易過程被如實記錄,就需要「礦工」這個角色來負責記錄比特幣交易信息,這個時間間隔是10分鍾,礦工中記賬最好的交易記錄就會被打包存儲到一個新的區塊中,相應的礦工也會得到一定數量的比特幣獎勵。
2、挖礦過程極其復雜,非人力所能為
具體的流程如下,當某一個礦工監聽到這筆交易時,首先會對交易信息進行驗證。通過驗證的交易則會被礦工記錄下來,保存在自己的資料庫裡面。全世界可能有成千上萬個礦工在進行同一件事,但在每十分鍾內,只有一個礦工有權創建新的區塊,使自己記錄的交易信息被大家所承認並永久地存儲下來。
接下來,礦工們就需要爭奪記賬權,這是一場算力競賽的比拼,其核心是用計算機完成大量的計算任務,找到一個超難的隨機數,這個隨機數就是第一段所說的方程特解,最先算出正確隨機數的礦工勝出。根據游戲規律,一個礦工獲得記賬權的幾率與其算力佔全網算力之和的比例成正比。換句話說,找到該隨機數的概率相當於將一億個骰子扔出,最後骰子總和小於1億零50。因此,挖礦需要大量的計算機,安裝特定的演算法軟體,日夜重復運行,非人力所能為。
3、比特幣挖礦其實就是「村民記賬」
可能還是有網友不懂,那就舉個例子。在一個村裡,村民之間經常會發生借款行為,哪怕寫了字據也有違約的風險。那麼,在每次村裡有借款行為發生的時候,就用村裡的大喇叭告知大家,所有的村民(礦工)就在自己的賬簿里記下所有交易記錄。
㈣ 姣旂壒甯佹渶鍩烘湰鐨勭敓浜ц繃紼嬫槸浠涔
姣旂壒甯佹渶鍩烘湰鐨勭敓浜ц繃紼嬶紝灝辨槸鎴戜滑緇忓父璇寸殑姣旂壒甯佹寲鐭褲傚氨鏄璁$畻鏈洪氳繃榪愮畻寰楀嚭涓涓茬壒孌婄殑浠g爜緇勫悎錛岃繖涓茬粍鍚堝氨鏄姣旂壒甯侊紝鑰岃$畻鐨勮繃紼嬪彨鍝堝笇紕版挒銆傞氫織涓鐐規潵璁詫紝姣旂壒甯佹寲鐭跨殑瀹炶川灝辨槸甯姣旂壒甯佺綉緇滆$畻姣旂壒甯佷氦鏄撶殑淇℃伅錛屽苟涓旂『淇濅氦鏄撲笉閲嶅嶏紝浠庝腑鑾峰彇鐨勬姤閰灝辨槸閫氳繃璁$畻寰楀埌鐨勬暟瀛椾唬鐮佺粍鍚堬紝涔熷氨鏄姣旂壒甯併
鎴戜滑閫氳繃浠ヤ笂鍏充簬姣旂壒甯佹渶鍩烘湰鐨勭敓浜ц繃紼嬫槸浠涔堝唴瀹逛粙緇嶅悗,鐩鎬俊澶у朵細瀵規瘮鐗瑰竵鏈鍩烘湰鐨勭敓浜ц繃紼嬫槸浠涔堟湁涓瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
㈤ 隨機生成的比特幣地址會重復嗎
不會的,總會有那個幾個數字或者字母是不一樣的。因為一旦有重復的現象發生,市場可能會出現混亂,創造者當初應該也會想到一旦發生這種情況將會導致什麼樣的後果,因此個人覺得是不會有重復得到。
㈥ 比特幣機制研究
現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。
假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣 。
如下圖所示:
為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:
比特幣中每一筆交易都會有手續費,手續費會給記賬者
記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:
要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。
假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?
口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:
這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。
書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:
可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。
在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:
所以之前的區塊就變成了這樣:
這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。
如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。
首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:
這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。
此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
PoW其實在比特幣中是做了以下的三件事情。
這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。
有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)
也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。
綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。
默克爾樹的概念其實很簡單,如圖所示
這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。
區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題
將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:
簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。
UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:
UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:
㈦ 挖比特幣為什麼用顯卡 不用CPU
比特幣早期通過CPU來獲取,由於工作方式不同。CPU主要是做全功能的運算核心數量少運算能力有限(GPU是非常多的運算核心進行專項運算)。隨著GPU通用計算的優勢不斷顯現以及GPU速度的不斷發展,礦工們逐漸開始使用GPU取代CPU進行挖礦。比特幣挖礦採用的是SHA-256哈希值運算,這種演算法會進行大量的32位整數循環右移運算。有趣的是,這種演算法操作在AMD GPU里可以通過單一硬體指令實現,而在NVIDIA GPU里則需要三次硬體指令來模擬,僅這一條就為AMD GPU帶來額外的1.7倍的運算效率優勢。憑借這種優勢,AMD GPU因此深受廣大礦工青睞。目前已經離開GPU運算了。逐漸轉變為專用晶元運算,目前礦工們已經開始普遍使用集成電路(ASIC)礦機,這類礦機雖然僅可用於挖比特幣,別的幣種尚無法使用,但單台礦機便可達到百萬兆的級別,尤其受到四川、貴州等地區的礦場老闆的鍾愛。成千上萬台專業礦機馬力全開,散戶們在這么強大的算力面前,搶到比特幣的可能微乎其微。
㈧ 比特幣是一段演算法,如果兩個人同時算出來了,那一個比特幣就變成兩個了嗎
如果是兩個人同時算出來比特幣,那這個游戲會繼續下去,直到分出勝負,比特幣歸勝利一方。
打個比方說。
拳手A和拳手B在爭奪冠軍獎牌,獎牌(比特幣)只有一個,只能歸勝利的一方。
在戰斗過程中可能會出現平局,那就再開始下一局比拼,如果還是平局,就再打一局,如果一直平局就一直打下去,直到一方勝利,他就可以獲得獎牌(比特幣)。失敗一方之前所做的所有努力等於都是無用功了。
比特幣的計算過程非常的復雜,所以同時計算到比特幣的可能非常小,但不是沒有,如果出現的話就會產生區塊分叉,保留2個區塊分叉,(沒有產生比特幣)但繼續比拼下一次計算,如果一方先算出區塊,就會舍棄掉短的分叉區塊。長的區塊就會產生比特幣了。
㈨ 比特幣挖礦到底是在計算什麼
專業的說,是在算哈希值SHA-256。如果不懂計算機的話,簡單地說,就是算一些沒有意義的隨機數,誰的隨機數被比特幣區塊鏈接受了,誰就有錢拿。所以比特幣計算除了賺錢之外,其實並沒有任何實際作用。如果這些算力用來做科學計算,真的可以做很多事情,但是沒辦法,誰讓比特幣賺錢啊