2009年中本聰發明比特幣,並且設定了比特幣只有2100萬個,加入到比特幣網路中,通過參與到區塊的生產中,提供工作量證明(PoW),即可獲得比特幣網路的獎勵。這個過程即是挖礦。
「挖礦」的概念取自於我們現實經濟生活中已有的概念,黃金挖礦、白銀挖礦等,因為礦物是有價值的,所以才驅使人們去付出勞動力來挖。
比特幣挖礦還有一個重要的點是因為參與挖礦的礦工認可比特幣的價值,他們挖礦挖到的比特幣市場上有人願意花錢。所以,比特幣的挖礦是有意義的。
(1)扔給女巫一枚比特幣擴展閱讀
比特幣的貨幣特徵
1,去中心化
比特幣是第一種分布式的虛擬貨幣,整個網路由用戶構成,沒有中央銀行。去中心化是比特幣安全與自由的保證。
2,全世界流通
比特幣可以在任意一台接入互聯網的電腦上管理。不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣。
3,專屬所有權
操控比特幣需要私鑰,它可以被隔離保存在任何存儲介質。除了用戶自己之外無人可以獲取。
4,低交易費用
可以免費匯出比特幣,但最終對每筆交易將收取約1比特分的交易費以確保交易更快執行。
5,無隱藏成本
作為由A到B的支付手段,比特幣沒有繁瑣的額度與手續限制。知道對方比特幣地址就可以進行支付。
6,跨平台挖掘
用戶可以在眾多平台上發掘不同硬體的計算能力。
❷ 女巫攻擊與雙花攻擊
女巫攻擊 的名字源於1973年由小說《Sybil》改編的同名電影。電影中的女主人公Sybil Dorsett患有分離性身份認同障礙,本身兼有16種人格。
區塊鏈底層是 P2P網路 。網路中各個節點可以隨時加入或退出,為了維持網路的有效性,一般一份數據常常需要部署在若干個分布式節點上。如果一個惡意節點偽裝有多個身份就存在可獲得全部數據的幾率,下面我打個比方:
假設神龍造出了七顆龍珠,並且要將它們分別投放到地球的各個角落。於是神龍昭告天下,讓每個洲來一個人領取龍珠。此時,精通喬裝易容術的我分別假扮出七個不同地域的人來神龍這拿到了龍珠。本來神龍將龍珠放到世界不同的地方就是為了平衡各地方力量,但是由於我偽造了身份,成功地拿到了全部龍珠,控制了地球。
以上比喻就是女巫攻擊的本質體現。
雙花攻擊是大多區塊鏈加密數字貨幣都要面對的一種攻擊手段。顧名思義,雙花攻擊就是一筆有效的錢被先後花了兩次。
雙花攻擊的可行性完全是由於區塊鏈的共識機制導致。拿比特幣舉例,由於比特幣的POW共識機制屬於最終一致性共識,一筆交易從發布到全網所有節點都達成統一確認需要一定時間,而攻擊者就是利用這個時間間隙進行攻擊。舉個生活中的例子:
假如銀行A有兩個支行B和C。但是,這個銀行的賬目系統比較低效,支行B和C每過1個小時才會去主行A那裡同步賬本。我在主行A中存了100塊錢,過了一個小時後支行B和C同步了賬本,於是我在B和C中都可以查到我擁有100塊錢。之後,我通過支行B用我的賬戶買了100塊錢的好吃的,隨即又通過支行C用我的賬戶買了100塊錢好玩的。由於支行B和C之間做不到賬目的隨時同步,所以支行C在我去買好玩的時候依然認為我擁有100塊錢。
以上就是雙花攻擊,並且「雙花」永遠是一種 流通貨幣 所要解決的首要問題。
❸ 什麼叫區塊鏈硬分叉,詳解區塊鏈
什麼是比特幣區塊鏈的分叉分叉有區別為普通的升級,普通的升級在升級前後是沒有影響協議共識的,也一般不需要社區共識或算力共識的參與。而分叉根據對協議的修改情況分為軟分叉和硬分叉。
現有的定義:
【閃電定義】硬分叉是指比特幣區塊格式或交易格式(這就是廣泛流傳的「共識」(應該是部分協議共識))發生改變時,未升級的節點拒絕驗證已經升級的節點生產出的區塊,不過已經升級的節點可以驗證未升級節點生產出的區塊,然後大家各自延續自己認為正確的鏈,所以分成兩條鏈。
,commonlyoccurswhennon-upgradednodescan』.
【閃電定義】軟分叉是指比特幣交易的數據結構(這就是被廣泛流傳的「共識」(應該是部分協議共識))發生改變時,未升級的節點可以驗證已經升級的節點生產出的區塊,而且已經升級的節點也可以驗證未升級的節點生產出的區塊。
-』tknowabout.
我覺得不能說哪個定義正確還是錯誤,具體的定義可以根據已經較大社區共識的兩者的區別來自己總結,不需要權威來指定。
硬分叉:沒有向前兼容性,之前的版本將不可再用,需要強制升級。
軟分叉:有較好的兼容性,之前版本至少部分功能可用,可不升級。
硬分叉:在區塊鏈層面會有分叉的兩條鏈,一條原舊鏈,一條分叉新鏈。
軟分叉:在區塊鏈層面沒有分叉的鏈,只是組成鏈的區塊,有新區塊和舊區塊。
硬分叉:需要在某個時間點全部同意分叉升級,不同意的將會進入原舊鏈。
軟分叉:相當長的時間里,可允許不進行升級,繼續使用原版本生成舊區塊,與新區塊並存
區塊鏈為什麼有分叉?分叉會發生什麼情況?
????區塊鏈的分叉(fork)的形成原因可能有多種。
????當兩個結點幾乎在同一個時間挖到了礦並同時發布區塊,此時就出現臨時性的的分叉(statefork),
????本質上是對比特幣這個區塊鏈當前的狀態產生了意見分歧,
????當人為的發起分叉攻擊(forkingattack),也就是故意造成這類分叉(deliberatefork)還有一類分叉是,當比特幣的協議發生了改變的時候,軟體需要升級。而在分布式系統中不能保證所有節點同時升級軟體,假設存在部分節點未升級,會導致協議分叉(protocolfork)。對協議修改的內容的不同,又可以將分叉分為硬分叉(hardfork)和軟分叉(softfork);
????比特幣協議增加新協議,擴展新功能,未升級軟體的舊節點會不認可這些修改,會認為這些特性是非法的。這也就是對比特幣協議內容產生分歧,從而導致的分叉叫硬分叉。此時,就出現了新節點永遠沿著新節點產生的鏈挖礦,舊節點永遠沿著舊節點鏈挖礦,由於新節點算力足夠強,所以形成兩條永遠都在延伸且平行的鏈。只要這部分舊節點永遠不更新,則舊鏈將一直延續,可見這種分叉是持久性的。
出現hardfork後,便變成了兩條平行的鏈,也就造成了社區分裂。社區中有一部分人,會認為下面的鏈才是根正苗紅,各個鏈上的貨幣獨立。以太坊歷史上的一件大事就是硬分叉事件。以太坊稱為ETH,但目前看到的ETH已經不是最初的ETH了,以太坊在歷史上發生過硬分叉,另一個鏈稱為ETC。實際上,ETC才是以太坊設計原本的協議,而ETH是黑客攻擊ETH上一個智能合約THEDAO後,進行回滾的協議鏈(將黑客攻擊偷取的以太幣採用硬分叉方式回滾回到另一智能合約,然後退還給真正擁有者)。
????分叉之初,由於兩個鏈分叉造成了互相影響,產生了很多麻煩。比如:在ETH鏈上有一筆轉賬B-C,有人便在ETC鏈上回放,將ETC鏈上的貨幣頁轉給了C(C收到兩筆錢)。後來,對兩條鏈各添加了一個chainID,將兩個鏈區分開,才使得這兩條鏈真正分開。
如果對BTC協議添加限制,使得原本合法交易在新交易中不合法,便會形成軟分叉。
當大多數節點已經更新完畢之後,舊節點認可新節點挖出的區塊,因此發布自己挖出的區塊,但新節點不認可舊結點挖出的區塊,便沿著上一個新節點發布的區塊繼續挖礦,當新節點擁有大部分算力的時候,新鏈會越來越長,從而舊節點挖出並發布的區塊一直被拋棄,無法獲得出塊獎勵,最終倒逼舊節點升級軟體,實現所有節點認可新協議並進行升級。可見,只要系統中擁有半數以上算力節點更新軟體,此類分叉不會出現永久性分叉。比特幣腳本中的P2SH就是通過軟分叉方法加進去的。
?
????這一部分我並沒有查到太多的資料,但是在絕大多數共識協議之中我們都假設需要過半算力;
????在理論上,如果掌握了50%以上的算力,就擁有了獲得記賬權的絕對優勢,可以更快地生成區塊,也擁有了篡改區塊鏈數據的權利。因此,當具有過半的算力,也就是51%都是誠實可靠的,能保證整一個區塊鏈在合法有序的進行運行。
????但是為什麼選擇過半的算力,而不是過半的用戶?比特幣系統,任何人都可以加入,且創建賬戶及其簡單,只需要本地產生公私鑰對即可。只有轉賬(交易)時候,比特幣系統才能知道該賬戶的存在。這樣,黑客可以使用計算機專門生成大量公私鑰對,當其產生大量公私鑰對超過系統中一半數目,就可以獲得支配地位(女巫攻擊)。因此,比特幣系統中很巧妙的使用算力作為投票的依據。
到底啥是區塊鏈分叉?分叉,是區塊鏈世界中一個神奇的名詞。區塊鏈網路從此一分為二,不同共識的人們從此分道揚鑣。這究竟是一次動盪的分裂,還是一次新的共識的形成?
區塊鏈的分叉,可以說是區塊鏈網路中獨有的一種版本升級方式,就像我們生活中使用的互聯網軟體一樣,使用了一段時間以後,自然而然就需要進行優化升級,從而去解決一些用戶的使用問題。區塊鏈也是這樣,只不過它的升級比較特別,升級的時候會由參與的礦工共同來決定,甚至還能產生多種版本,不像互聯網一樣一家獨裁、沒有選擇的餘地。
它的原理是這樣的,由於區塊鏈是一個由數據塊組成的鏈式結構。所以,當他要升級的時候,實際上會從某一個數據塊開始,連到兩個不同的數據塊上,從而分成了兩條鏈;就好像樹枝一樣,大家共用同一個樹干,共享會分開前的數據,但是又有很多條樹枝屬於多條鏈,而這個過程就叫做分叉。
之前我們也說了,區塊鏈的升級是由礦工們一起來決定,既然參與的人多了,就會有不同的意見,當大家能達成共識的時候,分叉出來的兩條鏈相當於一個是老的版本,一個是新的版本,兩者兼容;老鏈上的礦工升級後,逐漸向新鏈過渡,最終大家升級完成只剩新鏈,這叫做軟分叉。具體來說軟分叉屬於系統內的短暫現象,並不會分叉出一個新的區塊鏈。區塊鏈系統升級,一部分節點並哪怕沒有及時升級,也仍舊可以工作。比特幣軟分叉之後不會像硬分叉一樣產生兩條鏈,而是還會保持在一條鏈上,軟分叉會進行一些升級,但是不會影響整個系統的穩定性和有效性,舊節點會兼容新節點,只是新節點不兼容舊節點而已,二者依然可以共存在一條鏈上。
當礦工們不能達成共識的時候,大家雖然共用之前的數據,但是形成了兩條新的鏈,就好比物種進化一樣,一部分猴子進化成了人類,另一部分進化成了猩猩,兩種物種都發生了改變,互不兼容,這叫做硬分叉。也就是說區塊鏈發生永久性分歧,在新共識規則發布後,部分沒有升級的節點無法驗證已經升級的節點生產的區塊,通常硬分叉就會發生。代碼出現一個硬分叉,會改變演算法的難度級別。
實質意義上的分叉之所以產生,是因為項目在動態發展過程中原社區內部理念產生了不可調和的分歧。區塊鏈背後的社區作為去中心化組織,主張非暴力自由人的自由聯合,這意味著在向未知的將來邁進的過程中,當遇到的新問題超出了原有既定游戲規則之時,分歧一旦產生將很難達成一致,這是由區塊鏈基因里去中心化的屬性決定的。
區塊鏈技術的發展還處於很初期的狀態,分叉對於區塊鏈來說,就相當於一個技術迭代的過程,隨著人們不斷發現區塊鏈技術現有的限制,只有不斷升級和擴展這項技術,才能讓區塊鏈技術走向成熟。當然,這種分叉跟區塊鏈不可篡改的特性正在背道而馳,但沒有天生完美的技術,區塊鏈也不例外,技術的發展如果在發生錯誤時都不可控,那這種技術就無法做到普世,人們對它的信任度也無法提升。且分叉的結果是由社區成員投票決定的,某種程度上來說依舊遵守著去中心化的原則。
人們對區塊鏈分叉各執己見,但在區塊鏈發展的歷史進程里,分叉無疑讓區塊鏈變得更有故事性和可能性了。總的來說,分叉這種升級方式雖然麻煩很多。但是,他卻給了每個人更多選擇的權利。也許,區塊鏈就在這樣的求同存異之中孕更多的可能性。
區塊鏈中硬分叉和軟分叉的區別是什麼?硬分叉是由於區塊鏈不可接受的永久性分歧造成的,軟分叉則是區塊鏈的可接受分歧造成的。硬分叉的出現意味著出現一條無法接受新共識機制的區塊鏈,這條區塊鏈相當於系統的舊版本,而接受了新共識機制的則是新版本,兩者雖然不版本不同,但是還是相互聯系。而軟分叉造成的區塊節點是可以和新共識機制兼容的,不會另外形成一條區塊鏈。硬分叉和軟分叉是幣圈中比較常見的事情。區塊鏈除了炒幣,其實可以應用的地方還有很多,包括醫療、保險、教育、食品等。我認識一家專門做區塊鏈開發的公司,煊凌科技。他們在行業內的評價還不錯。
區塊鏈中的軟分叉和硬分叉是什麼?根據分叉後的區塊鏈是否能兼容舊區塊鏈,分叉又分為「硬分叉」和「軟分叉」。軟分叉和硬分叉是什麼?
硬分叉,是指當比特幣代碼發生改變後,舊節點拒絕接受由新節點創造的區塊。不符合原規則的區塊將被忽略,礦工會按照原規則,在他們最後驗證的區塊之後創建新的區塊。
而軟分叉是指舊的節點並不會意識到比特幣代碼發生改變,並繼續接受由新節點創造的區塊。礦工們可能會在他們完全沒有理解,或者驗證過的區塊上進行工作。
軟分叉和硬分叉都"向後兼容",這樣才能保證新節點可以從頭驗證區塊鏈。向後兼容是指新軟體接受由舊軟體所產生的數據或者代碼,比如說Windows10可以運行WindowsXP的應用。而軟分叉還可以"向前兼容"。向前兼容是指舊軟體可以接受由新軟體所產生的數據以及代碼,比如你用Word2013保存的文檔,假如仍然可以用Word2011打開,就是一種「向前兼容」。