❶ 比特幣新區塊產生的過程
當挖礦節點要構造預備區塊,准備生成新區塊時,會按照優先順序排序,從交易池中取待確認交易。預備區塊通常會預留一定空間給高優先順序的交易,剩下的空間會按照交易費比例(Sat/B)由高到低順序一直把區塊加滿或者把交易池的交易用光。但比特幣區塊中不僅僅包含從交易池中取的待確認交易。按照比特幣協議規定,比特幣的區塊主要包括五個部分:魔數,區塊大小,區塊頭,交易計數器和交易信息。比特幣區塊的結構其中,「魔數」是一個值為0xD9B4BEF9的常數;「區塊體積」是本區塊所有數據的總體積;「區塊頭」是可以看作是整個區塊的縮略信息,挖礦用到的區塊信息就是區塊頭;「交易計數器」用來記錄區塊中交易的數量;「交易數據」是區塊所包含的所有交易信息,包括Coinbase獎勵部分,一般來說,這部分數據佔了整個區塊絕大部分空間。在比特幣區塊中,區塊頭是最為關鍵的一個信息。它包含整個區塊的所有特徵信息:區塊版本號。
❷ 比特幣中怎麼證明是自己挖礦成功,而不是其他人呢
我們知道了信息計算Hash打包的過程:交易記錄、時間、賬本序號、上一個Hash值。也知道所有的計算和存貯是需要消耗計算機資源。在中本聰的設計里,完成記賬可以獲得系統給與比特幣獎勵,這個過程也就是比特幣發行過程,因此把記賬成為挖礦。
記賬工作
因為記賬是有獎勵,每次記賬都可以為自己增加一定個數的比特幣,因此大家爭相記賬,當然能也就引發了問題:出現記賬不一致的是後,系統引入工作量證明來解決這個問題,規則如下:
1.在一段時間內,只有一個人能記賬成功。
2.通過解決密碼學難題競爭獲得唯一記賬權
3.其他節點復制記賬結果
不過在進行工作量證明之前,記賬節點會做進行如下准備工作:
1.收集廣播中還沒有被記錄賬本的原始交易信息
2.檢查每個交易信息中付款地址有沒有足夠的余額
3.驗證交易是否有正確的簽名
4.把驗證通過的交易信息進行打包記錄
5.添加一個獎勵交易:給自己的地址增加12.5比特幣
如果爭奪記賬權成功的話,就可以得到12.5比特幣的獎勵。
工作量證明
每次記賬的時候會把上一個塊的Hash值和當前的賬頁信息一起作為原始信息進行Hash。為了確保10分鍾前後只有一個人可以記賬,就只有提高記賬的難度,用Hash的結果必須以若干個0開頭。為了滿足條件,進行Hash是引入一個隨機數變數。
用偽代碼表示一下:
1.Hash(上一個Hash值,交易記錄集) = 456635BCD
2.Hash(上一個Hash值,交易記錄集,隨機數) = 0000aFD635BCD
改變Hash的原始信息的一部分,Hash值也會不斷變化,因此在運行Hash的時候,不斷改變隨機數的值,總可以找到一個隨機數使得Hash的結果以若干個0開頭,率先找到隨機數的節點從此獲得記賬的唯一記賬權。
驗證
在節點成功找到Hash值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播後會對其進行驗證。如果驗證通過,表明已經有節點成功解密,就不會在競爭當前區塊,而是選擇接受區塊,記錄到自己的賬本中,進行下一輪競爭猜謎。網路中只有最快解密的區塊才會添加到賬本中,其他的節點進行復制,確保整個賬本的唯一性。
如果節點有作弊行為,會導致網路的節點驗證不通過,直接放棄其打包的區塊,也無法記錄到總賬本中,那麼作弊節點的消耗成本就白費了。因此礦工自覺的遵守比特幣系統的共識協議,也確保整個系統的安全。
這個問題就好像你去工地搬磚,搬完一天磚,包工頭問你你怎麼證明自己一天在工地搬磚呢?
❸ 姣旂壒甯佹庝箞鏍瘋繍綆
姣旂壒甯佹庝箞榪愮畻鐨
姣旂壒甯佹槸涓縐嶅熀浜庡瘑鐮佸﹀師鐞嗙殑鏁板瓧璐у竵錛屽叾榪愮畻涓昏佹秹鍙婂埌鍔犲瘑綆楁硶鍜屽垎甯冨紡璁$畻鐨勬妧鏈銆
姣旂壒甯佺殑榪愮畻榪囩▼涓昏佸寘鎷浠ヤ笅鍑犱釜姝ラわ細
1.鐢熸垚鍏縐侀掗瀵癸細姣旂壒甯佷嬌鐢ㄦき鍦嗘洸綰垮姞瀵嗙畻娉(ECDSA)鐢熸垚鍏縐侀掗瀵癸紝鍏朵腑縐侀掗鐢ㄤ簬絳懼悕浜ゆ槗錛屽叕閽ョ敤浜庨獙璇佺懼悕銆
2.鐢熸垚浜ゆ槗淇℃伅錛氫氦鏄撲俊鎮鍖呮嫭鍙戦佽呭湴鍧銆佹帴鏀惰呭湴鍧銆佽漿璐﹂噾棰濈瓑淇℃伅錛岀敤浜庢弿榪版瘮鐗瑰竵鐨勪氦鏄撹繃紼嬨
3.楠岃瘉浜ゆ槗淇℃伅錛氬皢浜ゆ槗淇℃伅鍔犱笂鏃墮棿鎴熾佸彂閫佽呭叕閽ャ佸搱甯岀瓑淇℃伅錛岀粍鎴愪氦鏄撹板綍錛屽苟閫氳繃緗戠粶騫挎挱緇欏叾浠栬妭鐐歸獙璇併
4.鎸栫熆璁$畻錛氭瘮鐗瑰竵鐨勬寲鐭挎槸鎸囧皢浜ゆ槗璁板綍鎵撳寘鎴愬尯鍧楀苟娣誨姞鍒板尯鍧楅摼涓鐨勮繃紼嬨傛寲鐭胯繃紼嬮渶瑕佽繘琛屼竴緋誨垪鐨勮$畻錛屽寘鎷鍝堝笇璁$畻銆侀毦搴﹁$畻絳夛紝榪欎簺璁$畻闇瑕侀氳繃鍒嗗竷寮忚$畻鏉ュ畬鎴愩
5.鑾峰緱鍖哄潡濂栧姳錛氬畬鎴愭寲鐭跨殑鑺傜偣鍙浠ヨ幏寰椾竴瀹氱殑姣旂壒甯佸栧姳錛屽悓鏃朵篃鍙浠ヨ幏寰椾氦鏄撴墜緇璐逛綔涓哄栧姳銆
鎬諱箣錛屾瘮鐗瑰竵鐨勮繍綆椾富瑕佹秹鍙婂埌鍔犲瘑綆楁硶銆佸垎甯冨紡璁$畻銆佸搱甯岃$畻絳夋妧鏈錛岄渶瑕侀氳繃澶氫釜鑺傜偣鍗忓悓瀹屾垚錛岀『淇濅氦鏄撹板綍鐨勫畨鍏ㄥ拰鍙闈犳с
❹ 比特幣怎麼存儲
就是一串字元,保存好這串字元就可以了,不要泄露,其他人也不可能破解出來的。
❺ 姣旂壒甯佺殑TPS鏄濡備綍璁$畻鐨勫憿
TPS灝辨槸鎸囩郴緇熸瘡縐掗挓鑳藉熷勭悊鐨勪氦鏄撴暟錛岀畻娉曞備笅錛氭瘮鐗瑰竵姣忎釜鍖哄潡瀹歸噺鏄1MB錛堜篃灝辨槸1024kb錛夛紝濮胯滀簭姣10鍒嗛挓鍑轟竴涓鍖哄潡錛堜篃灝辨槸600縐掞級錛屾瘮鐗瑰竵姣忕瑪浜ゆ槗鍗250瀛楄妭宸﹀彸錛屽氨鎸250瀛楄妭鏉ョ畻錛堜篃灝辨槸 0.25KB錛夈傞偅涔堟瘡涓鍖哄潡姣忕掑鉤鍧囨墦鍖呰抗紲炲氨鏄錛1024/600/0.25錛6.8266666666667錛屽ぇ姒傛槸7絎斾氦鏄撱傛瘮鐗瑰竵鐨凾PS浜ゆ槗鏁幫紝鐩鍓嶆槸7絎斿乏鍙籌紝榪欎釜涓嶇畻楂橈紝鉶界劧鐜板湪姣旂壒甯佸凡鏀鎸侀棯鐢電綉緇滐紝閫熷害澶уぇ鎻愬崌錛屼絾鏄榪樻病鏈夎騫挎硾閲囧ソ鑰愮敤錛屽緢澶氶挶鍖呬笉鏀鎸侊紝浠嶅勪簬鏃╂湡闃舵碉紝涓嶈繃涔熶笉鐢ㄦワ紝鐩鍓嶆瘮鐗瑰竵鏈鏉ユ渶澶х殑搴旂敤搴旇ユ槸浠峰煎瓨鍌錛屽畨鍏ㄦф墠鏄鏈閲嶈佺殑銆
鎴戜滑閫氳繃浠ヤ笂鍏充簬姣旂壒甯佺殑TPS鏄濡備綍璁$畻鐨勫憿鍐呭逛粙緇嶅悗,鐩鎬俊澶у朵細瀵規瘮鐗瑰竵鐨凾PS鏄濡備綍璁$畻鐨勫憿鏈変竴瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
❻ 姣旂壒甯佹柊鍖哄潡浜х敓鐨勮繃紼
1. 鎸栫熆鑺傜偣鍦ㄦ瀯閫犳柊鍖哄潡鏃訛紝浼氶栧厛鎸夌収浼樺厛綰у逛氦鏄撹繘琛屾帓搴忥紝騫朵粠浜ゆ槗奼犱腑閫夊彇寰呯『璁ょ殑浜ゆ槗銆
2. 鏂板尯鍧楃殑鏋勯犻氬父浼氫負楂樹紭鍏堢駭鐨勪氦鏄撻勭暀絀洪棿錛岄殢鍚庡墿浣欑┖闂翠細鏍規嵁浜ゆ槗璐圭敤姣斾緥錛圫at/B錛変粠楂樺埌浣庡~鍏咃紝鐩磋嚦鍖哄潡婊¤澆鎴栦氦鏄撴睜涓鐨勪氦鏄撹楀敖銆
3. 姣旂壒甯佸尯鍧椾腑涓嶄粎鍖呭惈浜ゆ槗奼犱腑鐨勪氦鏄擄紝榪樺寘鎷鍏朵粬鍑犻儴鍒嗗唴瀹廣
4. 姣旂壒甯佸尯鍧楃殑緇撴瀯鍖呮嫭欖旀暟銆佸尯鍧楀ぇ灝忋佸尯鍧楀ご銆佷氦鏄撹℃暟鍣ㄥ拰浜ゆ槗淇℃伅浜斾釜涓昏侀儴鍒嗐
5. 欖旀暟鏄涓涓鍥哄畾鍊礆紝鍖哄潡澶у皬琛ㄧず鍖哄潡鏁版嵁鐨勬諱綋縐錛屽尯鍧楀ご鏄鍖哄潡鐨勬憳瑕佷俊鎮錛屼氦鏄撹℃暟鍣ㄨ板綍浜ゆ槗鏁伴噺錛岃屼氦鏄撲俊鎮鍒欏寘鍚鎵鏈変氦鏄撴暟鎹錛屽叾涓鍖呮嫭Coinbase濂栧姳閮ㄥ垎錛岄氬父鍗犳嵁鍖哄潡鐨勫ぇ閮ㄥ垎絀洪棿銆
6. 鍦ㄦ瘮鐗瑰竵鍖哄潡涓錛屽尯鍧楀ご鏄鏈涓烘牳蹇冪殑閮ㄥ垎錛屽畠鍖呭惈浜嗗尯鍧楃殑鎵鏈夊叧閿淇℃伅錛屽傚尯鍧楃増鏈鍙楓
❼ PoW共識機制的原理
比特幣的共識機制就是PoW共識,借鑒了HashCash的處理方法, 下面就來說說比特幣如何進行PoW共識的。
從區塊頭的結構中可以看到一個4 bytes的Nonce值,Nonce值的變動會影響整個區塊頭的哈希值,挖礦節點即是通過嘗試不同的Nonce值(通常從0開始每次加1),尋找一個哈希值小於Difficulty Target指定的難度值。
PoW證明過程,這也就是俗稱的挖礦過程, 找到合適的哈希值。
這里不詳細說明區塊打包過程, 區塊通過一定的演算法被生成, 當然生成是需要一定的代價的。
區塊頭里的各個值並不是隨機的, 而是由固定的演算法得出, Merkle根哈希值就是把交易打包變成一顆Merkle樹, 最後得出根的哈希值, 難度值是根據演算法不斷調整, 要維持出塊速率是10分鍾出一個塊。
首先我們把所有交易打包生成Merkle樹, 計算Merkle根的哈希值, 然後組裝區塊頭, 把區塊頭不斷進行SHA256(SHA256(區塊頭))雙重哈希操作, 然後判斷是否小於網路目標值, 這里其實就是把它變成2進制, 二進制前面有多少位是沒有0的, 因為有1的話, 這個十進制的值肯定是很大的, 就不會符合條件。 如果大於這個目標值, 說明前面的位數沒有滿足前多少位為0的條件 哈希不成功, 那麼就改變隨機數值,組成新的區塊頭,繼續哈希。
這是就是是挖到礦了,其他節點驗證的話也簡單,只要做一次SHA256(SHA256(驗證區塊頭))來判斷。
比特幣挖礦難度調整方式非常簡單,難度目標調整即不斷將256位的難度值減小,如277315號區塊的難度值十六進製表示為:
這個數字在二進製表示下前60位均是0,如果要增加難度只需要減小這個值,隨著難度值的減小,起始0的個數增多,可尋找的哈希值范圍減小,挖礦難度就越大。
難度的調整是在每個完整節點中獨立自動發生的。每2016個區塊,所有節點都會按統一的公式自動調整難度。如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
公式可以總結為:新難度值=舊難度值×(過去2016個區塊花費時長/20160分鍾)
優點
缺點
1:挖礦過程為什麼要計算兩次哈希值?
中本聰在設計比特幣的挖礦演算法的時候,考慮到SHA2-256演算法存在被破解的可能,雖然在理論上並未出現對SHA2-256演算法的攻擊。為了減弱攻擊的威脅,區塊頭數據要對SHA2-256演算法運算兩次。
2:如果所有節點都從0開始嘗試Nonce值,那不就永遠都是算力高的節點先計算出有效的結果,算力低的節點永遠沒希望挖礦成功?
區塊頭大部分信息都是一樣的,但是Merkle Root對於每個節點必然是不同的,因為每個節點都會有自己的Coinbase交易,該交易中存在節點礦工的地址,此地址對於每個獨立挖礦節點都是不同的,根據哈希函數的雪崩效應可知每個獨立節點的Merkle Root必定有顯著的區別。
3:如何解決拜占庭問題?
通過工作量證明就增加了發送信息的成本,降低節點發送消息速率,這樣就以保證在一個時間只有一個節點在進行廣播,同時在廣播時會附上自己的簽名。工作量證明其實相當於提高了做叛徒(發布虛假區塊)的成本,只有第一個完成證明的節點才能廣播區塊,競爭難度非常大,需要很高的算力,如果不成功其算力就白白的耗費了,整個系統也因此而更穩定。
❽ 姣旂壒甯佹柊鍖哄潡浜х敓鐨勮繃紼嬫槸鎬庝箞鏍風殑
1.鎸栫熆鑺傜偣瑕佸厛鏋勫緩濂介勫囧尯鍧楋紝姣旂壒甯佸尯鍧楀寘鍚浠庝氦鏄撴睜涓鍙栫殑寰呯『璁や氦鏄擄紝欖旀暟錛屽尯鍧楀ぇ灝忥紝鍖哄潡澶達紝浜ゆ槗璁℃暟鍣ㄥ拰浜ゆ槗淇℃伅銆2.鏋勫緩濂介勫囧尯鍧楀悗錛屾寲鐭胯妭鐐瑰氨浼氬皢鍖哄潡澶翠俊鎮涓嬩紶緇欑熆宸ワ紝鐭垮伐閫氳繃榪炵畫涓嶆柇鍦拌皟鏁村尯鍧楀ご涓鐨勯殢鏈烘暟鏉ユ敼鍙樺尯鍧椾腑鐨勫搱甯屽礆紝褰撻勫囧尯鍧楃殑鍝堝笇鍊兼瘮鐗瑰竵緗戠粶褰撳墠鐩鏍囧搱甯屽間綆鏃訛紝榪欎釜鍖哄潡鏋勫緩瀹屾垚浜嗭紝鏄涓涓鍚堟硶鐨勬柊鍖哄潡銆3.鎸栫熆鑺傜偣涓鑸浼氭瘮杈冨強鏃跺湴鍚戞瘮鐗瑰竵緗戠粶騫挎挱鏂板尯鍧楋紝鍏朵粬姣旂壒甯佽妭鐐瑰湪鎺ユ敹鍒板箍鎾淇℃伅鍚庯紝浼氬規柊鍖哄潡榪涜岄獙璇侊紝鏂板尯鍧楅獙璇侀氳繃鍚庯紝浼氬姞鍏ユ湰鍦般傝繖鏃跺欙紝鏂板尯鍧楀彲浠ョ『璁ゅ壋寤哄畬姣曚簡銆
鎴戜滑閫氳繃浠ヤ笂鍏充簬姣旂壒甯佹柊鍖哄潡浜х敓鐨勮繃紼嬫槸鎬庝箞鏍風殑鍐呭逛粙緇嶅悗,鐩鎬俊澶у朵細瀵規瘮鐗瑰竵鏂板尯鍧椾駭鐢熺殑榪囩▼鏄鎬庝箞鏍風殑鏈変竴瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
❾ 比特幣機器是怎麼運轉的
很多朋友對於比特幣的算力比特幣的礦機礦場以及挖礦的回報率都是比較陌生的,下面我們就詳細科普一下比特幣以及區塊鏈記錄之間的運行機制。首先解釋一下什麼叫區塊鏈?我們可以把它看成是分布式的賬本以及構成的一個相對應的信用網路,在這個網路中每個人的言行舉止都可以記錄在鏈上,並且支持驗證和回溯調查,多個鏈組合在一起就形成了區塊,而負責把這個信息記錄在鏈上的我們把它稱之為礦工。
所以看到這里,相信大家也就能夠理解什麼是比特幣的算力,什麼是比特幣的挖礦?另外提一句,當前的礦場基本上已經被大機構所壟斷,或者說所謂的入門門檻非常之高,沒有幾百萬元的投資或者上千萬的投資,基本上在當前的比特幣挖礦行業中都屬於散戶,而散戶礦工經常會因為算力波動較大以及電費成本的上升入不敷出而放棄挖礦。