『壹』 持續上漲的比特幣,一年一共生產幾枚呢
『貳』 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。
在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。
在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。
每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:
交易的語法和數據結構必須正確。
輸入與輸出列表都不能為空。
交易的位元組大小是小於MAX_BLOCK_SIZE的。
每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。
沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。
nLockTime是小於或等於INT_MAX的。
交易的位元組大小是大於或等於100的。
交易中的簽名數量應小於簽名操作數量上限。
解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。
池中或位於主分支區塊中的一個匹配交易必須是存在的。
對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。
對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。
對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。
對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。
使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。
如果輸入值的總和小於輸出值的總和,交易將被中止。
如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。
每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。
以下挖礦節點取名為 A挖礦節點
挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。
驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。
A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。
一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。
然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。
如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。
在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。
UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。
塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。
區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。
A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。
用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。
需要以下參數
• block的版本 version
• 上一個block的hash值: prev_hash
• 需要寫入的交易記錄的hash樹的值: merkle_root
• 更新時間: ntime
• 當前難度: nbits
挖礦的過程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。
簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。
如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?
比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。
那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。
為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。
舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。
每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。
比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。
節點維護三種區塊:
· 第一種是連接到主鏈上的,
· 第二種是從主鏈上產生分支的(備用鏈),
· 第三種是在已知鏈中沒有找到已知父區塊的。
有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。
如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。
選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。
因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。
當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。
分叉之前
分叉開始
我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。
假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。
比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。
分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。
所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。
從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。
比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
『叄』 什麼是爆塊/報塊
比特幣協議規定全網每10分鍾會產生1個區塊,礦工完成計算任務,發現新的區塊後,會獲得約12.5個比特幣的獎勵,發現新區塊又被稱為爆塊或者報塊。
『肆』 比特幣不是10分鍾一個塊嗎
比特幣是平均10分鍾產生一個塊,並不是平均分配的。
一個塊是塊鏈中的一條記錄,包含並確認待處理的交易。平均約每10分鍾就有一個包含交易的新塊通過挖礦的方式添加到塊鏈中。
普銀、萊特幣、狗狗幣、瑞波幣都有自己的區塊,交易的信息都會記錄到區塊鏈上。
『伍』 關於比特幣的幾個問題的研究
018年,區塊鏈技術井噴式的發展,同1997年那會兒的互聯網何其相像。筆者相信,區塊鏈技術的發展,肯定會快過互聯網。如果再不攝入點區塊鏈方面的知識,也許你將落後一個時代。本文將回答關於比特幣的幾個問題。
問題一:比特幣怎麼誕生的?
2008年11月1日,一個自稱中本聰(Satoshi Nakamoto)的人在一個隱秘的密碼學評論組(密碼朋克)上貼出了一篇研討微V-BQ爾無吧疤Y陳述,陳述了他對電子貨幣的新設想——比特幣就此面世。
問題二:比特幣如何生產?
比特幣網路通過「挖礦」來生成新的比特幣。所謂「挖礦」實質上是用計算機解決一項復雜的數學問題,來保證比特幣網路分布式記賬系統的微V-BQ爾無吧疤Y一致性。比特幣每10分鍾產生一個區塊,包含過去十分鍾所有的交易信息。誰能算出數字,誰就獲得記賬權。獲得記賬權後,將向全網廣播、存儲。由誰獲得記賬權是不確定的,當然,你運算能力越強,獲得記賬權的幾率越高。隨後比特幣網路會新生成一定量的比特幣作為賞金,獎勵獲得記賬權的人。
問題三:比特幣的特點?
完全去處中心化,沒有發行機構,也就不可能操縱發行數量。比特幣不需要第三方機構,彼此信任的點對點交易。信任的建立不再基於大型機構,而是基於密碼技術和代碼。比特幣可以在任意一台接入互聯網的電腦上管理。不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣。操控比特幣需要私鑰,它可以被隔離保存在任何存儲介質,除了用戶自己之外無人可以獲取。作為由A到B的支付手段,比特幣沒有繁瑣的額度與手續限制,知道對方比特幣地址就可以進行支付。
問題四:比特幣能被仿造嗎?
山寨者難以生存。由於比特幣演算法是完全開源的,誰都可以下載到源碼,修改些參數,重新編譯下,就能創造一種新的p2p貨幣。但這些山寨貨幣微V-BQ爾無吧疤Y很脆弱,極易遭到51%攻擊。任何個人或組織,只要控制一種p2p貨幣網路51%的運算能力,就可以隨意操縱交易、幣值,這會對p2p貨幣構成毀滅性打擊。很多山寨幣,就是死在了這一環節上。而比特幣網路已經足夠健壯,想要控制比特幣網路51%的運算力,所需要的cpu/gpu數量將是一個天文數字。
問題五:為什麼比特幣總量為2100萬?
2009年比特幣誕生的時候,每筆賞金是50個比特幣。誕生10分鍾後,第一批50個比特幣生成了,而此時的貨幣總量就是50。隨後比特幣就以約每10分鍾50個的速度增長。當總量達到1050萬時(2100萬的50%),賞金減半為25個。當總量達到1575萬(新產出525萬,即1050的50%)時,賞金再減半為12.5個。依此類推。根據其設計原理,比特幣的總量會持續增長,直至100多年後達到2100萬的那一天。但比特幣貨幣微V-BQ爾無吧疤Y總量後期增長的速度會非常緩慢。簡單來說,比特幣產量每4年減半,目前每10分鍾產生12.5個比特幣。事實上,87.5%的比特幣都將在頭12年內被「挖」出來。而且,2100萬也只是理論數據,現實中,由於初期比特幣不受重視,不少比特幣遺失。
問題六:比特幣礦工有哪些收益?
首先是通過運算,獲得記賬權後,直接獎勵比特幣。但按照比特幣規則,隨著時間增長,獎勵會越來越少。將來的收益,主要通過收取比特幣交易產生的手續費。
問題七:為什麼比特幣不可修改?
舉個例子,假如A和B進行交易,A需要付給B一百個比特幣。但如果A想要賴賬,只想付給B一個比特幣。按照比特幣的規則,他就必須要獲得下一個10分鍾微V-BQ爾無吧疤Y的記賬權,才能修改;同樣,他也必須要再獲得下下個10分鍾的記賬權,以此類推。所以,修改是幾乎不可能的。
問題八:比特幣交易速率?
理論上講,比特幣交易速率是每秒7筆。實際上,比特幣目前交易速度只有每秒一筆。
問題九:比特幣為什麼有如此強的生命力?
把比特幣比作一個公司,那麼他沒有股東會、董事會、管理層,沒有嚴厲的領導,沒有HR,沒有部門經理,沒有員工,沒有經營場地,沒有收入。但比特幣公司成功運行了9年時間,從沒有出現任何問題,並且市值數千億,網路的運行時依靠一套數學演算法、激勵機制和社區來進行管理和治理。
問題十:比特幣面臨的問題?
一是交易確認時間長。比特幣錢包初次安裝微V-BQ爾無吧疤Y時,會消耗大量時間下載歷史交易數據塊。而比特幣交易時,為了確認數據准確性,會消耗一些時間,與p2p網路進行交互,得到全網確認後,交易才算完成。
二是大眾對原理不理解,以及傳統金融從業人員的抵制。懂原理的人,知道比特幣無法人為操縱和控制。但大眾並不理解,很多人甚至無法分清比特幣和Q幣的區別。「沒有發行者」是比特幣的優點,但在傳統金融從業人員看來,「沒有發行者」的貨幣毫無價值。
『陸』 一枚比特幣賣$64015,家用電腦24小時挖礦,多久才能挖到一枚
從理論上來講,任何一台可以運轉的計算機安裝相應軟體後即可成為「挖礦機」,這意味著任何擁有電腦的人也都是潛在的礦工。
很多人可能覺得比特幣挖礦很容易,只需要下載一個軟體,然後在電腦上運行就行了,就像運行炒股軟體一樣,在這只能說大家是異想天開。
事實上按照目前比特幣的挖礦難度來看,普通的家庭電腦根本就吃不消,比特幣挖礦其實就是在運算,這種特定的演算法是基於加密哈希演算法的數學難題,想要解開這一數學難題,則需要這台用於挖礦的計算機具備極強的數據處理能力。
在幾年前比特幣挖礦難度比較低的時候,家庭電腦或許還可以用到,在最開始的時候,確實有不少人用家庭電腦挖到比特幣了。
但是隨著比特幣挖礦難度越來越大,它所消耗的運力越來越多,特別是最近一段時間,有大量的人群加入到挖礦當中,挖礦的速度比較快,這進一步加大了挖礦的難度。
比特幣平均下來大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣,每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。
而未了達到平均每10分鍾產生一個新區塊的平衡,挖礦難度在每2016個區塊之後或大約每14天增加或減少一次,具體難度是增加還是減少主要取決於發現之前2016個區塊的速度。如果之前的2016年區塊發現時間少於14天,則難度增加,而如果發現時間超過14天則難度降低,目標是將平均區塊發現時間恢復到10分鍾。
而按照最近一段時間參與挖礦的人數來看,事實上發現2016個區塊的速度可能要小於14天,這意味著越往後面挖礦難度越大。
如果中本聰把比特幣換成法幣,需要他的銀行賬號去接收法幣,這家銀行將有一批人知道中本聰的真實身份,在這種情況下,我認為全員保守秘密是不可能的,一定會有人通過某種方式將信息泄露出來。這就意味著中本聰完全暴露在世人面前,中本聰長期以來保持匿名的努力毀於一旦。
這么多年來,有無數人聲稱自己是中本聰,最終沒人能證明自己就是中本聰。而他們想證明自己也很簡單,用中本聰的地址交易1美元即可。
當然,如果中本聰想把比特幣換成其他加密貨幣,是不會暴露身份的,但這樣做的意義是什麼?他是比特幣世界的上帝,不是以太坊世界的上帝, 一個上帝不能背叛自己的世界 。
更進一步思考,中本聰為什麼要把比特幣換成美元?在白皮書里,中本聰對比特幣的定義是一種「電子現金系統」,毫無疑問他的理想是比特幣終有一天變成全世界都認可的「錢」。 如果比特幣真成了錢,比美元更普適的錢,還需要換成美元嗎?
我們不如去思考一些更有趣的問題,比如:我們讓比特幣漲到多少,能幫助中本聰成為真正的世界首富?
中本聰的身份,是比特幣世界最大的謎團,是構成一個好故事不可缺少的一環。我經常會猜想,如果我是中本聰,我會怎麼做,我的目標是什麼,我要解決什麼問題,等等。思考越多,就發現這個故事越有趣, 有趣程度甚至不輸給比特幣本身 。
#比特幣[超話]# #數字貨幣# #歐易OKEx#
『柒』 深入了解區塊鏈的共識機制及演算法原理
所謂「共識機制」,是通過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;對一筆交易,如果利益不相乾的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。再通俗一點來講,如果中國一名微博大V、美國一名虛擬幣玩家、一名非洲留學生和一名歐洲旅行者互不相識,但他們都一致認為你是個好人,那麼基本上就可以斷定你這人還不壞。
要想整個區塊鏈網路節點維持一份相同的數據,同時保證每個參與者的公平性,整個體系的所有參與者必須要有統一的協議,也就是我們這里要將的共識演算法。比特幣所有的節點都遵循統一的協議規范。協議規范(共識演算法)由相關的共識規則組成,這些規則可以分為兩個大的核心:工作量證明與最長鏈機制。所有規則(共識)的最終體現就是比特幣的最長鏈。共識演算法的目的就是保證比特幣不停地在最長鏈條上運轉,從而保證整個記賬系統的一致性和可靠性。
區塊鏈中的用戶進行交易時不需要考慮對方的信用、不需要信任對方,也無需一個可信的中介機構或中央機構,只需要依據區塊鏈協議即可實現交易。這種不需要可信第三方中介就可以順利交易的前提是區塊鏈的共識機制,即在互不了解、信任的市場環境中,參與交易的各節點出於對自身利益考慮,沒有任何違規作弊的動機、行為,因此各節點會主動自覺遵守預先設定的規則,來判斷每一筆交易的真實性和可靠性,並將檢驗通過的記錄寫入到區塊鏈中。各節點的利益各不相同,邏輯上將它們沒有合謀欺騙作弊的動機產生,而當網路中有的節點擁有公共信譽時,這一點尤為明顯。區塊鏈技術運用基於數學原理的共識演算法,在節點之間建立「信任」網路,利用技術手段從而實現一種創新式的信用網路。
目前區款連行業內主流的共識演算法機制包含:工作量證明機制、權益證明機制、股份授權證明機制和Pool驗證池這四大類。
工作量證明機制即對於工作量的證明,是生成要加入到區塊鏈中的一筆新的交易信息(即新區塊)時必須滿足的要求。在基於工作量證明機制構建的區塊鏈網路中,節點通過計算隨機哈希散列的數值解爭奪記賬權,求得正確的數值解以生成區塊的能力是節點算力的具體表現。工作量證明機制具有完全去中心化的優點,在以工作量證明機制為共識的區塊鏈中,節點可以自由進出。大家所熟知的比特幣網路就應用工作量證明機制來生產新的貨幣。然而,由於工作量證明機制在比特幣網路中的應用已經吸引了全球計算機大部分的算力,其他想嘗試使用該機制的區塊鏈應用很難獲得同樣規模的算力來維持自身的安全。同時,基於工作量證明機制的挖礦行為還造成了大量的資源浪費,達成共識所需要的周期也較長,因此該機制並不適合商業應用。
2012年,化名Sunny King的網友推出了Peercoin,該加密電子貨幣採用工作量證明機制發行新幣,採用權益證明機制維護網路安全,這是權益證明機制在加密電子貨幣中的首次應用。與要求證明人執行一定量的計算工作不同,權益證明要求證明人提供一定數量加密貨幣的所有權即可。權益證明機制的運作方式是,當創造一個新區塊時,礦工需要創建一個「幣權」交易,交易會按照預先設定的比例把一些幣發送給礦工本身。權益證明機制根據每個節點擁有代幣的比例和時間,依據演算法等比例地降低節點的挖礦難度,從而加快了尋找隨機數的速度。這種共識機制可以縮短達成共識所需的時間,但本質上仍然需要網路中的節點進行挖礦運算。因此,PoS機制並沒有從根本上解決PoW機制難以應用於商業領域的問題。
股份授權證明機制是一種新的保障網路安全的共識機制。它在嘗試解決傳統的PoW機制和PoS機制問題的同時,還能通過實施科技式的民主抵消中心化所帶來的負面效應。
股份授權證明機制與董事會投票類似,該機制擁有一個內置的實時股權人投票系統,就像系統隨時都在召開一個永不散場的股東大會,所有股東都在這里投票決定公司決策。基於DPoS機制建立的區塊鏈的去中心化依賴於一定數量的代表,而非全體用戶。在這樣的區塊鏈中,全體節點投票選舉出一定數量的節點代表,由他們來代理全體節點確認區塊、維持系統有序運行。同時,區塊鏈中的全體節點具有隨時罷免和任命代表的權力。如果必要,全體節點可以通過投票讓現任節點代表失去代表資格,重新選舉新的代表,實現實時的民主。
股份授權證明機制可以大大縮小參與驗證和記賬節點的數量,從而達到秒級的共識驗證。然而,該共識機制仍然不能完美解決區塊鏈在商業中的應用問題,因為該共識機制無法擺脫對於代幣的依賴,而在很多商業應用中並不需要代幣的存在。
Pool驗證池基於傳統的分布式一致性技術建立,並輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。
Pool驗證池不需要依賴代幣就可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。不過,Pool驗證池也存在一些不足,例如該共識機制能夠實現的分布式程度不如PoW機制等
這里主要講解區塊鏈工作量證明機制的一些演算法原理以及比特幣網路是如何證明自己的工作量的,希望大家能夠對共識演算法有一個基本的認識。
工作量證明系統的主要特徵是客戶端要做一定難度的工作來得到一個結果,驗證方則很容易通過結果來檢查客戶端是不是做了相應的工作。這種方案的一個核心特徵是不對稱性:工作對於請求方是適中中的,對於驗證方是易於驗證的。它與驗證碼不同,驗證碼是易於被人類解決而不是易於被計算機解決。
下圖所示的為工作量證明流程。
舉個例子,給個一個基本的字元創「hello,world!」,我們給出的工作量要求是,可以在這個字元創後面添加一個叫做nonce(隨機數)的整數值,對變更後(添加nonce)的字元創進行SHA-256運算,如果得到的結果(一十六進制的形式表示)以「0000」開頭的,則驗證通過。為了達到這個工作量證明的目標,需要不停地遞增nonce值,對得到的字元創進行SHA-256哈希運算。按照這個規則,需要經過4251次運算,才能找到前導為4個0的哈希散列。
通過這個示例我們對工作量證明機制有了一個初步的理解。有人或許認為如果工作量證明只是這樣一個過程,那是不是只要記住nonce為4521使計算能通過驗證就行了,當然不是了,這只是一個例子。
下面我們將輸入簡單的變更為」Hello,World!+整數值」,整數值取1~1000,也就是說將輸入變成一個1~1000的數組:Hello,World!1;Hello,World!2;...;Hello,World!1000。然後對數組中的每一個輸入依次進行上面的工作量證明—找到前導為4個0的哈希散列。
由於哈希值偽隨機的特性,根據概率論的相關知識容易計算出,預計要進行2的16次方次數的嘗試,才能得到前導為4個0的哈希散列。而統計一下剛剛進行的1000次計算的實際結果會發現,進行計算的平均次數為66958次,十分接近2的16次方(65536)。在這個例子中,數學期望的計算次數實際就是要求的「工作量」,重復進行多次的工作量證明會是一個符合統計學規律的概率事件。
統計輸入的字元創與得到對應目標結果實際使用的計算次數如下:
對於比特幣網路中的任何節點,如果想生成一個新的區塊加入到區塊鏈中,則必須解決出比特幣網路出的這道謎題。這道題的關鍵要素是工作量證明函數、區塊及難度值。工作量證明函數是這道題的計算方法,區塊是這道題的輸入數據,難度值決定了解這道題的所需要的計算量。
比特幣網路中使用的工作量證明函數正是上文提及的SHA-256。區塊其實就是在工作量證明環節產生的。曠工通過不停地構造區塊數據,檢驗每次計算出的結果是否滿足要求的工作量,從而判斷該區塊是不是符合網路難度。區塊頭即比特幣工作量證明函數的輸入數據。
難度值是礦工們挖掘的重要參考指標,它決定了曠工需要經過多少次哈希運算才能產生一個合法的區塊。比特幣網路大約每10分鍾生成一個區塊,如果在不同的全網算力條件下,新區塊的產生基本都保持這個速度,難度值必須根據全網算力的變化進行調整。總的原則即為無論挖礦能力如何,使得網路始終保持10分鍾產生一個新區塊。
難度值的調整是在每個完整節點中獨立自動發生的。每隔2016個區塊,所有節點都會按照統一的格式自動調整難度值,這個公式是由最新產生的2016個區塊的花費時長與期望時長(按每10分鍾產生一個取款,則期望時長為20160分鍾)比較得出來的,根據實際時長一期望時長的比值進行調整。也就是說,如果區塊產生的速度比10分鍾快,則增加難度值;反正,則降低難度值。用公式來表達如下:
新難度值=舊難度值*(20160分鍾/過去2016個區塊花費時長)。
工作量證明需要有一個目標值。比特幣工作量證明的目標值(Target)的計算公式如下:
目標值=最大目標值/難度值,其中最大目標值為一個恆定值
目標值的大小與難度值成反比,比特幣工作量證明的達成就是礦中計算出來的區塊哈希值必須小於目標值。
我們也可以將比特幣工作量的過程簡單的理解成,通過不停變更區塊頭(即嘗試不同nonce值)並將其作為輸入,進行SHA-256哈希運算,找出一個有特定格式哈希值的過程(即要求有一定數量的前導0),而要求的前導0個數越多,難度越大。
可以把比特幣將這道工作量證明謎題的步驟大致歸納如下:
該過程可以用下圖表示:
比特幣的工作量證明,就是我們俗稱「挖礦」所做的主要工作。理解工作量證明機制,將為我們進一步理解比特幣區塊鏈的共識機制奠定基礎。
『捌』 比特幣有被完全挖完的一天嗎比特幣是如何挖出來的
每10min就會有一塊BTC被挖掘出來,因為市場競爭這么劇烈,12.5比特幣的區塊鏈獎賞將根據其在這一過程中的哈希率奉獻在競爭者中間進行分配。大部分BTC採掘也被挖幣大農場和開采池所取代,因而,為了獲得一些BTC,你必須加入其中一個或另一個開采池,並奉獻你所能貢獻的一切哈希率。應用傳統的個人計算機,乃至GPU服務平台可能需要好多個月的時間才可以掙到BTC,由於ASIC晶元目前在BTC採掘行業佔有主導性。
調整後的難度系數促使每形成一個區塊鏈的預期時間為10min。現今難易度約為480PH/s,約是創世區塊的680億倍左右,換句話說,以現在的算率,各大網站挖礦需要經過約3000萬億元億個哈希運算才能找到一個符合條件的回答,形成一個新的區塊鏈。即使是能夠證明你挖掘出來的BTC或者其他的加密數字貨幣是真實的,可是只不過是臨時存有其他人帳戶。一般這種手機上雲挖礦方式都是要達到一定的總數之後才可以轉幣,而達到這一周期時間或是門坎必須很長一段時間,已經足夠別人跑路了。
『玖』 銆愬尯鍧楅摼銆戞瘮鐗瑰竵濡備綍紜淇濅笉瓚呭彂錛
姣旂壒甯佹槸涓縐嶉氱緝鍨嬭櫄鎷熻揣甯併
涓轟粈涔堟槸2100涓囧憿錛 鍏充簬榪欎釜鏁扮洰鏉ョ敱鐨勭寽嫻嬫湁璁稿氾紝鍏朵腑姣旇緝闈犺氨鐨勭瓟妗堟槸錛
濡傛灉澶у跺圭數鑴戝唴閮ㄥ瓨鍌ㄥ拰浜岃繘鍒跺嶮鍏榪涘埗鏈変竴浜涙傚康錛屼細鐭ラ亾涓涓32浣嶆暣鏁幫紝涔熷氨鏄 FFFF FFFF鍙浠ュ瓨鍌ㄧ殑鏈澶ф暣鏁版槸2鐨32嬈℃柟鍑1錛屽張鍥犱負棣栦綅瑕佺敤鏉ユ樉紺虹﹀彿錛屾墍浠ユ渶澶ф槸2鐨31嬈℃柟鍑1錛屼篃灝辨槸2100涓囧氫竴浜涖
涓轟簡鑳借╂瘮鐗瑰竵鐨勬暟瀛楄兘鐢ㄤ竴涓甯︾﹀彿鐨32浣嶆暣鏁拌〃紺猴紝鎵浠ヨ皟鏁村墠闈㈠嚑涓鍙傛暟錛屾渶鍚庡緱鍑轟簡2100涓囦釜鐨勭粨鏋溿
姣旂壒甯10鍒嗛挓浼氫駭鐢熶竴涓鍖哄潡錛屾瘡灝忔椂6涓鍖哄潡鐨勯熷害涔樹互 24灝忔椂錛堟瘡澶 錛夛紝鍐嶄箻浠365澶╋紙涓騫達級 錛屾渶鍚庝箻涓4騫達紙涓涓鍛ㄦ湡錛夛紝緇撴灉鏄涓涓鍛ㄦ湡鍏變駭鐢21涓囦釜鍖哄潡銆傛墍鏈夊尯鍧楃殑濂栧姳浠50鍒25鍐嶅埌12.5閫愭笎閫掑噺錛屾墍浠ヤ竴鍏辨槸 50 + 25 + 12.5 + 6.25 + 3.125 ...= 100鐨勫栧姳錛屼袱鏁扮浉涔樺垯鍙浠ュ緱鍒2100涓囨瘮鐗瑰竵鐨勬婚噺銆
涓鏈鑱鍦ㄨ捐℃瘮鐗瑰竵鏃惰勫畾姣忎釜姣旂壒甯佸彲浠ョ粏鍒嗗埌灝忔暟鐐瑰悗8浣嶏紝鏈灝忓崟浣嶄負鑱(1鑱鏄0.00000001涓姣旂壒甯)銆
鏈鍒濇瘡涓鍖哄潡鍙戣50涓姣旂壒甯侊紝姣21涓囦釜鍖哄潡鍚庢瘡涓鍖哄潡鐨勪駭閲忓噺鍗娿
鍥犱負姣旂壒甯佹瘡10鍒嗛挓浜х敓涓涓鍖哄潡錛21涓囦釜鍖哄潡澶х害鏄4騫存椂闂達紱涓鑸姣忓埌姣旂壒甯佹暟閲忓噺鍗婃椂涔熶細鏄姣旂壒甯佷環鏍間笂涓涓鍙伴樁鐨勬椂闂淬傝繖涓姣旇緝瀹規槗鐞嗚В鍥犱負浜ч噺鍑忓皯浜嗭紝鑷鐒朵細瀵艱嚧浠鋒牸涓婃定鍢涖
鎴姝2017騫存瘮鐗瑰竵宸茬粡緇忓巻涓ゆ″噺鍗婏紝褰撳墠姣忎釜鍖哄潡濂栧姳鐨勬瘮鐗瑰竵鏄12.5鏋氥
澶х害鍦2045騫99.95%鐨勬瘮鐗瑰竵灝嗗彂琛屽畬姣曪紝鍒2140騫存瘮鐗瑰竵鏃犳硶緇х畫緇嗗垎錛岃嚦姝ゆ瘮鐗瑰竵瀹屽叏鍙戣屽畬姣曘
鑷2140騫存瘮鐗瑰竵鍙戣屾婚噺涓2100涓囨灇錛屽疄闄呭ぇ綰︽槸20999999.97690000鏋氾紝姣2100涓囧皯涓鐐廣
姣旂壒甯佹嫢鏈変笌浼犵粺緇忔祹浣跨敤鐨勮揣甯侊紝濡傜編鍏冩垨榛勯噾絳夛紝涓嶅悓鐨勭壒鎬с備紶緇熺殑璐у竵錛屽傜編鍏冿紝鏄鍩轟簬鍊哄姟錛岃繖鏄娉曞畾璐у竵鐨勫滻鏈夌壒鎬с傜劧鑰岋紝姣旂壒甯佸彲鑳藉逛俊璐鋒墿寮犳洿鍏鋒湁鎶靛盡鎬э紝鍥犱負瀹冩湰韜騫朵笉涓庡哄姟鎸傞挬銆
鍥犳わ紝鍦ㄥ熀浜庢瘮鐗瑰竵鐨勭粡嫻庝綋涓錛屽湪緇忔祹宕╂簝鍜岄氳揣緔х緝鐨勬儏鍐典笅錛屽哄姟瀹為檯浠峰煎為暱鐨勫獎鍝嶅彲鑳戒笉濡備漢浠鎯寵薄鐨勯偅涔堜弗閲嶃
榪欎嬌鍩轟簬姣旂壒甯佺殑緇忔祹浣撲腑鐨勫哄姟閫氱緝婕╂丁璁虹偣鍙樺緱涓嶉偅涔堥噸瑕併傚湪鎴戜滑鐪嬫潵錛岃繖鏄寰堝氭瘮鐗瑰竵璇勮哄跺湪璇勪及姣旂壒甯侀氳揣緔х緝璐у竵鏀跨瓥鐨勫姡鍔挎椂蹇界暐鐨勪竴鐐廣
灝界℃瘮鐗瑰竵閫氱緝鐨勮揣甯佹斂絳栨槸鍚﹀悎鐞嗭紝鍦ㄨ揣甯佸︿笂浜夎寰堝ぇ錛屼絾榪欎竴鍙戣屾満鍒舵縺鍔辯潃鐭垮伐灝芥棭鎶曞叆鍒版瘮鐗瑰竵鎸栫熆涓錛屼嬌寰楁瘮鐗瑰竵緋葷粺鑾峰緱澶ч噺綆楀姏紜淇濅簡緋葷粺鐨勫畨鍏ㄦс
姣旂壒甯佸彂琛屽畬姣曞悗濡備綍緇存寔鐭垮伐緇х畫鎸栫熆鐨勭Н鏋佹у憿錛 榪欎釜澶у彲涓嶅繀蹇ц檻錛屾瘮鐗瑰竵闄や簡閫氳繃鈥滄寲鐭庫濊幏寰楀栧姳澶栵紝鐭垮伐榪樺彲浠ラ氳繃浜ゆ槗鎵嬬畫璐硅幏寰楁敹鐩娿傚叾瀹烇紝浠庢瘮鐗瑰竵鐨勫彂灞曞巻紼嬫潵鐪嬶紝鐪熸e獎鍝嶇熆宸ユ槸鍚︾戶緇鎸栫熆鐨勫洜緔狅紝騫墮潪鏄鍚︽湁鐭垮彲鎸栵紝鑰屾槸鎸栫熆鐨勬敹鐩婂備綍銆
鍦ㄦ瘮鐗瑰竵浜ゆ槗閲忓炲姞銆佹墜緇璐瑰崌楂橈紱鎴栬呮瘮鐗瑰竵浠鋒牸鍗囬珮鐨勬儏鍐典笅錛屾寲鐭挎敹鐩婂彲瑙傦紝鐭垮伐浠鐨勬姇鍏ョ儹鎯呴兘浼氱浉搴旈珮娑ㄣ傞偅涔堬紝鍙瑕佹瘮鐗瑰竵浠峰艱繕鍦錛屼笉綆′綍鏃舵寲鐭塊兘浼氭湁鍒╂鼎錛屾繪湁鐭垮伐涓嶄細鍏沖仠鎵嬩腑鐨勬満鍣ㄣ