比特幣如何防止雙支付
比特幣白皮書《比特幣:一個點對點電子現金系統》中,中本聰詳細地解釋了他是如何設計這個系統的。在其中,他確立了此後所有區塊鏈系統的主要設計原則。
一個真正的點對點電子現金應該允許從發起方直接在線支付給對方,而不需要通過第三方的金融機構。
現有的數字簽名技術雖然提供了部分解決方案,但如果還需要經過一個可信的第三方機構來防止(電子現金的)「雙重支付」,那就喪失了(電子現金帶來的)主要好處。
針對電子現金會出現的「雙重支付」問題,我們用點對點的網路技術提供了一個解決方案。
該網路給交易記錄打上時間戳(timestamp),對交易記錄進行哈希散列處理後,將之並入一個不斷增長的鏈條中,這個鏈條由哈希散列過的工作量證明(hash-based proof-of-work)組成,如果不重做工作量證明,以此形成的記錄無法被改變。
最長的鏈條不僅僅是作為被觀察到的事件序列的證明,並且證明它是由最大的CPU處理能力池產生的。只要掌控多數CPU處理能力的計算機節點不(與攻擊者)聯合起來攻擊網路本身,它們將生成最長的鏈條,把攻擊者甩在後面。
這個網路本身僅需要最簡單的結構。信息盡最大努力在全網廣播即可。節點可以隨時離開和重新加入網路,只需(在重新加入時)將最長的工作量證明鏈條作為在該節點離線期間發生的交易的證明即可。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
2. 挖礦魚池停止服務了嗎
魚池 F2Pool 宣布將於 5 月 19 日下線 GRIN 礦池,停止 GRIN 挖礦服務。
拓展資料:
1、比特幣挖礦機就是用於賺取比特幣的計算機。這類計算機一般有專業的挖礦晶元,多採用安裝大量顯卡的方式工作,耗電量較大。計算機下載挖礦軟體然後運行特定演算法,與遠方伺服器通訊後可得到相應比特幣,是獲取比特幣的方式之一
2、比特幣礦工通過解決具有一定工作量的工作量證明機制問題,來管理比特幣網路—確認交易並且防止雙重支付。由於散列運算是不可逆的,查找到匹配要求的隨機調整數非常困難,需要一個可以預計總次數的不斷試錯過程。這時,工作量證明機制就發揮作用了。當一個節點找到了匹配要求的解,那麼它就可以向全網廣播自己的結果。其他節點就可以接收這個新解出來的數據塊,並檢驗其是否匹配規則。如果其他節點通過計算散列值發現確實滿足要求(比特幣要求的運算目標),那麼該數據塊有效,其他的節點就會接受該數據塊
3、挖礦是增加比特幣貨幣供應的一個過程。挖礦同時還保護著比特幣系統的安全,防止欺詐交易,避免「雙重支付」,「雙重支付」是指多次花費同一筆比特幣。礦工們通過為比特幣網路提供演算法來換取獲得比特幣獎勵的機會。 礦工們驗證每筆新的交易並把它們記錄在總帳簿上。每10分鍾就會有一個新的區塊被「挖掘」出來,每個區塊里包含著從上一個區塊產生到目前這段時間內發生的所有交易,這些交易被依次添加到區塊鏈中。我們把包含在區塊內且被添加到區塊鏈上的交易稱為「確認」交易,交易經過「確認」之後,新的擁有者才能夠花費他在交易中得到的比特幣
4、中本聰把通過消耗CPU的電力和時間來產生比特幣,比喻成金礦消耗資源將黃金注入經濟。比特幣的挖礦與節點軟體主要是透過點對點網路、數字簽名、互動式證明系統來進行發起零知識證明與驗證交易。每一個網路節點向網路進行廣播交易,這些廣播出來的交易在經過礦工(在網路上的計算機)驗證後,礦工可使用自己的工作證明結果來表達確認,確認後的交易會被打包到數據塊中,數據塊會串起來形成連續的數據塊鏈。每一個比特幣的節點都會收集所有尚未確認的交易,並將其歸集到一個數據塊中,礦工節點會附加一個隨機調整數,並計算前一個數據塊的SHA256散列運算值。挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的散列值低於某個特定的目標
3. 雙花理論是什麼概念
在學習區塊鏈的過程中,大家一定對會聽到「雙花」這個詞,意思就是雙重支付,或者更直白點就是一筆資金被花費了兩次。這篇文章我們來簡單的分析一下為什麼會有雙花,比特幣是如何避免雙花的。
在傳統的交易中,因為有銀行這樣的中心化機構,所以是不會存在雙花問題的:每一筆支付都將從你的銀行賬戶中扣除相應的資金,所有的明細在銀行都有記錄。但是在比特幣中,因為沒有賬戶的概念,而是引入了UTXO即未花費交易輸出。因為沒有銀行這樣的中心化機構的保證,當發生一筆交易時就可能存在著雙花的危險:比方說A有一個比特幣,然後他同時構造兩筆交易T1和T2來花費這1個比特幣,其中一個給了B,從B那裡買件衣服,一個給了C,從C那裡買雙鞋。如果不引入某種機制來避免這種情況,那作為數字貨幣的比特幣將沒有任何存在的意義。接下來就來分析一下比特幣是如何做到防止這種「雙花」攻擊的。
(1) 正常情況
首先我們來看看正常情況,說白了就是絕大多數時候,區塊鏈的共識機制就能將雙花消滅在萌芽狀態。我們還是以上面提到的例子來做說明:
假設A構造了兩筆交易T1和T2,將自己價值1btc的UTXO分別轉給了B和C,妄圖同時從B和C那裡獲得好處。然後A幾乎在同一時間將構造好的這兩筆交易廣播至網路。
假設網路中的礦工節點先收到了交易T1,發現這筆交易的資金來源確實沒有被花費過,於是將T1加入到自己的內存交易池中等待打包進區塊。
大部分情況下,這個礦工節點會在不久後又收到交易T2,此時因為T2所指向的交易輸入與已經加入交易池的T1相同,於是礦工節點會拒絕處理該交易。網路中其他的礦工節點都類似,因此A試圖雙花的嘗試胎死腹中。
(2) 分叉情況
上面說的是正常的情況,但是也有非正常的情況要考慮:假設礦工節點M1和M2幾乎在同一時間挖出了區塊,並且很不幸M1挖到區塊時只收到了交易T1,而M2挖到的區塊時只收到了交易T2,這樣交易T1和T2被分別打包進兩個區塊。因為這兩個區塊是差不多同一時間被挖出,於是造成了區塊鏈的分叉:
網路中某些節點(可能是離M1近的)先收到了M1打包的區塊BLK1,於是用該區塊延長自己的區塊鏈,而另外一些節點(鄰近M2的)則先收到M2打包的區塊BLK2,用該區塊延長自己的區塊鏈,於是整個區塊鏈網路
4. 挖礦掙錢是什麼原理
比特幣系統由用戶(用戶通過密鑰控制錢包)、交易(交易都會被廣播到整個比特幣網路)和礦工(通過競爭計算生成在每個節點達成共識的區塊鏈,區塊鏈是一個分布式的公共權威賬簿,包含了比特幣網路發生的所有的交易)組成。
比特幣礦工通過解決具有一定工作量的工作量證明機制問題,來管理比特幣網路—確認交易並且防止雙重支付。由於散列運算是不可逆的,查找到匹配要求的隨機調整數非常困難,需要一個可以預計總次數的不斷試錯過程。這時,工作量證明機制就發揮作用了。
當一個節點找到了匹配要求的解,那麼它就可以向全網廣播自己的結果。其他節點就可以接收這個新解出來的數據塊,並檢驗其是否匹配規則。如果其他節點通過計算散列值發現確實滿足要求(比特幣要求的運算目標),那麼該數據塊有效,其他的節點就會接受該數據塊。
中本聰把通過消耗CPU的電力和時間來產生比特幣,比喻成金礦消耗資源將黃金注入經濟。比特幣的挖礦與節點軟體主要是透過點對點網路、數字簽名、互動式證明系統來進行發起零知識證明與驗證交易。
每一個網路節點向網路進行廣播交易,這些廣播出來的交易在經過礦工(在網路上的計算機)驗證後,礦工可使用自己的工作證明結果來表達確認,確認後的交易會被打包到數據塊中,數據塊會串起來形成連續的數據塊鏈。
每一個比特幣的節點都會收集所有尚未確認的交易,並將其歸集到一個數據塊中,礦工節點會附加一個隨機調整數,並計算前一個數據塊的SHA256散列運算值。挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的散列值低於某個特定的目標。
挖礦難度
為了使得資料塊產生的速度維持在大約每十分鍾一個,產生新資料塊的難度會定期調整。
如果資料塊產生的速度加快了,那麼就提高挖礦難度;如果資料塊產生速度變慢了,那麼就降低難度。比特幣系統在每隔2016個資料塊被產出後(約兩周的時間),會以最近這段時間的資料塊產生速度,自動重新計算接下來的2016個資料塊之挖礦難度。
而難度基本上就決定了一個有效的資料塊標頭(英語:Block Header)的SHA-256散列值應小於一定值,也就是說該散列值必須要恰好落在目標區間之內才算有效,當目標區間越小就意味著命中幾率越低。換句話說就是挖礦的難度越高。
由於ASIC計算設備的爆炸式加入,目前挖礦難度呈現幾何級數的上升,目前年均難度增長約為3%,讓普通個人挖礦者的挖礦工作變得異常困難。
以上內容參考網路-比特幣挖礦機
5. 區塊鏈鼻祖比特幣之8:分叉帶來的雙花支付、51%攻擊與解決辦法
分叉
前面講到了比特幣通過區塊鏈+工作量證明的獨特設計來解決了時間順序,但是不能保證在同一時刻有兩個節點算出了正確的解,雖然這種可能性很低很低。這就帶來了區塊的分叉。
雖然說幾乎同時有兩個節點計算出這一數學問題的可能性微乎其微,但是仍然存在這樣的可能性,所以分叉就以為著同一個區塊的後面可能會跟上兩個不同的區塊。
規則的打破一直要到下一個區塊被人解開。則會立即轉向最長的區塊,而那些短的區塊則會被拋棄。數學問題使得區塊很難被同時拆解。要連續發生多次更是困難。最終區塊鏈會穩定下來。也就是說所有人對最後幾個區塊順序達成共識。分叉意味著,譬如,若你的交易出現在較短的支鏈,它就會失去進入區塊鏈的位置。一般而言,只代表他會回到未確認交易池。然後被納入到下一個區塊。
比特幣網路如何解決分叉帶來的雙花支付
可惜,交易失去區塊位置的潛在可能,給了本來定序系統防範的重復支付攻擊機會。考慮下面的一個攻擊者A,其首先用自己的比特幣交換B節點的貨物,其立即又支付給自己。然後其通過努力的製造更長的鏈條來讓自己的支付替代掉B節點的支付,從而實現了雙重支付,B節點既得不到錢,還失去了貨物。
這時交易會退回到未確認池中,因為A節點已經利用參照同樣的input交易取而代之。節點就會認為Bob的交易無效。因為已使用掉。
你可能會猜測A節點會預先的計算出一支區塊鏈,然後抓住時機發布到網路。但是每個區塊的數學謎題阻擋了這個可能性。如前面所訴,解開區塊是猜測出一個隨機數的過程。一旦得出答案,解出的哈希值就會成為指紋一樣的區塊識別。只要區塊內容有一丁點變化,下一個區塊的參考值就會完全不同。此機制的結果就是無法在區塊鏈中置換區塊。在得到前一個區塊之前,下位區塊無法被解開。前一個區塊的指紋也是雜湊函數的引數之一。
同時,該工作量證明機制還解決了在集體投票表決時,誰是大多數的問題。如果決定大多數的方式是基於IP地址的,一IP地址一票,那麼如果有人擁有分配大量IP地址的權力,則該機制就被破壞了。而工作量證明機制的本質則是一CPU一票。「大多數」的決定表達為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數的CPU為誠實的節點控制,那麼誠實的鏈條將以最快的速度延長,並超越其他的競爭鏈條。如果想要對業已出現的區塊進行修改,攻擊者必須重新完成該區塊的工作量外加該區塊之後所有區塊的工作量,並最終趕上和超越誠實節點的工作量。我們將證明,設想一個較慢的攻擊者試圖趕上隨後的區塊,那麼其成功概率將呈指數化遞減。另一個問題是,硬體的運算速度在高速增長,而節點參與網路的程度則會有所起伏。為了解決這個問題,工作量證明的難度(the proof-of-work difficulty)將採用移動平均目標的方法來確定,即令難度指向令每小時生成區塊的速度為某一個預定的平均數。如果區塊生成的速度過快,那麼難度就會提高。
如果有一台超級電腦,能夠在區塊解題中獲勝?
即便是一台超級電腦,或者時幾百上千台電腦也很難贏得解一個區塊的勝利,因為競爭對手不是任一台電腦,而是整個比特幣網路。你可以用買彩票來比擬。操作千百台電腦,如同買了千百張彩票一樣。
51%攻擊是指的什麼
根據前面的例子,我們知道,要想有50%的概率領先其他人解題得到勝利,就需要掌握全網50%以上的算力。要連續領先他人解出區塊,掌握的運算能力還需要高得多。所以區塊鏈中的交易是受到數學競賽所保護。惡意用戶必須和整個網路較量。區塊連接建立的結果,使得在支鏈越前方的交易越安全。惡意的用戶必須在更長的時間贏過全網路,來達成重復支付,替換前面的區塊鏈。所以,系統只有支端末尾易受到重復支付攻擊。這也是為什麼系統建議多等幾個區塊,才能確認收款成功。
個人博客:https://dreamerjonson.com/
6. 比特幣挖礦是什麼意義在哪
"比特幣挖礦"的概念取自於現實經濟生活中已有的概念,黃金挖礦、白銀挖礦等,因為礦物是有價值的,所以才驅使人們去付出勞動力來挖。
意義:對比特幣網路而言,比特幣挖礦不僅是發幣還是維持比特幣系統運行的基礎保障;每一次比特幣挖礦行為背後,都是在打造一台新型"印鈔機"。
產生原理
從比特幣的本質說起,比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到有限個解中的一組。而每一個特解都能解開方程並且是唯一的。
以鈔票來比喻的話,比特幣就是鈔票的冠字型大小碼,知道了某張鈔票上的冠字型大小碼,就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬個。
7. 入門科普:什麼是雙花
想要了解區塊鏈,首先要熟悉區塊鏈相關的各種名詞。就比如我們今天講到的「雙花」,可能有人就要問,雙花是什麼花?哈哈哈,開玩笑,讓我們來學習一下什麼是「雙花」吧。
01
「雙花」是什麼?
雙重支付又名「雙花」,也就是雙重花費的意思。 舉個例子:如果我錢包裡面有100元,我可以去購買等值的物品。當我去商店後,發現台燈和桌子都是100元,那我只能買其中一樣東西。而我們所說的雙花問題,正好與之相反,同樣的100元,我可以購買兩樣東西。
在加密貨幣系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產被重復使用的情況 ,這也稱之為雙花,又叫雙重消費攻擊。
02
雙花問題是如何發生的?
在區塊鏈系統中,雙花問題會在以下情況下出現:
1、由於共識機制導致區塊確認時間長,用一個數字貨幣去進行一次交易,可以在這筆交易還未被確認完成前,進行第二筆交易。
2、 控制算力來實現雙花 ,第一次交易被驗證通過並被記錄入區塊後,在該網路中有更高的算力驗證出新的更長鏈條,在該鏈條中這筆錢被第二次花費,由於第二次花費的區塊鏈條更長使第一次交易區塊所在鏈條為無效鏈條,這樣一來,第一次交易所在的區塊鏈被區塊鏈網路放棄,第一次花費的錢就又回到自己賬戶了,就導致了雙花問題。
03
比特幣如何避免雙花問題?
為了解決雙花問題,我們日常的數字資產使用依賴於第三方信任機構進行。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統, 比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。
1、首先每筆交易都要先確認對應比特幣之前的情況,要檢查它是否存在於用戶的UTXO中。如果不在,那麼該交易會被系統拒絕。
2、如果用戶用同一筆UTXO付給兩個人,系統中的節點只確認先接收到的那一筆。
3、當兩筆時間上很接近的交易被不同節點確認,區塊鏈將發生分叉。剩餘節點選擇在他們認為的最長鏈上構建新的區塊。
4、當其中一筆交易被6個節點確認後,它將成為系統最長鏈,可以認為這筆交易獲得了最終的確認。
8. 挖礦代表的是什麼含義
挖礦是增加比特幣貨幣供應的一個過程。挖礦同時還保護著比特幣系統的安全,防止欺詐交易,避免「雙重支付」,「雙重支付」是指多次花費同一筆比特幣。礦工們通過為比特幣網路提供演算法來換取獲得比特幣獎勵的機會。 礦工們驗證每筆新的交易並把它們記錄在總帳簿上。
之前用普通電腦就可以挖礦了,現在基本是不可能的,由於比特幣的運算機制是越來越難,家用的普通電腦的性能有限,解密不了比特幣的難度,現在就有了市場上的新機器,專業挖幣的機器,稱為礦機。
(8)比特幣如何防止雙支付擴展閱讀
挖礦注意事項:
想要投資虛擬幣挖礦,除了需要購買礦機以外,還需要適合的場地還有專人看管和維護,當然合適的電價也是必不可少的。但是,一般的投資者,從購買礦機開始就會遇到一系列難以解決的問題。
託管,簡單理解來說,就是把買來的礦機放在託管企業的專業礦場里,然後由託管企業給你提供礦池,提供專人維護,當然這些託管企業所能拿到的電價都是非常低的,也不用擔心這些企業的合法性,肯定都是符合國家標準的企業。