比原鏈挖礦計算
1. 進幣圈必須知道的事:挖礦挖的是什麼
這篇文章的主題是幣圈挖礦挖的是什麼,在本文中我們將通過表象、演算法、本質3個不同層次來看這個問題,希望大家能堅持看完三層的看法,如果您對幣圈比較熟悉,也可以直接看第三層。
第一層:從表面上看
有人說比特幣預計會在2140年挖完,總計2100萬枚,其實只要是理解了比特幣演算法的人,都很清楚,比特幣永遠不會被挖完1,只是挖到最後可能幾年甚至幾十年幾百年才能挖出一枚來,所以自然就沒人去挖了,也就相當於挖沒了。同樣的道理,總計2100萬的比特幣數量,最終也只是個大概數字而已。
大家看到的挖礦挖的是什麼呢?拿幣圈的開創者比特幣來說, 挖礦挖的是一個個的數字區塊,而這個區塊被人們稱之為「電子貨幣」 。這當然不是本文要說的本質。
之所以它能被稱為貨幣,是因為在它的信眾之間可以用來實物或者法幣交易,所以毫無疑問,大家都認可幣圈挖礦挖的是「電子貨幣」。
第二層:從演算法上來看
這一層我們還是用幣圈的開創貨幣比特幣說明。
前文已經說過,比特幣挖礦會隨著時間的推移,越來越難挖到,為什麼會這樣呢?因為在比特幣的演算法里,有一個動態調整的難度值,這個難度值會隨著時間的推移,不斷的增大,以保證比特幣越來越難挖到。這里不對難度值怎麼調整展開說,讀者先知道有難度值這回事。
比特幣的挖礦,是用包含前一個區塊的hash值(類似這樣的一串數據)、隨機數、以及一些其他數據進行計算,得到另外一個hash值,如果得到的hash值比用難度值確定的一個hash值小,就算是挖到了礦。
再通俗一點說(通俗就是是不精確
),比如說跟據當前的難度值,我們確定出所有挖礦計算出來的hash值,都需要小於的難度所對應的hash值, 那麼如果挖到的hash值前面有更多的0,則算你挖到了礦。
大家現在也看到了,比特幣挖礦挖的就是一塊兒數據計算出來的hash值,大家可以討論下這串數字有什麼價值了。
有人說挖比特幣是在解數學難題 ,我覺得如果挖比特幣能把數學難題給解出來了,那確實是給數學界做貢獻了。但實際大家應該明白了,根本就沒什麼數學難題,只是那一些隨機的東西,去試通過一定計算得到的hash值夠不夠小。
到這里大家應該明白了從演算法上看, 幣圈挖的是也就是計算出來的一串數字 ,這里只是拿比特幣做了說明,其他的幣可能有著不同的演算法,但本質是相同。
第三層:挖礦的實質
2017年幣圈著實是火爆了一把,各種幣的價值都是幾十倍甚至幾百倍的增長,就連空氣幣也能引來不少投資者的跟進。
火爆的幣圈市場,讓很多連區塊鏈是什麼、連比特幣是怎麼回事的人都沖了進去,因為大家都看到了各種幣的瘋狂增值,但好景不長,到了17年12月份比特幣到達2萬美元的峰值後,就開始下挫,導致有一些人可能連2018年的春節都沒有過好。
既然想進幣圈,我覺得先弄清楚幣圈的挖礦的本質為好,不然成為韭菜就一點不冤枉了。
在我看來, 幣圈挖礦實質挖的是信眾 ,不管是什麼幣,信眾多則價值高,信眾少則價值少,信眾不足則直接破發。
去年幣圈市場的火爆,讓很多以前並不怎麼關注虛擬貨幣的人,甚至以前都沒聽說過比特幣的人,看到別人在幣圈發了財,也盲目的成了信眾,成了先進入者的礦。到了17年12月份,經歷了瘋狂之後,多少人還敢相信還能繼續漲,沒有了新的信眾進入,則各種幣就失去了「礦源」,也就失去了增長的動力。
既然明白了幣圈挖礦挖的是信眾,那麼一種幣能堅持存在多久,就要看信眾們能堅持多久了。一種帶不來實際價值的虛擬貨幣,如果沒有了新的信眾,原有的信眾就會慢慢失去信心和耐性,當原有的信眾也開始放棄,則這種幣就離破滅不久了。
以上是個人的一點觀點,如果您同意我的看法,請點贊轉發,如果有不同的觀點,請文明留言,歡迎討論。
總結
最後一句話總結, 區塊鏈技術有著廣闊的應用空間,但是虛擬貨幣終究是無源之水,「礦」終有一天會挖完 ,具體原因可以期待我的下一篇文章:《區塊鏈的應用場景在哪兒?教你兩步找到區塊鏈的應用場景》。
1.比特幣永遠不會被挖完是相對的,如果能保證挖比特幣的算力不會減少,並且永不放棄的前提下,有一天也會挖到最後一枚,但現實情況是當難度增加到一定值,有些算力會放棄,雖然保證一段時間內的能挖出來的數量保持不變,但算力的減少,演算法中的挖礦難度有可能會降低,這樣就導致能挖到的總量又會增多。
作者簡介:
李景晨,子無憂創始人,原網路碼農,獨立游戲製作人,自研並使用區塊鏈技術的經典互聯網人。
2. 比特幣挖礦一天掙多少
大概有37塊錢。
我先來介紹一下比特幣系統的獎勵機制。
比特幣通過系統設置,基本能穩定在平均每10分鍾挖出一個區塊。每一次出塊獎勵都給挖出該區塊的礦工。挖出區塊的礦工稱為出塊礦工。出塊礦工會把比特幣網路中的合法交易記錄到區塊鏈上,這樣礦工就能收到記賬的手續費。
出塊礦工的獎勵包含兩部分:一部分是系統給獎勵,稱為Coinbase獎勵(也稱為系統發行獎勵),另一部分是記賬記賬獎勵,稱為礦工費。Coinbase獎勵,最開始是50枚比特幣,區塊高度每到21萬的整數倍,Coinbase獎勵就會減半,這就是我們常聽到的比特幣挖礦獎勵四年減半。
目前階段Coinbase獎勵為12.5枚比特幣。就目前階段而言,礦工挖出一個區塊的獎勵,收到的交易礦工費平均大約在0.1枚比特幣(不固定),也就是說礦工挖出一個區塊得到的平均獎勵約為12.6枚比特幣。
礦工的獎勵99%左右來自系統的Coinbase獎勵。根據比特幣系統平均每10分鍾可挖出一個區塊,一天可挖出的新區塊數量為144(60*24/10=144),目前每天可挖出比特幣數量為1800BTC(144*12.5BTC=1800BTC)。加上每個區塊約0.1BTC的礦工費,所有礦工一天得到的總獎勵約為1814.4BTC。
3. btm幣有價值嗎
BTM幣有價值的。
BTM為比原鏈的原生代幣,總量為21億個,思慕的分發份額為7%,1CO的份額佔30%,比原幣項目基金會預留了20%,這一部分是1CO結束後的一年內全部凍結,之後分為四年分期解凍,每年解凍5%。 除此之外,比原幣商業拓展預留了10%的份額,那麼剩下的33%則是比原幣的挖礦份額。 從分配數據上來看,是相對合理並且有規劃的,並且挖礦分發每四年產量減半,甚至不再會有新快獎勵產生,這樣將會對挖礦數量每年依次遞減,那麼BTM的價值起源就是其能夠方便的表徵和度量比原鏈上數字化經濟活動。
【拓展資料】
代幣經濟:
BTM為比原鏈的原生代幣,總量為21億個,思慕的分發份額為7%,1CO的份額佔30%,比原幣項目基金會預留了20%,這一部分是1CO結束後的一年內全部凍結,之後分為四年分期解凍,每年解凍5%。除此之外,比原幣商業拓展預留了10%的份額,那麼剩下的33%則是比原幣的挖礦份額。
從分配數據上來看,是相對合理並且有規劃的,並且挖礦分發每四年產量減半,甚至不再會有新快獎勵產生,這樣將會對挖礦數量每年依次遞減,那麼BTM的價值起源就是其能夠方便的表徵和度量比原鏈上數字化經濟活動。比原幣既代表比原鏈的所有權又代表使用權:使用比原鏈的應用需用比原幣支付一定的費用,體現比原幣的使用權特性;持有比原幣,代表擁有比原鏈的一部分,相當於比原鏈股東,能夠參與到比原鏈治理的最高決策,體現比原幣的所有權特性。
技術創新:
與市面其他的公鏈項目不同,比原鏈在1CO項目治理機制中提出了三層治理結構:財務預算管理、信息披露制度、投資風險提示。除此之外,比原鏈也專注於區塊鏈在資產登記流通領域的創新:
1.通過側鏈技術實現收益權資產的分紅;
2.採用開放數據索引|標准來命名資產;
3.採用對人工智慧ASIC晶元友好型的PoW創新演算法;
4.擴展性UTXO模型。
如果說其它公鏈項目像是區塊鏈領域的FPGA,強調智能合約的可編程性與通用性,適用於不同商業場景,那麼比原鏈就是區塊鏈的ASIC,更強調智能合約在資產領域的專用性,針對資產的屬性,在資源不可復制性、可控匿名性、安全與合規性上做了許多創新。
4. 比特幣的挖礦到底在計算什麼
比特幣的挖礦計算其實就是大家一起做數學題,題干是需要被記錄的交易,大家通過做題搶奪記賬權,搶到的礦工就能獲得系統獎勵和交易手續費。比特幣用的SHA256演算法的特點是已知答案驗證正確很容易,但是要得到答案非常麻煩,需要一個一個數字去試。最先得到答案的礦工大家就都認可他是搶到了記賬權,獎勵就歸他了。大家繼續搶下一題的記賬權。簡單來說這些計算的意義只在於保證整個系統的穩定安全,並沒有更多的意義。
把比特幣看作是計算的副產品是不全面的,比特幣的產生發行、比特幣鏈上所有的交易流通、比特幣系統的穩定性,都是計算的目的,是一體的。當然除了維護這個系統之外,的確並沒有產生其他的價值和產物。這也是比特幣被指責不環保浪費資源的一個黑點。總的來說,比特幣作為一個里程碑式的區塊鏈數字貨幣,其源於大量的算力投入和用戶信任的巨大價值。這一點還是毋庸置疑的。
5. 比特幣之挖礦與共識(二)
比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它 轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。
獨立校驗還確保了誠實 的礦工生成的區塊可以被納入到區塊鏈中,從而獲得獎勵。行為不誠實的礦工所產生的區塊將被拒絕,這不但使他們失 去了獎勵,而且也浪費了本來可以去尋找工作量證明解的機會,因而導致其電費虧損。
當一個節點接收到一個新的區塊,它將對照一個長長的標准清單對該區塊進行驗證,若沒有通過驗證,這個區塊將被拒 絕。這些標准可以在比特幣核心客戶端的CheckBlock函數和CheckBlockHead函數中獲得
它包括:
為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?
這 是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒 絕,因此,該交易就不會成為總賬的一部分。礦工們必須構建一個完美的區塊,基於所有節點共享的規則,並且根據正 確工作量證明的解決方案進行挖礦,他們要花費大量的電力挖礦才能做到這一點。如果他們作弊,所有的電力和努力都 會浪費。這就是為什麼獨立校驗是去中心化共識的重要組成部分。
比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊, 它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。
節點維護三種區塊:第一種是連接到主鏈上的,第二種是從主鏈上產生分支的(備用鏈),最後一種是在已知鏈中沒有 找到已知父區塊的。在驗證過程中,一旦發現有不符合標準的地方,驗證就會失敗,這樣區塊會被節點拒絕,所以也不 會加入到任何一條鏈中。
任何時候,主鏈都是累計了最多難度的區塊鏈。在一般情況下,主鏈也是包含最多區塊的那個鏈,除非有兩個等長的鏈 並且其中一個有更多的工作量證明。主鏈也會有一些分支,這些分支中的區塊與主鏈上的區塊互為「兄弟」區塊。這些區 塊是有效的,但不是主鏈的一部分。 保留這些分支的目的是如果在未來的某個時刻它們中的一個延長了並在難度值上超 過了主鏈,那麼後續的區塊就會引用它們。
如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被 保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從 孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有 可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。
選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈, 新塊本身就代表它們的投票。
因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈全貌。
解決的辦法是,每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就 是最長的或最大累計工作的鏈(greatest cumulative work chain)。節點通過累加鏈上的每個區塊的工作量,得到建立這個鏈所要付出的工作量證明的總量。只要所有的節點選擇最長累計工作的區塊鏈,整個比特幣網路最終會收斂到一致的狀態。分叉即在不同區塊鏈間發生的臨時差異,當更多的區塊添加到了某個分叉中,這個問題便會迎刃而解。
提示由於全球網路中的傳輸延遲,本節中描述的區塊鏈分叉自動會發生。
然而,倒三角形的區塊不會被丟棄。它被鏈接到星形鏈的父區塊,並形成備用鏈。雖然節點X認為自己已經正確選擇了獲勝鏈,但是它還會保存「丟失」鏈,使得「丟失」鏈如果可能最終「獲勝」,它還具有重新打包的所需的信息。
這是一個鏈的重新共識,因為這些節點被迫修改他們對塊鏈的立場,把自己納入更長的鏈。任何從事延伸星形-倒三角形的礦工現在都將停止這項工作,因為他們的候選人是「孤兒」,因為他們的父母「倒三角形」不再是最長的連鎖。
「倒三角形」內的交易重新插入到內存池中用來包含在下一個塊中,因為它們所在的塊不再位於主鏈中。
整個網路重新回到單一鏈狀態,星形-三角形-菱形,「菱形」成為鏈中的最後一個塊。所有礦工立即開始研究以「菱形」為父區塊的候選塊,以擴展這條星形-三角形-菱形鏈。
從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。
然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
2012年以來,比特幣挖礦發展出一個解決區塊頭基本結構限制的方案。在比特幣的早期,礦工可以通過遍歷隨機數 (Nonce)獲得符合要求的hash來挖出一個塊。
難度增長後,礦工經常在嘗試了40億個值後仍然沒有出塊。然而,這很容 易通過讀取塊的時間戳並計算經過的時間來解決。因為時間戳是區塊頭的一部分,它的變化可以讓礦工用不同的隨機值 再次遍歷。當挖礦硬體的速度達到了4GH/秒,這種方法變得越來越困難,因為隨機數的取值在一秒內就被用盡了。
當出現ASIC礦機並很快達到了TH/秒的hash速率後,挖礦軟體為了找到有效的塊, 需要更多的空間來儲存nonce值 。可以把時間戳延後一點,但將來如果把它移動得太遠,會導致區塊變為無效。
區塊頭需要信息來源的一個新的「變革」。解決方案是使用coinbase交易作為額外的隨機值來源,因為coinbase腳本可以儲存2-100位元組的數據,礦工們開始使用這個空間作為額外隨機值的來源,允許他們去探索一個大得多的區塊頭值范圍來找到有效的塊。這個coinbase交易包含在merkle樹中,這意味著任何coinbase腳本的變化將導致Merkle根的變化。
8個位元組的額外隨機數,加上4個位元組的「標准」隨機數,允許礦工每秒嘗試2^96(8後面跟28個零)種可能性而無需修改時間戳。如果未來礦工穿過了以上所有的可能性,他們還可以通過修改時間戳來解決。同樣,coinbase腳本中也有更多額外的空間可以為將來隨機數的擴展做准備。
比特幣的共識機制指的是,被礦工(或礦池)試圖使用自己的算力實行欺騙或破壞的難度很大,至少理論上是這樣。就像我們前面講的,比特幣的共識機制依賴於這樣一個前提,那就是絕大多數的礦工,出於自己利益最大化的考慮,都會 通過誠實地挖礦來維持整個比特幣系統。然而,當一個或者一群擁有了整個系統中大量算力的礦工出現之後,他們就可以通過攻擊比特幣的共識機制來達到破壞比特幣網路的安全性和可靠性的目的。
值得注意的是,共識攻擊只能影響整個區塊鏈未來的共識,或者說,最多能影響不久的過去幾個區塊的共識(最多影響過去10個塊)。而且隨著時間的推移,整個比特幣塊鏈被篡改的可能性越來越低。
理論上,一個區塊鏈分叉可以變得很長,但實際上,要想實現一個非常長的區塊鏈分叉需要的算力非常非常大,隨著整個比特幣區塊鏈逐漸增長,過去的區塊基本可以認為是無法被分叉篡改的。
同時,共識攻擊也不會影響用戶的私鑰以及加密演算法(ECDSA)。
共識攻擊也 不能從其他的錢包那裡偷到比特幣、不簽名地支付比特幣、重新分配比特幣、改變過去的交易或者改變比特幣持有紀錄。共識攻擊能夠造成的唯一影響是影響最近的區塊(最多10個)並且通過拒絕服務來影響未來區塊的生成。
共識攻擊的一個典型場景就是「51%攻擊」。想像這么一個場景,一群礦工控制了整個比特幣網路51%的算力,他們聯合起來打算攻擊整個比特幣系統。由於這群礦工可以生成絕大多數的塊,他們就可以通過故意製造塊鏈分叉來實現「雙重支 付」或者通過拒絕服務的方式來阻止特定的交易或者攻擊特定的錢包地址。
區塊鏈分叉/雙重支付攻擊指的是攻擊者通過 不承認最近的某個交易,並在這個交易之前重構新的塊,從而生成新的分叉,繼而實現雙重支付。有了充足算力的保證,一個攻擊者可以一次性篡改最近的6個或者更多的區塊,從而使得這些區塊包含的本應無法篡改的交易消失。
值得注意的是,雙重支付只能在攻擊者擁有的錢包所發生的交易上進行,因為只有錢包的擁有者才能生成一個合法的簽名用於雙重支付交易。攻擊者在自己的交易上進行雙重支付攻擊,如果可以通過使交易無效而實現對於不可逆轉的購買行為不予付款, 這種攻擊就是有利可圖的。
攻擊者Mallory在Carol的畫廊買了描繪偉大的中本聰的三聯組畫(The Great Fire),Mallory通過轉賬價值25萬美金的比特幣 與Carol進行交易。在等到一個而不是六個交易確認之後,Carol放心地將這幅組畫包好,交給了Mallory。這時,Mallory 的一個同夥,一個擁有大量算力的礦池的人Paul,在這筆交易寫進區塊鏈的時候,開始了51%攻擊。
首先,Paul利用自己礦池的算力重新計算包含這筆交易的塊,並且在新塊里將原來的交易替換成了另外一筆交易(比如直接轉給了Mallory 的另一個錢包而不是Carol的),從而實現了「雙重支付」。這筆「雙重支付」交易使用了跟原有交易一致的UTXO,但收款人被替換成了Mallory的錢包地址。
然後,Paul利用礦池在偽造的塊的基礎上,又計算出一個更新的塊,這樣,包含這 筆「雙重支付」交易的塊鏈比原有的塊鏈高出了一個塊。到此,高度更高的分叉區塊鏈取代了原有的區塊鏈,「雙重支付」交 易取代了原來給Carol的交易,Carol既沒有收到價值25萬美金的比特幣,原本擁有的三幅價值連城的畫也被Mallory白白 拿走了。
在整個過程中,Paul礦池裡的其他礦工可能自始至終都沒有覺察到這筆「雙重支付」交易有什麼異樣,因為挖礦程序都是自動在運行,並且不會時時監控每一個區塊中的每一筆交易。
為了避免這類攻擊,售賣大宗商品的商家應該在交易得到全網的6個確認之後再交付商品。或者,商家應該使用第三方 的多方簽名的賬戶進行交易,並且也要等到交易賬戶獲得全網多個確認之後再交付商品。一條交易的確認數越多,越難 被攻擊者通過51%攻擊篡改。
對於大宗商品的交易,即使在付款24小時之後再發貨,對買賣雙方來說使用比特幣支付也 是方便並且有效率的。而24小時之後,這筆交易的全網確認數將達到至少144個(能有效降低被51%攻擊的可能性)。
需要注意的是,51%攻擊並不是像它的命名里說的那樣,攻擊者需要至少51%的算力才能發起,實際上,即使其擁有不 到51%的系統算力,依然可以嘗試發起這種攻擊。之所以命名為51%攻擊,只是因為在攻擊者的算力達到51%這個閾值 的時候,其發起的攻擊嘗試幾乎肯定會成功。
本質上來看,共識攻擊,就像是系統中所有礦工的算力被分成了兩組,一 組為誠實算力,一組為攻擊者算力,兩組人都在爭先恐後地計算塊鏈上的新塊,只是攻擊者算力算出來的是精心構造 的、包含或者剔除了某些交易的塊。因此,攻擊者擁有的算力越少,在這場決逐中獲勝的可能性就越小。
從另一個角度 講,一個攻擊者擁有的算力越多,其故意創造的分叉塊鏈就可能越長,可能被篡改的最近的塊或者或者受其控制的未來 的塊就會越多。一些安全研究組織利用統計模型得出的結論是,算力達到全網的30%就足以發動51%攻擊了。全網算力的急劇增長已經使得比特幣系統不再可能被某一個礦工攻擊,因為一個礦工已經不可能占據全網哪怕的1%算 力。
待補充
待補充
6. 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
7. 比特幣挖礦計算的是什麼
1、計算的就是比特幣本身。這一計算過程就是比特幣的發行過程。
2、因上述原因,我覺得可以理解為沒有實際意義。
3、你說的是貨幣包的數目吧?那個就是你連接的其他客戶端的數量(畢竟是P2P),這很重要!這個數值要達到一定程度賬戶才可正常運作。一直開著就好了。
8. 比特幣礦機運算的是什麼
從用戶的角度來看,比特幣就是一個手機應用或電腦程序,可以提供一個個人比特幣錢包,用戶可以用它支付和接收比特幣。這就是比特幣對於大多數用戶的運作原理。
在幕後,整個比特幣網路共享一個稱作「塊鏈」的公共總帳。這份總帳包含了每一筆處理過的交易,使得用戶的電腦可以核實每一筆交易的有效性。每一筆交易的真實性由發送地址對應的電子簽名保護,這使得用戶能夠完全掌控從他們自己的比特幣地址轉出的比特幣。另外,任何人都可以利用專門硬體的計算能力來處理交易並為此獲得比特幣獎勵。這一服務經常被稱作「挖礦」。
比特幣挖礦經歷了三個發展階段,在比特幣剛剛誕生時,比特幣的價格很低,大家只是把比特幣當做一種游戲,使用自己普通的電腦進行挖礦,但在2012年隨著比特幣價格的上升,人們發現顯卡挖礦速度較快,因此,人們開始購買大量顯卡組裝到一起進行挖礦,俗稱「燒顯卡」;第三階段,就是大家熟知的ASIC礦機挖礦,自從阿瓦隆生產出世界上第一台ASIC比特幣礦機,比特幣挖礦就徹底的被顛覆了,挖礦成為了一個特別專業的事情。
9. 區塊鏈是怎麼挖礦賺錢的
挖礦賺錢的原理:PoW和挖礦。
最開始比特幣可以用顯卡挖出,但在 13 年時,已經無法用顯卡通用計算程序挖出比特幣 BTC,比特幣現在全部都是用 ASIC 礦機進行"挖礦"。
類似地,14 年萊特幣 ASIC 礦機上市也終結了顯卡挖萊特幣的挖礦歷史。目前顯卡能夠"挖礦"的數字貨幣是以太坊 ETH、以太經典 ETC、Zcash 零幣 ZEC。
顯卡"挖礦"並不是一本萬利的生意,事實上起步越早,收益越高,而且收益會隨著更多的礦工和顯卡的加入遞減。
直白說,現在買高價的顯卡入場"挖礦"絕對是虧死你,購置專業礦機才是更高性價比的選擇。如今個人挖礦的必備工具是礦池,礦池的作用是集合大量礦機算力,增大你挖到幣的幾率,同時你未來能挖到的幣提前平均分配到你的賬戶里。
以比特幣為例,假如現在比特幣全網每 10 分鍾產生一個區塊,這個區塊包含 25 個比特幣。假設全球有 1W 人參與挖礦,那麼在這 10 分鍾內,只有 1 個幸運兒拿走了這 25 個比特幣。
其它人則顆粒無收。而礦池的原理是大家組隊挖礦,並按約定的分配方式分配,使得礦工的挖幣回報趨於穩定,減少礦工的風險。
為增強性價比,還可選購一些類似玩客雲這樣的實用礦機,既能當普通硬體產品使用,也能挖礦,一舉兩得。
(9)比原鏈挖礦計算擴展閱讀
塊鏈交易和數字貨幣的運作核心有幾個:
去中心化資料庫連成的交易網路——稱為區塊鏈,大家所有的客戶端(包括礦機)一起記賬,確認轉賬交易;按時間發行一定量的數字貨幣。
因為贏家通吃,導致中小散戶礦工要聯合起來組成"礦池",以 Shares 記錄累積工作量,聯合算力越高,礦池聯合體先找到數字貨幣的概率就越大,增大找到新發數字貨幣的概率,瓜分挖到的數字貨幣。這就叫 PoW 工作量證明機制。