比特幣多開挖礦
❶ 礦機多長時間能挖一個btc
這跟礦機算力、全網難度都有關系,挖礦不需要了解多久能挖出來一個,只需要計算自己的回報率,和每天的收入費用,了解其風險和運行需要具備的條件就可以,可以到彩雲比特或者今日礦工官網看看。
❷ 什麼叫比特幣挖礦
比特幣挖礦是消耗計算資源來處理交易,確保網路安全以及保持網路中每個人的信息同步的過程。它可以理解為是比特幣的數據中心,區別在於其完全去中心化的設計,礦工在世界各國進行操作,沒有人可以對網路具有控制權。這個過程因為同淘金類似而被稱為「挖礦」,因為它也是一種用於發行新比特幣的臨時機制。然而,與淘金不同的是,比特幣挖礦對那些確保安全支付網路運行的服務提供獎勵。在最後一個比特幣發行之後,挖礦仍然是必須的。
簡而言之,比特幣挖礦計算的是基於SHA256演算法的數學難題,確認網路交易,比特幣網路會根據礦工貢獻算力的大小給予的等分的比特幣獎勵。目前,比特幣挖礦經歷了三個階段,CPU、GPU、ASIC,目前,以ASIC礦機挖礦一家獨大,其中,阿瓦隆礦機尤其突出,阿瓦隆礦機一直走在礦機行業的前列,是比特幣挖礦行業的領頭羊,目前,搭乘三代晶元的礦機已進入市場,第四代晶元據說正在研發中。
【拓展資料】
任何人均可以在專門的硬體上運行軟體而成為比特幣礦工。挖礦軟體通過P2P網路監聽交易廣播,執行恰當的任務以處理並確認這些交易。比特幣礦工完成這些工作能賺取用戶支付的用於加速交易處理的交易手續費以及按固定公式增發的比特幣。
新的交易需要被包含在一個具有數學工作量證明的區塊中才能被確認。這種證明很難生成因為它只能通過每秒嘗試數十億次的計算來產生。礦工們需要在他們的區塊被接受並拿到獎勵前運行這些計算。隨著更多的人開始挖礦,尋找有效區塊的難度就會由網路自動增加以確保找到區塊的平均時間保持在10分鍾。因此,挖礦的競爭非常激烈,沒有一個個體礦工能夠控制塊鏈里所包含的內容。
工作量證明還被設計成必須依賴以往的區塊,這樣便強制了塊鏈的時間順序。這種設計使得撤銷以往的交易變得極其困難,因為需要重新計算所有後續區塊的工作量證明。當兩個區塊同時被找到,礦工會處理接收到的*9個區塊,一旦找到下一個區塊便將其轉至最長的塊鏈。這樣就確保采礦過程維持一個基於處理能力的全局一致性。
比特幣礦工既不能通過作弊增加自己的報酬,也不能處理那些破壞比特幣網路的欺詐交易,因為所有的比特幣節點都會拒絕含有違反比特幣協議規則的無效數據的區塊。因此,即使不是所有比特幣礦工都可以信任,比特幣網路仍然是安全的。
❸ 比特幣挖礦什麼意思
比特幣挖礦,是一種利用電腦硬體計算出比特幣的位置並獲取的過程。
挖礦是在比特幣系統中進行記錄數據的一個激勵過程,在比特幣系統個人用戶通過利用CPU或者GPU進行哈希運算,當計算出特定的哈希值之後便擁有了打包區塊的權利。
而為了獎勵這個用戶進行打包區塊,系統就給予一定的比特幣作為報酬。因為這個過程很像現實生活中「挖礦」所以大多數人就把這個過程叫做挖礦。除了比特幣外,其他的電子虛擬貨幣也可以通過挖礦獎勵獲取,如以太坊、門羅幣等等。
(3)比特幣多開挖礦擴展閱讀:
挖礦風險:
1,貨幣安全
比特幣的支取需要多達數百位的密鑰,而多數人會將這一長串的數字記錄於電腦上,但經常發生的如硬碟損壞等問題,會讓密鑰永久丟失,這也導致了比特幣的丟失。
2,系統風險
系統風險在比特幣這個裡面非常常見,最常見的當屬於分叉。分叉會導致幣價下跌,挖礦收益銳減。不過很多情況表明,分叉反而讓礦工收益,分叉出來的競爭幣也需要礦工的算力來完成鑄幣和交易的過程,為了爭取更多的礦工,競爭幣會提供更多的區塊獎勵及手續費來吸引礦工。風險反而成就了礦工。
❹ 比特幣挖礦是什麼意思
比特幣挖礦是一種利用電腦硬體算出比特幣的位置並獲取的過程。
接下來就重點介紹一下到底什麼叫比特幣挖礦、及其他的意義:
1、挖礦是在比特幣系統中進行記錄數據的一個激勵過程,在比特幣系統個人用戶通過利用CPU或者GPU進行哈希運算,當計算出特定的哈希值之後便擁有了打包區塊的權利。
而為了獎勵這個用戶進行打包區塊,系統就給予一定的比特幣作為報酬。因為這個過程很像現實生活中「挖礦」所以大多數人就把這個過程叫做挖礦。除了比特幣外,其他的電子虛擬貨幣也可以通過挖礦獎勵獲取,如以太坊、門羅幣等等。
2、指爭奪記賬的權利,然後獲得比特幣獎勵。比特幣是有限的,系統每10分鍾左右會進行一次記賬,用戶需要用自己的挖礦機爭奪這個記賬的權利,挖礦機是指專門用於挖比特幣的計算機,這類
計算機有專業的挖礦晶元,運行特定的演算法來進行計算,就是耗電很大。
書面定義理解起來很困難是正常的,我可以用一個例子來解釋到底什麼叫挖礦:
無論現在我們有多少錢,都是有專門的人記賬,例如你卡里有10000元的話,銀行第一個會幫你記賬,你花了多少錢,你花在了哪賀猜和里,這些都會有記錄。可是古時候就不一樣了,沒有金融體系,他們禪盯的貨幣很簡單,就是找一些大型的石頭擺在那裡當貨幣,每次要進行交易的時候都要喊上所有人來宣布一下,這塊石頭現在歸誰了。
也就是說,那個時候所有人都要記賬,都要記得兆大每一個人的交易情況,也要記住貨幣屬於誰。其實挖礦也是一樣的性質,比特幣的總量是2100萬枚,嚴格意義上來說,應該是無限接近2000萬枚卻達不到2000萬枚。以前是人工記賬,而「挖礦」則是用計算機記賬。這里我說了「計算機」而不是「電腦」,本質上是有區別的。 綜上所述,比特幣挖礦大概就是這個意思,希望我可以幫到你
❺ 比特幣怎麼挖礦 挖比特幣的基本流程
1、前期准備:准備顯卡、比特幣錢包、挖礦軟體等。
2、選擇一個比特幣礦池,注冊礦池賬號並進行賬號設置。
3、下載比特幣挖礦機,進行必要設置之後開始挖礦。
4、去交易平台注冊賬號存放挖到的比特幣。
5、通過交易平台將存放在外網的比特幣導入到中國網站。
6、比特幣成功挖出,可以用來掛牌賣出或者留著升值。
❻ 科普:比特幣是什麼,「挖礦」是如何進行的為何耗電量越來越大
2021年中旬,劍橋大學的一項研究數據表明,因為比特幣挖礦導致的耗電數已高達134.89太瓦時,如果把比特幣挖礦比作一個國家,那麼它在全球所有國家中的耗電排名高達第27位,相當於馬來西亞全國一年的耗電總量。
比特幣挖礦到底是怎麼一回事?為什麼它需要消耗這么多電力呢?
我們知道要獲取比特幣就需要「挖礦」,在現實生活中,挖礦要用到挖掘機,鑽井機等大型設備;而在虛擬世界裡,挖礦就是指使用電腦計算獲取比特幣。按理來說,電腦計算也不需要消耗這么多的電吧,為什麼挖比特幣就這么費電呢?
確實,在比特幣剛剛被創造出來的時候,它的創始人中本聰僅僅使用了一台家庭電腦就開發出了50枚比特幣,所消耗的電力自然不多。
但是,隨著越來越多的人湧入比特幣市場,其開采難度卻越來越大了。這個和比特幣的發行模式有關。那麼,比特幣是如何發行的呢?
首先,比特幣礦場在誕生之初,它的儲量就被限定死了,總共只有2100萬枚,分布於各個礦區裡面。最開始,礦工們每發現一個礦區,就會被獎勵50枚比特幣。但是每產生21萬個「礦區」,獎勵的比特幣數量就會減半一次。
簡單來說就是,當初我們挖一個比特幣只要用一台電腦挖上一天就可以了,但是後來慢慢變成兩台電腦兩天,四台電腦四天。挖礦的難度成倍增加,需要消耗的電力自然也是成倍增加的。這個過程將一直持續到2140年,2100萬枚比特幣才會全部發行完成。如今自比特幣誕生才僅僅過去了13年時間,就耗費了這么多電力,可想而知,未來的比特幣市場將會是一個怎樣的無底洞。
正是因為這樣的機制,所以作為一個礦場主,要跑贏其他人,唯一能做的就是購進更多、運算速度更快的礦機,這樣才能搶在別人前面挖到更多的比特幣。
而作為初代礦機的家庭電腦顯然已經無法滿足挖礦的需求了,因而礦工們的生產工具也是不斷革新,從一開始的CPU計算、進化成為GPU運算,再到產生專門的礦機運算。礦機搭載有專門的「挖礦晶元」,通常以燃燒顯卡和晶元的方式運行。
這個過程中不僅有硬碟運作帶來的電力消耗,在運作過程中產生的熱能,也會導致整個礦場宕機(死機)。因此,這其中還包括電源風扇和機箱風扇消耗的電能。目前,僅僅是單台礦機的運作耗電量都在35度左右,一個礦場一天的電力消耗甚至可以滿足普通人一輩子的用電需求。
那麼,礦工們「辛辛苦苦」,耗費無數電力資源挖掘得來的比特幣,究竟有怎樣的價值呢?我們不妨看看比特幣誕生的背景,2008年次貸危機全面爆發,美聯儲不得不啟用寬松量化政策來應對接下來的危機。面對美元的不斷加印,貶值成為了它的定數。
同年底,一位「屠龍少年」——中本聰,發布了一則白皮書,名為《比特幣:一種點對點的電子現金系統》,明確闡釋了比特幣的概念,他試圖用電子貨幣來挑戰美元的霸權。次年1月,在他的一手操辦下,比特幣的「創世區塊」也由此誕生。
由於比特幣在當時,知道的人很少,只在程序員群體中小范圍流傳,所以並不值多少錢。其中還流傳著這么一個經典故事,某程序員通過挖礦,獲得了1000枚比特幣。於是,他用這些比特幣買了兩塊披薩。
但是後來,由於比特幣自帶的反叛精神,它很快就在Geek圈(即,技術發燒友)獲得了認可。在他們的擁護之下,比特幣在整個世界范圍內逐漸站穩了腳跟。甚至在暗網世界裡,人們把它當作是虛擬世界裡的「美元」,用來進行各種黑色產業的交易行為。
隨著知名度和使用范圍越來越廣,價格也逐漸魔幻起來。一路突破了3000美元的大關。時間來到2020年,美聯儲再次「放水」,光是這一年發行的貨幣量就佔到了美元總發行量的21%,比特幣也迎來了它「幣生」中的高光時刻,一舉突破單價68000美元的大關。
但是,與中本聰的初始理念相悖,隨著比特幣擁躉數量的增加,它已經逐漸脫離了貨幣這個概念,甚至從勞動價值論來講,比特幣的價值只能被認定為「0」。首先,在比特幣誕生之初,人類 社會 並不需要這樣一個東西,它不是剛需。第二,礦工們掘金的過程,也無法通過勞動力衡量。總之,比特幣誕生的13年來,它一直是游離於我們的商品流通體系之外。
一句話就是,比特幣沒什麼實際價值,現在的高價不過是炒作出來的泡沫而已。
如果非要說比特幣有價值,只可能是因為它擁有去中心化、匿名性、難以丟失等屬性,致使它具備了人造數字資產的價值。一旦它回歸初始屬性——貨幣,面臨的必將是被主流貨幣絞殺。所以,比特幣最大的價值恐怕就是挖礦時浪費的電費和礦機的賬單了吧!
去年中旬,央行發布公告,約談了一眾主流金融機構,重申了我國打擊比特幣在內的虛擬貨幣炒作行為。我國為什麼一定要打擊比特幣炒作呢?
首先是消耗電力資源。 我們在前面說過,比特幣市場的耗電量只會越來越多,而且是成倍增加,如果讓它在國內泛濫,必然會壓榨其他產業的電力,影響國內經濟的發展。
實際上,比特幣早已入侵我國,並且造成了極大的資源浪費。
據報道,在2021年5月以前,全球近7成的比特幣礦場都在中國。礦場主們會在豐水期前往雲貴川一帶的水電站購買廉價電力。枯水期則會前往大西北,諸如內蒙古、新疆等煤炭相對便宜的地方購買火電。有人預測到2024年,中國比特幣挖礦每年會消耗3.5個三峽大壩的年發電量。好在,經過我國的全力打壓後,目前比特幣礦區已經逐漸退出國內。
其次,比特幣應用場景一般都是非法資金運作,它的匿名性成為了洗錢、毒品交易、詐騙所得等黑色產業天然的保護傘。 我國嚴厲打擊掃黑除惡的風氣,首先就得打擊其中利益往來的工具,也就是斬斷比特幣的傳播鏈條。
其三,也是最重要的一點,就是要捍衛我國貨幣主權。 現在世界范圍內,經濟局勢動盪不安,比特幣會增加國家甚至世界的金融風險。甚至這些小小的比特幣,足以擁有讓一個國家破產的能力。
比如,2021年9月,中美洲小國薩爾瓦多,因為欽定比特幣為法定貨幣,在世界范圍內,狠狠刷了一波存在感。可是今年以來,比特幣的大熊市,卻讓薩爾瓦多虧損了上千萬美元,
甚至有人說,它極有可能成為第一個因為「炒幣」而破產的國家。
由此可見,無論是對於一個國家還是一個普通人來說,「炒幣」的行為和賭博的性質沒什麼兩樣,它會腐蝕一個人的精神,消耗掉一個民族勤勞的美德。所以,我國堅決打擊比特幣絕對是明智之舉。
❼ 能源區塊鏈研究丨比特幣挖礦的發展進程
比特幣目前還沒發展到成長期,但隨著比特幣挖礦速度開始加快,該行業有望實現大幅增長。
2008年10月,在中本聰發表白皮書詳細介紹如何創建新貨幣體系時,沒有人料到在之後不到13年的時間里,比特幣的市值能夠飆升至8500億美元。此外,比特幣還衍生出了數千種其他類型的加密貨幣,形成了一整個金融服務行業,並發展成為一種新的資產類別,徹底改變了我們所熟知的貨幣類型。
我們公司已從事比特幣挖礦活動七年了,並推動了該行業的發展和適應。下面我們將介紹一些鮮為人知的比特幣挖礦發展過程以及對該行業有重大影響的一些趨勢。
比特幣挖礦的產生
比特幣是一種去中心化貨幣體系,其作用類似於黃金,是一種擁有價值儲藏手段的有限商品。這意味著比特幣的供應有限,目前僅存2100萬個比特幣,這使得其不易受通貨膨脹影響。想要使用比特幣的人們無需受有權改變其價值或決定用戶使用權的政府監督。
那麼,比特幣本身從何而來呢?與黃金一樣,比特幣必須經過挖掘才能獲得,但不是用鎬和鐵鍬,而是用計算機進行挖掘。
比特幣以區塊鏈技術為基礎。世界各地的礦工們競相解一種演算法,為的是可以在區塊鏈中添加一個區塊。率先解出該演算法的人可以獲得該區塊的交易費用和新幣發行的固定獎勵(目前是每個區塊獲得6.25個比特幣),而這會增加比特幣的流通量。
最初創建比特幣時,挖礦非常容易,礦工們在廚房就可利用配備標准中央處理器的筆記本電腦進行挖礦。但隨著越來越多礦工的加入,解演算法這一競爭愈發激烈,這也意味著礦工們需要更強的數據處理能力和更新的硬體設備。為了有效運行更強大的計算機,電費價格開始受到重視。很快,由於挖礦競爭過於激烈,個體挖礦便不再具有盈利性。
價值數十億美元行業的誕生
要想盈利,就必須擴大挖礦業務的規模。目前,市場上出現了新的挖礦專用硬體,礦工們也在拖車和倉庫中安裝了礦機,以便擁有數千台礦機的大型礦場全天候解決演算法問題。大規模礦場的運營包括布局和設計、能源、軟體管理以及硬體更新,在這些運營需求的推動下,比特幣挖礦迅速發展為一個價值數十億美元的行業。
方舟投資(ARK Invest)的報告顯示,支持生態系統的硬體成本約為72億美元,此外,該報告稱,「自比特幣專用硬體2013年面世以來,我們認為已有數十億美元用於設計、生產和流片,這也衍生出了一個專門製造這種強大而又專業硬體的行業。
比特幣挖礦雖然操作復雜,但是利潤頗豐。方舟投資預計,礦工們可以獲得150億美元的收入,這些收入來自交易費用和比特幣固定獎勵。
競爭催生新硬體
比特幣挖礦的競爭不斷加劇,但由於比特幣是一種有限商品,所以挖礦的競爭也是有限的。這意味著挖礦運算需要盡可能以高性能保持高速運行,如此才能獲得獎勵。
由於比特幣挖礦日益激烈的競爭提高了對計算能力的要求,所以挖礦競爭也就變成了顯卡競爭,而顯卡是 游戲 玩家通常在高端 游戲 中才會使用的硬體。後來,專用集成電路逐漸取代了顯卡,這是專門用於挖掘加密貨幣的一種硬體,是比特幣挖礦中速度最快、效率最高的硬體,目前僅在挖礦中使用。
但硬體依賴於晶元,雖然目前晶元技術不斷加速發展,但晶元還是供不應求。這意味著挖礦運算需要提前規劃升級,而且必要的硬體經常售罄,比如比特大陸最近正面臨短缺。
新技術最有望實現盈利
同樣,比特幣挖礦需要跟上技術發展的步伐,能使挖礦硬體更大、更好、更快,因為一旦效率滯後就會造成盈利受損。如今,技術不斷超越創新,因此挖礦不僅需要跟上購買新硬體的步伐,還需要迅速安裝新硬體。這是因為時間至關重要,即使只延遲幾天都會造成嚴重損失,所以許多挖礦作業(比如我們公司的挖礦)都租用了波音747s以減少運輸時間。
西方礦工人數增加
長期以來,全球超過一半的挖礦能源來自中國,主要原因是在中國設立工廠的成本更低,運輸速度更快。但隨著中國加大對比特幣挖礦的打擊力度,這些優勢正在消亡。據《連線》雜志報道,「比特幣挖礦的地理分布可能正在發生變化,」該業務或轉向北美、歐洲和拉美等地。礦工們也計劃在北歐國家、加拿大和美國等地尋找挖礦地點,這些地方擁有大量廉價的可持續能源,如風能、太陽能和水能等。
比特幣的未來
盡管比特幣最近出現了許多波動(這並不新鮮),但是比特幣的未來是光明的,其價值將繼續上漲,並且會吸引新的投資者。隨著越來越多的人們開始了解比特幣,了解其來源和挖礦方式,人們還將從比特幣中發現更多價值。
❽ 國家為何打擊比特幣的挖礦和交易比特幣有什麼風險
專業礦機的資金分配風險大。數字加密貨幣,大多數都是基於優化演算法和硬碟存儲的生產方法來獲取收益,所以對設備(挖礦機)的要求很高,特別是Cpu,像IPFS分布式系統則是對電腦硬碟要求很高,這種資金分配想當大,一台高端的礦機動性則十幾萬呢!選定貨幣爆礦率的風險性。每一個貨幣爆礦率是不一樣的,這個和挖幣的競爭商圈很有關,當你挖幣是BTC,如今比特幣挖礦機越來越多了原本競爭能力就大,加上BTC每四年都是在下降出礦率,假如你礦機算力不夠將難以挖出BTC。
民用電的資費標准來挖幣,虧損的很有可能非常大。挖幣期內還要考慮挖礦機的毀壞,維護保養等。現階段獲得比特幣的方式有兩種:一種是直接到二級市場(交易中心)購買比特幣(優點:24h可買賣,流通性好;缺點:二級市場與挖幣成本費高些,本人實際操作非常容易高拋低吸,經常風險管控比較大),另一種是根據選購挖礦機,資金投入設備成本費來獲取BTC(優點:得幣低成本,購買比特幣時打折,一般5折,盈利平穩;缺點:前期投入成本,相對而言,3-5年生產效率,歸屬於輕資產)。
❾ 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。