假如比特幣沒人打包區塊
A. 如果比特幣挖完,還會有新的區塊產生嗎
區塊生成是靠打包者(可以被稱作「礦工」)打包交易生成的。沒有打包者,就沒有區塊,就不存在區塊獎勵。比特幣並沒有要求一定會有下一個區塊,是通過經濟利益激勵打包者去競爭打包區塊而不是演算法強制。
B. 我朋友投資比特幣掙了很多錢,可信嗎
可信,只要他做到低買高賣,就一定能掙到錢,不過比特幣風險太大了,掂量一下自己手裡的資金,看看雄厚不,如果就一點錢還是不要碰了。尤其是比特幣期貨,可能瞬間你的自己就不剩一分錢,甚至來不及平倉還會欠錢。
C. 比特幣已死,區塊鏈重生
(一)新概念
我對於比特幣的看法是在不斷迭代更新的,但是本質層面的東西不會變:這個新鮮事物是否會促進生產力的發展。我們必須先要明確以下幾個概念:
第一,區塊鏈技術。這是實實在在生產力的發展與革新,具有很重要的現實與未來意義,我們必須重視區塊鏈技術的發展,不能再像晶元技術一樣,一步差、步步差,繼續讓美國一直佔領著這個高地。我最初了解區塊鏈技術的時候,彷彿認知領域打開了一扇窗,整個大腦都亮堂了起來,覺得「去中心化」理念的實踐,跟共產主義「六億神州盡舜堯」,以及當年人人可以作為有機體一份子的「大鳴大放、大辯論、大字報」,有諸多暗合之處。
區塊鏈具有「不可偽造」「全程留痕」「可以追溯」「公開透明」「集體維護」等特徵,馬恩列毛等先賢們沒有見到去中心化的互聯網時代,但是他們許多設想自然而然在互聯網時代——也就是生產力的進步中實現了,這就是唯物史觀的偉大力量。
正因為此,國家很重視區塊鏈技術的發展,這是非常正確的決策。區塊鏈還首次作為七大數字經濟重點產業之一寫進了「十四五」計劃。區塊鏈涉及數字技術應用業、數字要素驅動業、數字化效率提升業3個大類中的6個小類。6個小類分別是數字技術應用業的互聯網數據服務,數字要素驅動業的新技術基礎設施建設和數字化效率提升業的數字化通用、專用設備製造,數字化運輸設備製造,數字化電氣機械、器材和儀器儀表製造,其他智能製造。
第二,比特幣。比特幣是區塊鏈技術誕生的契機與見證,它自己不是生產力不是技術進步,而是生產力發展與技術進步的目的或結果之一。做一個類比,區塊鏈技術是一條新誕生的河流,比特幣就是河流源頭上沖刷下的鵝卵石。對於特定的人群來說,是有收藏價值的,而且你甚至可以理解為,有些人就是為了這個鵝卵石,才挖開的這條河。
比特幣的誕生曾經是具有革命性的,比如(據說)中本聰的初衷就是為了反對美元霸權,決定設計一種「永遠不會貶值」的加密貨幣。但是隨著時代的發展,比特幣越來越不能與區塊鏈技術相提並論。比特幣有沒有價值呢?有,挖它機器的損耗、電力的損耗,都是價值。比特幣有沒有使用價值呢?幾乎沒有。除了對少數人來說有一定的紀念意義,然而更多地都用在了金融市場投機、黑市交易與洗錢中了。
第三,挖「礦」行為與炒幣行為。人們用大量計算機,依據特定的演算法找到比特幣,被稱作「挖礦」。由於比特幣演算法的特殊性,越往後挖越難、人越多挖越難,所以必須要投入越來越多的機器,耗費越來越多的電力。而炒幣行為則是針對現有的比特幣的投機——我批判的是針對比特幣的投機行為,而不是比特幣本身,就好比當年鬱金香泡沫,鬱金香那麼美的花是無辜的。
第四,狗狗幣,shit幣,S幣等。這些與比特幣類似,只是基於不同的演算法而產生的,比如比特幣有一個數量上限,狗狗幣就沒有一個上限。加密貨幣都與某些群體是有意義的(黑幫、洗錢集團、跨國犯罪團伙),但是在世界各國政府都不承認的前提下,意義十分有限,只能用作金融投機行為了。有一些幣,甚至於就是為了諷刺比特幣而推出的,結果自己竟然也變成了投機品,成為了「諷刺之諷刺」。
第五,空氣幣,垃圾幣。這些在前幾年國內市場很泛濫,後來經過國家監管取締之後基本銷聲匿跡。這些幣跟區塊鏈技術已經沒有一毛錢關系了,就在後台隨便寫個演算法,然後再蹭一個熱點,去忽悠大爺大媽們投資,這跟明目張膽的騙錢沒有任何區別。祝所有的空氣幣騙子早日進牢房。
下面是當年很經典的一張圖,一群空氣幣垃圾幣搞了個什麼區塊鏈大會,結果到會了好多大媽,因為大媽們是大金主、大投資方,所以都是與會重要嘉賓。按理說,騙大爺大媽們買點保健品啥的,好歹還有個安慰劑的效果,忽悠他們買空氣幣真是造了八輩子的孽。
(二)新局勢
生產力的不斷發展帶來了新局勢,所以我對於比特幣的評價也是動態變化的。
之前我覺得比特幣一來符合電子貨幣化的趨勢,二來符合互聯網去中心化的進程,說不定還能打擊美元霸權,中本聰他娘的就是個天才。講道理,曾經區塊鏈技術真心是代表先進生產力的發展方向的,而比特幣則是區塊鏈技術最好的「勛章」,我真的很心嚮往之。然而資本和人性的貪婪,可以把一切先進生產力變成投機活動。當新時代的「淘金潮」來臨之時,比特幣甚至變成了生產力的浪費——電力資源,顯卡,硬碟等等生產工具,變成了他們的投機工具,大量的資源被用在了投機浪費中。
人類真的有把任何天才設定玩成投機 游戲 的能力——本來是生產力發展區塊鏈價值的見證,結果變成了瘋狂挖礦浪費生產力的行為;本來是反傳統反權威去中心化的理念,結果變成了交易所割韭菜的狂歡。我現在的態度是這樣的:依然認可比特幣,但我不認可投機比特幣的行為;至於那些垃圾幣、空氣幣、虛擬幣、 游戲 幣,這些東西實在不值一提,早晚會被掃進 歷史 的垃圾桶。
就像我上文所說的,人類 歷史 上很難舉出這樣的例子:耗費了很多價值(凝結在其中無差別的人類勞動),但是產生了一個鮮有使用價值的東西。之前的投機品,股票什麼的不是價值,就是商業票據;鬱金香之類的,聞個香味看個樣子也是有用的。而唯獨比特幣,你很難想像出除了投機、洗錢之外還能有什麼使用價值,這個真的是人類發展新的一頁——我們竟然發明出耗費巨大價值但全無使用價值的東西。
就像本文題目所說的:浪費糧食可恥,浪費生產力呢?比特幣的投機行為,已經轉化為了對生產力的巨大浪費。根據劍橋大學最新的數據統計,光是比特幣的挖礦耗電,每年的耗電量達得到了約133.68太瓦時,1太瓦時等於10億度電量。這個數字基本上超過了瑞典國家的全年耗電量,全球國家耗電佔到27位。在我國,大部分比特幣礦機位於內蒙古、四川、雲南和新疆等地,因為這些地方資源豐富,因此電價較低。中國此類活動每年消耗的電力料將在2024年達到約297太瓦時(1太瓦時等於10億度電)的峰值,超過義大利2016年的耗電量;每年的碳排放也將升至1.3億噸,超過捷克2016年的溫室氣體排放總量。
目前全國用電量都很緊張,廣州浙江等地都在限制工業用電,更有碳中和的遠期指標在那裡,不把這種挖礦行為好好打擊一下實在說不過去了。
更何況,除卻對生產力的浪費,還有金融風險的問題。就如上文所述,國內外的比特幣交易難免伴隨著黑市買賣、洗錢、資金外流等風險——這是宏觀層面上的問題;微觀層面上暴漲暴跌24h波動的幣圈交易市場,對於每一位個體投資者來說都是無法控制的風險。
今年5月21日,國務院金融穩定發展委員會進一步要求:「打擊比特幣挖礦和交易行為」。下一步,應採取針對性措施,開展虛擬貨幣挖礦和交易行為集中整治活動,保護好投資者的財產安全,維護好經濟金融秩序。金融管理部門應加大對虛擬貨幣非法挖礦和交易活動的打擊力度,維護好正常的經濟金融秩序,為我國數字人民幣正式推出創造更好的環境。對非法參與虛擬貨幣交易、炒作或為之提供支持服務的機構、平台,應聯合司法部門及時處置,提高違法違規成本,增加整治活動威懾力。對比特幣挖礦項目,各地應全面清理、及時關停。
踩了碳排放、金融系統性風險、資金外逃三條紅線,挖礦行為想不死也難。
(三)永恆的貪婪
中本聰為了挑戰美元霸權設計了比特幣的規則,而現在幣圈市場成為了資本逐利的競技場,不得不感慨資本有把任何一種革命性的東西變成自己的奴隸。以前「幣圈」還分「幣黨」和「鏈黨」——因為先有幣還是先有鏈本身就是一個雞生蛋蛋生雞的問題,掰扯不清。所以幣黨認為區塊鏈技術就是為加密幣服務的,加密幣終將一統未來金融;而鏈黨認為區塊鏈技術的應用遠超於加密幣,比特幣只不過是區塊鏈的兒子而已。
目前來看鏈黨大獲全勝,真正的幣黨所剩無幾,基本都變為熱切投機的掮客罷了。現在所謂幣圈雲雲,不過是給自己一個高大上的名分,本質就是賭博:以前的賭狗變成了先鋒炒幣人士,以前的莊家變成了 科技 創新企業。我是真心實意地一直在建議身邊那些在股市微操和炒幣的朋友們去澳門,簡單直接,一夜暴富的概率比炒幣大多了;而且你賭得多了還能享受vip待遇,房費路費酒水錢都給你報銷;就算你虧了,也是出去 旅遊 放鬆了一趟,澳門那些賭場裝潢豪華,有免費的酒水飲料和各種美味的點心小吃,每天還有諸如夏威夷草裙舞、天鵝湖芭蕾舞、雜耍魔術之類的免費表演,不比你在出租屋裡天天盯著盤爽多了?
更何況,人家賭場都是百年老店誠信為本,贏大了也不會賴賬,還會給你敲鑼打鼓宣傳騙新韭菜;輸大了也不會撕破臉,還會退給你食宿費用和往返路費。看看這些狗逼交易所什麼嘴臉——斷電、拔網線、強制平倉、賬戶失效……我就老嘲諷那些幣圈洋洋得意的先鋒青年,你們這產業比賭博low多了。我還認真建議戒不了「賭癮」的朋友,要賭就去賭真的,虧了錢也可以當做是消費享受了,不比白白被交易所割韭菜爽的多?
以上內容手動狗頭,不是讓大家去賭博,賭狗都該死,我只是諷刺一下所謂的「幣圈」,怕有些好兄弟當真了,還是聲明一下。
看《指環王》有一段劇情,現在看來挺有意思:薩魯曼說矮人們太貪婪,挖礦挖得太深,挖出了遠古的邪惡之物。特么我第一時間就聯想到了那群挖比特幣的人hhhhh真是貪婪啊,現在別說顯卡暴漲了,內存條硬碟之類的,價格都翻了小一倍了,太誇張了。讓我們拭目以待當代挖礦的人會挖出什麼怪物吧。
此情此景,我只想說出《指環王》里那句優美的話:You shall not pass!衷心祝願礦難的萬丈深淵埋葬一切投機分子。
(四)經驗教訓
下面這部分是我自己的投資經歷,給大家分享一下,就當聽個故事樂呵樂呵,能吸取其中的經驗教訓最好,如果不能的話銘記一點就好:在沒有充足信息時,盡量遠離金融產品投機市場。
2014年的時候我正在香港讀研,有一位人人網認識的前輩跟我說:「你現在有香港的身份證、香港的銀行賬戶,買比特幣特別方便,你可以了解一下買買試試,機會難得。」我一直很佩服這位前輩,很重視他的建議,所以去了解了一下比特幣。當時剛剛好讀了凱文·凱利的《失控》,彷彿打開了一扇新世界的大門;又學習了一下區塊鏈的原理,覺得中本聰太牛逼了,就感覺被這兩位大神奪走了童貞。所以自然對比特幣充滿了肯定,覺得這是人類金融史上新的一頁。
雖然理想很豐滿,但是現實很骨感,我面臨的最大的一個問題就是——沒錢。當時我還是學生,拿家裡的生活費,香港房租物價又出奇的高,過得相當緊巴巴的。投資這種事自然就暫時擱置下來了。不過那年上半學期過完,剛好有一個申請半程獎學金的的機會(都是香港各種有錢企業贊助的),於是我申請了一下還真申到了一個一等獎學金(上面還有個特等的),好像是5500港幣,對於那個時候的我就是一筆巨款。
我是聖誕假期之前申請的,來年拿到了錢,用這筆錢買了根鋼筆犒勞了一下自己,剩下的錢買了整整兩個比特幣——我記得當時價格好像是不到兩千港幣,時間有點久遠了,肯定有出入。所以本文肯定不是標題黨啊,當時那筆錢對於我來說就是超級重倉啊就是有梭哈的性質啊。
肯定就有人開始算我賺了多少錢了——買的時候三四百美元,最高漲到了六萬多美元,那這一下就是幾十萬……這是陷入了思維定式的誤區。我不到兩千RMB買的,當漲到四千的時候,我就全部清倉了……不要笑,這特么就是《夏洛特煩惱》里的情節,人人都笑大傻春,人人都是大傻春……
但是投資又不是開上帝視角,你倒著活誰都能活明白。當時比特幣翻一倍對我來說就是超級無敵從未遇到過的收益了,一個剛畢業工作的年輕人很難把持得住吧?誰知道他後來又漲了那麼多翻了幾十倍呢。
沒有錯,這就很真實,總有富佬聽我講完這個故事之後跟我說你要拿得住才行,廢話我也知道,但是你富佬拿去投資的錢僅僅是你零花錢的N分之一,可能一輩子也用不到這筆錢,你可不拿得住么;對於我來說投資收益是可以大大改善生活質量的一筆巨款,肯定心態不一樣啊,肯定患得患失,拿得住就見鬼了。說白了經濟基礎不同,別整這些投資技巧沒用的。
當然,必須嚴謹的說,我跟大傻春還是不一樣的——畢竟那是喜劇電影的效果。我是賣了之後還是持續關注比特幣市場的,後來覺得還有投資價值又買回來了,這又不是一錘子買賣。我後來賣了買、買了賣,也成為了一個令人討厭的投機者,終於有一天我醒悟了。
那個時候炒比特幣正是好行情,也確實賺了不少錢——這沒啥不好承認的。但是呢,比特幣24h可交易,也沒用漲停跌停這種東西,每天價格起起伏伏跟坐過山車一樣,你無時無刻不得盯著盤,心情跟著價格起起落落,忍不住了就想微操。
後來這樣的日子過了一段時間就覺得挺沒意思的,生活就被比特幣綁架了,人生的意義就是那點漲跌。當時正好研究了「異化」理論,深受啟發,比特幣的漲跌「規定」了我的意義,讓人變成了「非人」,我不是我為自己而活了,我是為比特幣而活了。
人應該是物的主人,人不能是物的僕人。想明白這一點我就清倉了所有的比特幣,就保留了一個留作紀念,現在比特幣別管怎麼瘋長怎麼暴跌我的內心都絲毫激不起一絲波瀾。這一個幣當我決定不拿去市場流動時,它就喪失了外界定價的意義,僅僅是一件「物」而已。我想好了,將來有了孩子,就把保存比特幣錢包的u盤做成一個吊墜掛他脖子上,這是上一輩送的時代性禮物,作為人類生產力發展以及各種奇妙 社會 現象的一個見證。
D. 如果比特幣成真,大量持有比特幣的人成為巨富,這合理嗎
存在即合理。
除了比特幣之外,我們日常生活中還有很多可以讓人暴富的項目或投資品,這些都可以讓人暴富,也能讓人破產,這些在現今的經濟社會中都是合理的,「危機」這個詞是最好的證明,有危險的地方自然有機會。
暴富的背後
正所謂「殺人放火金腰帶,修橋補路無屍骸。」我的意思是當少數人的暴富,背後是有很多人虧損甚至破產,畢竟比特幣目前只是一個零和游戲,有資本的地方自然就會上漲,自然就會有炒作,有價值。
一個炒幣暴富的投資者背後有多少個虧損、被套、爆倉的投資者,這個值得我們有所思考。
E. 比特幣為什麼要挖礦
眾所周知,「區塊鏈」最顯著的一個特徵就是「去中心化」,那什麼叫「去中心化」呢?比如說比特幣,比特幣是沒有任何權威性機構發行的貨幣,那比特幣的交易行為如何產生記錄呢?這就得益於區塊鏈的「節點」,每一次單一的「節點」都會記錄這些交易記錄,再傳播到下一個「節點」上,這樣一傳十,十傳百最終就形成了一張網狀的結構,所有的節點都會記錄這筆交易。由於這種傳播的手段是點對點的,每一個點都是一樣大的,沒有權威的大點,所以這種方式就做到了「去中心化」。
我們接下來開始分析為什麼比特幣要通過運算的手法來挖礦。首先,上面我們說到了每筆交易都是由一個點和另一個點產生的,那這兩個點交易完成後會向所有點擴散此次交易行為,讓所有的點都記錄此次交易的發生。但是問題是什麼呢?
由於比特幣長時間的積累,交易量信息就會爆炸,點對點之間的信息核對數據量就會越來越大。就好比說車多了,如何保證馬路上不堵車呢?
所以中本聰就發明了「區塊鏈」這一技術解決了這個問題。什麼意思?就是將這些信息進行標准規范的打包,形成一個大的壓縮包,以壓縮包的形式來進行傳遞,就保證了在運送的路上不會堵車。
好,那麼問題又來了,誰來給這些數據打包呢?所以就出現了「挖礦」,也就是說第一個將一堆信息進行規范化打包的人就會得到獎勵,獎勵是什麼呢?就是比特幣。而打包的過程就叫做「算力」,「算力」越高,打包速度就越快。
只有通過運算挖礦的方式才能保證每個點都記錄在案,不會出現很大的點來控制局面,從而實現真正的去中心化。
獲取比特幣的方法有兩種,一種是直接購買幣,一種就是挖礦。挖礦又分為三種,個人挖礦,託管挖礦,雲算力挖礦。
直接挖礦劃算還是買幣劃算呢?
假如幣價漲,短期看,挖礦收益直觀遞增,長期看回本後,每天產出的都是凈利潤,收益高於炒幣。
假如幣價跌,短期看,沒有本金風險,挖礦每天到賬,安心囤幣,長期看,挖礦陸續收回成本,本金沒有風險,有足夠的底氣等待幣價上升賣出盈利。
不是說比特幣為什麼要挖礦
是因為挖礦能得到比特幣
這是一種獲取比特幣的最直接的一種手段
當然,你也可以直接買。
而挖礦源於比特幣的演算法,因為比特幣相當於2100萬個難題,需要「礦機」來計算解答。
答出來,你就會獲得相應的比特幣獎勵。
因為比特幣的價值升值,所以會有很多人趨之若鶩的去挖礦。
這是一種形式,要是為什麼獲取比特幣非要挖礦的話,就像在問
掙錢為什麼要上班?
當然,你不上班也可以掙錢,同理,你不挖礦也可以獲得比特幣,比方說直接買。
就這么簡單。
不是比特幣叫挖礦,只不過比特幣在大家的心目中已然成為了一個代名詞,而挖礦就是用一個最低成本來獲取數字貨幣,不需要買賣,來炒現貨,挖礦是最穩定的辦法。第一枚比特幣的發掘就是中本聰在09年以一台最基礎的電腦挖掘出來的,目前比特幣市值一枚已經高達二十五萬。挖礦就是要以最低價格來獲取數字加密貨幣來賺取收益。
1、挖礦指的是礦工投入計算算力競爭區塊打包權,因為獲得打包權的礦工會獲得區塊獎勵,也就是比特幣獎勵。這一形式和傳統意義上的「挖金礦」類似—-通過投入人力設備來開採金礦,所以稱這為挖礦。
2、挖礦的一個作用是維護整個比特幣網路的安全,挖礦需要投入算力到網路中,這能保證整個網路不會輕易遭受攻擊,保證網路的安全。
3、挖礦更重要的價值是通過競爭的方式來分發新的比特幣,保證比特幣按照白皮書所說的穩定的產生新的比特幣。
你是外行,要麼就是操盤手忽悠韭菜,比特幣挖什麼礦?噱頭,哪些是已經編好的程序,哪些礦機一個小盒子,堆放在一個屋子裡,一天耗電運行,挖操盤手設計的虛擬礦,按你投資礦機的錢,礦機的大小來決定你挖幣的多少,跟融資沒有區別,
F. 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
G. 如何沒有比特幣交易,區塊鏈是否還會產生
會產生,畢竟區塊連技術是未來10年不可或缺的,就算沒有比特幣也有其他幣,
H. 關於比特幣的謎題(完結)
你可曾想過: 為什麼礦機算力越大越好?(既然是解數學題那為什麼不是拼誰的演算法厲害啊喂!) 比特幣的數量總和為什麼是2100萬? 比特幣盜竊是怎麼回事? 我不玩比特幣,就真的與比特幣無關了嗎…… 🤔️
關於大眾不再感到陌生的比特幣,背後還有許多巧妙之處。本文介紹了比特幣的基本原理和主要原則,並結合對部分技術細節的剖析,來對上述的一些疑問作出解答。全文較長,約7000字,閱讀時間約為22分鍾,建議收藏後閱讀😁
文章可以分成以下幾個部分:
* 比特幣先驗知識
-- 密碼學相關
-- 比特幣重要概念
* 交易的生命周期
* 區塊鏈的構成
* 區塊鏈的生長
-- 「挖礦」的數學本質
-- 「礦工」的收益
* 比特幣的共識機制
-- 比特幣的去中心化共識
-- 「最長鏈優先」原則
* 比特幣安全性
比特幣作為第一個去中心化的數字貨幣,其設計中運用了不少的密碼學相關知識,主要包括非對稱加密技術、哈希函數等等。理解這些密碼學知識,能幫助我們更好地理解比特幣中的一些概念及規則。
以下是比特幣的一些定義及概念解說,了解過的小夥伴們可以直接跳過~
在比特幣這個創新的支付網路中,一個交易的生命周期大概可以分為幾個階段:創建、傳播和被驗證交織、被打包進區塊記錄到區塊鏈中、獲得更多的確認。圖1對這幾個階段做出了示意。
註:
1⃣️一個支付方A在發起一個比特幣交易時,會使用自己的私鑰對交易信息的哈希值進行簽名。因此A向全網廣播的內容除了交易信息之外,還有自己的公鑰信息、對消息的簽名。其他礦工只要利用A的公鑰即可對這個交易進行驗證,判斷是否真的由A創建。
2⃣️」交易傳播和交易驗證「交替意味著 各個節點基於一定的規則獨立驗證每個交易(共識基礎1) , 一個節點只有認為這個交易有效才會把它繼續傳播出去。
比特幣的底層技術是區塊鏈。區塊鏈系統是一種分布式共識系統,區塊鏈網路中所有的參與節點將就交易的狀態達成一致。
區塊鏈到底是什麼呢?你可以把它理解成一種分布式的交易的共享賬本,以區塊為基本單位鏈接在一起。交易信息將被整理並打包記錄在區塊中。每一個區塊,包含區塊頭,以及緊跟其後的交易列表。區塊頭包含3個區塊元數據集合:前序區塊哈希(嚴格來說是前序區塊頭哈希,因為只有區塊頭被用於哈希運算)、元數據集(包括難度、時間戳、隨機數等)、一個基於加密哈希來高效概括區塊中所有交易的默克爾樹(merkle tree)。了解這個結構,將幫助我們更好地理解挖礦的數學本質。
你可能聽說過「挖礦」這個詞,或者聽說眾人爭相購買挖礦機器來發家致富。但讓人疑惑的是:都說打包區塊的本質是解數學難題,但單憑那些看似簡陋的機器嗡嗡嗡瘋狂耗費電力,就能確保自己解出比特幣難題的勝率高了嗎?比特幣技術原理中,礦工們解決的數學題,難道是一個暴力破解題?
看了一圈,發現礦工們解決的題,還真有點暴力破解的意思,每次嘗試解題的過程幾乎都是茫茫然、去碰運氣的。拼的是誰足夠幸運,也拼誰算的足夠快;算的快了么,試錯次數多,自然勝算也就大了。
解題的背景是這樣的—— 挖礦節點通過基於工作量證明演算法(Proof-of-Work,POW)的證明運算,獨立將交易匯聚到新區塊中(共識基礎2)。 當礦工從網路中接收到一個新的區塊的時候,他發現自己已經在上一輪競爭中失敗了,所以立即開始新區塊的挖礦過程。為了創建一個新的區塊,他從內存池中選擇交易來填充區塊(加入區塊的第一筆交易是一個「鑄幣交易」,3.2節會給出詳相關細節)。接下來是填充欄位來創建區塊頭(包括前序區塊的區塊頭哈希、交易的默克爾樹(Merkel樹)、時間戳、難度目標值、隨機數),然後開始計算這個新區塊的工作量證明。
這個計算的過程簡單來說是對區塊頭部進行兩次sha256運算,得到一個RESULT,如果這個RESULT滿足特定要求,這個人才能算是算對了、才有權利去記賬。滿足要求的RESULT被稱為「工作量證明」(中本聰論文中稱為「proof of work」)。
關於這個計算過程,強調以下幾點:
第一,區塊頭部,包含了前序區塊頭部的哈希、本區塊交易信息的默克爾樹、時間戳、難度目標值、隨機數等信息(見圖2)。
第二,哈希運算具有「知道y,無法推出使得h(x)=y成立的x」、「即使輸入只改變一點點,輸出也會差很多」、「利用任意長度的數據作為輸入,生成一個固定長度的確定結果」的特性。所以大家也不知道什麼樣子的輸入才能產生自己想要的結果,礦工只能不斷嘗試。
第三,前面說到,區塊頭哈希值需要滿足一個特定要求才能成為工作量證明——小於某一閾值,或者說哈希值含有給定前綴。閾值的大小求和挖礦難度有關:挖礦難度是一個動態參數,其值越大,則閾值越小,說明哈希值符合要求的概率更小,礦工每次計算能成為工作量證明的概率越小。比特幣有一個自我調節過程——通過對現有的挖礦算力情況進行估算,來對應調整挖礦難度,可以保證區塊鏈每十分鍾出一個塊,達到控制發行速度的目的。(這個過程的基本思想類似產品筆試的數據估算題,根據「一個提供、一個需要「的思路去構造一個等式,然後求解等式一邊的一個因子;想了解挖礦難度系統和調整方式的同學可以進一步查閱~)
綜合以上三點來看,為了產生工作量證明,用戶基本上會通過調整隨機數來碰運氣(因為其他欄位基本不變)、進行多次運算直至符合要求,別無他法。如此一看,隨機數就具有「幸運數字」的意味了。因此,平均來講,誰計算的能力越強(嘗試的次數越多),就更有希望打包塊。
你可能會想,礦工這么心甘情願地消耗算力去維護區塊鏈,是受到怎樣的利益驅使呢?簡單來說,礦工的收益來源有二:1、計算出工作量證明,創造一個新區塊所獲得的新幣獎勵;2、記賬礦工費。
當礦工找到工作量證明、打包一個新區塊,並把區塊傳送給他的所有對等節點。 每一個挖礦節點都獨立驗證新區塊、把合格的新區塊整合進區塊鏈(共識基礎3) ,並把這個區塊繼續傳給自己的對等節點。結果是,只有經過驗證的區塊才會在網路當中廣泛傳播,保證了誠實礦工挖出的新區塊能被區塊鏈所接納。挖礦成功的個體節點或集體節點,可以同時獲得新幣獎勵和記賬礦工費。
新幣獎勵類似於貨幣的發行,其遵循規則是,第一個四年每一個新區塊產生50btc,第二個四年每一個新區塊產生25btc,第三個四年每個新區塊產生12.5btc,如此周期指數遞減。按照等比數列求和可知,到2140年,比特幣產生的總和約為21000000(所以說比特幣數量有限,天生緊縮)。屆時,不再隨區塊的產生增加新的比特幣,礦工不再擁有第一項收益。但現實中,由於挖礦成本高昂,挖礦成功的往往是是一個礦池的所有參與者。收益被分給礦池地址,礦池按照組內算力貢獻比例來分攤收益的。
記賬礦工費又稱交易費用,以交易輸入和交易輸出之間的差值的形式存在;一個區塊的總交易費用是對加入區塊的所有交易的(交易輸入-交易輸出)求和。一般來說,礦工費越高的交易,會越快被處理。而礦工費在這里起到兩個作用,一個是獎勵礦工,另一個是防止主鏈濫用(防止大家發送交易垃圾信息,因為提出交易是有一定代價的)。
礦工的收益以什麼樣的形式被驗證呢?這里不得不提到 「鑄幣交易」 。每個計算機節點在進行工作量證明計算之前加入區塊的第一筆交易,正是「鑄幣交易」。這個交易從無到有生成比特幣,其金額是新幣獎勵與記賬礦工費的總和,被支付到挖礦礦工自己的比特幣地址。如果礦工找到了一個工作量證明使區塊有效,他就贏得了這個獎勵,因為他構造的「鑄幣交易」生效了。
關於鑄幣交易和「新幣獎勵」,之前有一個讀者問我:一個礦工把自己挖到新區塊的消息公布出去,他的工作量證明 不會被別人剽竊 嗎?
個人認為,至少「鑄幣交易」能防止這件事情發生。讓我們來重申一下計算工作量證明的過程——一個礦工E在新區塊里加入了獎賞自己的「鑄幣交易」,並利用時間戳、前序區塊頭哈希、隨機數、本區塊交易的merkle樹等信息計算出一個符合要求的工作量證明。
在這個過程中,merkle樹啥樣子,取決於包括「鑄幣交易」在內的本區塊所有交易信息。因此可以把鑄幣交易視為工作量證明的間接變數之一。那麼,即使其他人拿到了E的工作量證明,這個工作量證明也是帶有E的印記的、與獎賞E的鑄幣交易相關的,別人根本無法納為己用。
你還可以通過設想以下的場景來加深對共識基礎2「挖礦節點通過基於工作量證明演算法的證明運算,獨立將交易匯聚到新區塊中」的理解。
為什麼一個挖出新區塊的礦工不悄悄使個心眼,在創建區塊之初就把鑄幣交易的金額設成1000BTC呢?原因在於每個節點都是基於相同的規則來獨立驗證區塊的。礦工必須創建完美的、符合公共規則的、正確依據工作量證明方法的區塊;而一個無效的鑄幣交易會導致整個區塊無效,並被其他節點拒絕,永遠無法成為賬本的一部分。可以預想,為了生成這個工作量證明,礦工們已經投入了巨大的算力和電量去挖礦,如果涉嫌欺詐而被否決,其為挖礦付出成本都付諸東流。
綜上所述,礦工不能冒領他人的獎勵,而拿到獎勵的礦工也必須只能拿取符合規定的數額。
比特幣的卓越之處,在於建立了一種去中心化的自發共識。這種共識是自發產生的,是成千上萬在網路中遵循著共同規則的節點,在非同步交互中形成的,不依賴於任何中央機構的調解和干涉。
關於比特幣的4項主要共識基礎,本文在講解對應細節時有提及,下面做一個整合:
這四個過程相輔相成、互相作用,形成了自發的全網共識,促使全網節點組合出可信、公開、權威的總賬。
你可能會想,比特幣是一個去中心化的、基於大眾信任的、依靠眾人力量運轉的一個東西。萬一有一部分礦工被壞人收買了咋辦呢?「51%攻擊」指的又是什麼?比特幣交易所要求的「6個確認」又是怎麼回事?
這里首先要提到比特幣的一個規則「 最長鏈優先 」。意思是, 比特幣的賬單鏈在出現分叉的時候,每個礦工會獨立選擇長(累積了最多工作量證明)的鏈條,在上面繼續挖礦工作(共識基礎4) 。
這個原則主要涉及到兩個問題:
當有兩個礦工A和B同時挖礦成功(算出符合要求的數學答案)時,他們分別把自己計算出來的工作量證明作為下一個塊的前序區塊哈希,生成一個塊銜接到原有的鏈後面,由此出現了兩個分支。
這個時候,這兩個成功的礦工廣播了自己打包成功的消息。由於區塊鏈是一個去中心化的數據結構,區塊消息到達不同節點的時間點不一致,故不同的節點可能擁有不完全一樣的區塊鏈視圖——有的礦工會先收到A的消息,有的則先收到B的消息。為了解決這個問題,收到消息的礦工們遵循一個原則:選擇並嘗試延長最長的鏈。
因此,這兩條分支會各自成長一小段時間,直到他們的長度出現差異(不可能長度一直相同),比如說其中一條鏈的礦工們,更快地打包在支鏈後面又加上一塊。按照「最長鏈優先「的規則,較短的鏈會被拋棄,原本工作在短鏈上的礦工們都回到長鏈上工作。
換言之,分叉只是不同節點暫時的不一致現象,當新區塊被加入到其中某一分支時,最終收斂將解決這一個問題。[讀者可以思考一下,為什麼區塊鏈被設置成每十分鍾挖出來一個塊:如果時間短了,是不是就增加了分支產生的次數?如果時間長了,是不是交易結算的效率就太低了?]
雙重支付的本質其實也是區塊鏈的分叉,但這種分叉卻是「非自然惡意蓄謀」的產物。
我們假設小敏是密謀雙重支付的一方,她把自己僅有的10BTC先給小強、交換一塊黃金,待這條交易信息P被打包進區塊Q後,她從小強手中拿到了黃金。這時,小敏使了個心眼,她想偷偷抹去、篡改區塊Q上的交易信息P,「白嫖」這塊黃金。為了實現這樣的目的,根據「最長鏈優先」法則,小敏必須剔除該筆交易P後、重新進行結算工作,集中算力來形成分叉,並讓分叉以更快的增速超過並取代Q所在的主鏈。如果小敏確實能讓分叉更長,分叉就成為了主鏈,其他節點也會轉向新主鏈上繼續工作。這樣,小強付出了黃金,卻沒有收到這10個比特幣,「賠了夫人又折兵」。
在這個過程中,小敏需要和原鏈進行「抗爭」,使新分叉成為最長的主鏈,這被稱為「共識攻擊」。「共識攻擊」本質上是對下一區塊的爭奪,攻擊方越「強壯」、哈希算力越大,就越容易成功。
「共識攻擊「成功的可能性有多大呢?
大多數比特幣交易所規定,一個交易傳送到區塊鏈上後需要6個「確認」來完成驗證該筆交易。這一規定的根據是,假設意圖造假的礦工擁有10%的算力(挖礦成功概率0.1),那麼造假礦工要構造另一條偽鏈實施長度超越,必須至少成功挖礦6次。那麼原鏈被取代、被拋棄的概率約為0.1的6次方,趨近於0。你可以把比特幣理解為地質構造層,表層可能因為季節變換而有所改變,甚至可能被風颳走,但一旦深入到地下,地質層就能更加穩定、不受干擾。
而假設有一群擁有了51%算力的礦工,他們控制了一半以上的全網哈希算力,可以故意在區塊鏈中製造分叉、進行雙重支付交易 。但事實是,全網哈希算力的大量增加,個體礦工幾乎不可能控制哪怕1%的哈希算力了(但礦池帶來的算力集中化控制,存在一定的風險)。更何況,如果真有擁有如此強大算力的組織,他完全可以憑借自己強大的算力投入到挖礦中去獲取開發新區塊所獲的的比特幣獎勵,誠實挖礦比雙花更有利可圖。
盡管實際上並未出現51%攻擊的問題,但不可否認的是,算力的集中違背了比特幣去中心化這一初衷,並成為其繼續發展的一大隱患。
一個系統的安全性,往往取決於系統安全的最薄弱環節,這也就是所謂的「木桶原理「。與區塊鏈系統相關的安全性問題包括但不限於以下幾項:
(1)在區塊鏈上被廣泛使用的公鑰系統基本上是安全的,但量子演算法在理論上能夠破解公鑰系統;因此,區塊鏈的演算法安全性是相對的。
(2)區塊鏈協議本身存在邏輯缺陷,例如受到黑客攻擊的區塊鏈系統共識機制。
(3)所有數字貨幣系統高度依賴私鑰,私鑰在存儲、使用方面的安全性成為區塊鏈系統安全性中至關緊要的一環。
盡管區塊鏈是去中心化系統,但目前絕大多數數字交易所卻是中心化的,存在著人為安全漏洞及技術安全漏洞。這些數字交易所擁有存放大量加密貨幣的私鑰,這對於黑客來說無疑是最矚目的目標;只要黑客偷走了這些私鑰,就可以獲取到這些加密貨幣。
作者會繼續閱讀相關資料、不斷完善本文,目標是完成一篇通俗易懂的比特幣科普文章。:)
**本文系網上信息與個人理解的結合,如有偏差及誤讀,歡迎讀者指出。也歡迎給出關於文章結構上的指導~
I. 沒有比特幣的區塊鏈能夠獨立運行嗎
我就幾句話解決兩者之間的關系,啰嗦的回答對小白用戶太不友好了:
1.區塊鏈是比特幣原創的核心技術。在比特幣被發明之前,世界上並不存在區塊鏈這個東西。
2.比特幣發明之後,很多人參考比特幣中的區塊鏈實現,使用類似的技術實現各種應用,這類技術統稱區塊鏈技術。包括幣易平台上各種精品幣的誕生,都是同樣的道理。
現在樓主看自己的提問,是不是瞬間清晰了。
J. 2021-12-01比特幣大筆交易需要6個區塊確認
很多剛剛接觸區塊鏈不久的小夥伴,可能看到「比特幣交易需要6個區塊確認」會很疑惑。為什麼需要6個區塊鏈確認呢?
為了避免雙花造成的損失,一般認為,等 6 個區塊確認後的比特幣交易基本上就不可篡改了。也就是說,如果小黑發給大白的 666BTC 這筆交易被打包在了第 N 個區塊(第1個區塊確認),大白等到第 N+5 個區塊出現的時候(第6個區塊確認),這筆交易基本上就不可篡改了。
一般來說,確認的區塊數越多,越安全,被 51% 攻擊後篡改、重組的可能性越低。至於我們經常看到的比特幣交易 6 個區塊確認後就安全了,這個數字 6 並不是硬性規定的,只是說有了 6 個區塊確認,被篡改的可能性非常低,因為黑客或者攻擊者目前很難掌握大量的比特幣算力來做惡。
比特幣平均每 10 分鍾打包一個區塊,6 個區塊確認平均下來需要 60 分鍾。那我們是不是每一筆比特幣交易,都要等上 60 多分鍾呢?
其實不是。對於小額交易,不需要等待 6 個區塊確認,因為比特幣發生 51% 算力攻擊的可能性很小。一般來說,小於 1000 美元的比特幣交易,1 個區塊確認即可;介於 1000~10000 美元的比特幣交易,一般的交易平台充值、提現會要求至少 3 個區塊確認;介於 10000~100000 美元的比特幣交易,基本需要 6 個區塊確認;大於 100000 美元的交易,確認的區塊數量越多越好。