『壹』 閃電比特幣是什麼
閃電比特幣(Lightning Bitcoin,LBTC)是一種點對點的電子現金系統,是基於比特幣的創新實驗,它使用基於UTXO的DPoS共識機制,將投票權和記帳權分開,使代幣不再被任一方綁架,是一種高速度、低手續費、高擴展性的全球價值互聯網傳輸協議。目前,LBTC已經上線包括ZB.com 、Biki.com、MXC.com等數十家知名交易所。
LBTC基礎資料:
分叉時間:北京時間2017年12月18日
分叉塊高:499999
共識機制:基於UTXO的DPoS
出塊間隔:3秒,可動態調整
設置不可逆轉塊
塊體積:2MB,可動態調整
不支持隔離驗證
添加重放保護
支持CPU挖礦
總量:7,465,926 LBTC
LBTC的優勢
去中心化—— 共識機制採用DPoS,將投票權和記帳權分開,使代幣不再被任一方綁架,用戶不用專業礦機也能夠參與,達到真正的去中心化
快如閃電—— 區塊間隔3秒,區塊大小2MB,徹底解決比特幣被人廣為詬病的網路擁堵問題,增大實用價值
分配公平—— 原來持有比特幣的都能一比一分到LBTC,剩下的以挖礦方式收斂性釋出,出塊獎勵與比特幣一樣四年減半一次
費用低廉—— LBTC挖礦的進入門檻低,無需專業礦機;交易速度也快,所以能夠直接影響交易成本,使手續費保持合理低廉
社區自治—— 鏈上治理系統將所有用戶整合進決策過程中,任何人都可以成為生態的一部份
可擴展性—— DPoS機制以減少節點數量為LBTC帶來更高的可擴展性
安全可靠—— 整體架構建立在比特幣運行了9年的基礎之上
『貳』 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
『叄』 比特幣分叉往事補遺
互聯網是有記憶的。
最近比特幣屢創新高,華爾街機構紛紛入場囤幣,連馬斯克都忍不住公開喊單,得到了主流媒體和金融機構的認可,大家都對比特幣系統的安全性沒有任何質疑。
不過,很多人可能想像不到,就在三年前,比特幣還面臨過誕生以來最大的一次危機——差點被 BCH 集團奪權篡位,甚至連「比特幣」這個名字都差點不保。
比特幣分叉都是上一個牛市的陳年舊事了,本來不想多說,但是最近又有一些無聊的人,抹黑中傷幣信,我們不說話,讓一些不明真相的朋友還真以為幣信十惡不赦,成了反派的代名詞,還是簡單說一說當年的幣信為保護比特幣網路做的一些事情吧。
這些事情都已經過去好多年,這些年來一直沒對外提,也不求什麼名利,只求大家知曉真相,去偽存真,同時也在茶餘飯後,多一些談資。
BCH 分叉黨為什麼仇視幣信?
很多人覺得當年「比特幣分叉」這件事並沒什麼大不了的,畢竟這種現象現在在加密數字貨幣社區很常見,可能一個程序員用不了幾天就能成功將一個幣種分叉。
但是在當年,分叉是一件非常嚴重的事情,牽扯到方方面面的人和事,牽扯到諸多信仰和利益,簡直和「佛道之爭」不遑多讓,簡直已經達到你死我活,兵戎相見的地步。
這並不誇張說辭,而是事實。
現實中很多關系非常好的朋友,合作夥伴,因為比特幣分叉這件事而反目成仇,老死不相往來。
很多人無法理解,為什麼 BCH 分叉集團對比特幣支持者、對幣信恨之入骨?天天懟天懟地各種造謠?而且有時候為了讓自己的謠言看上去邏輯完備,往往不惜花大量時間去搜集各種資料,然後移花接木,張冠李戴,讓眾多不明群眾看了覺得「資料詳實」,大呼過癮。
原因就在於,幣信斷了 BCH 分叉集團的財路。
正所謂「斷人財路,如殺人父母」,幣信在瓦解 BCH 集團分叉s行動的過程中,做了許多工作,甚至在關鍵時期守護了比特幣兩周時間,成功瓦解了BCH(之前叫 BCC ) 篡權奪位的陰謀。
不得不說,BCH 集團真的是知行合一,他們也有信仰,他們真的相信 BCH 肯定會成功,能夠打敗比特幣,所以他們把手頭的比特幣基本上都換成了 BCH ,要是被他們篡權成功,其回報之豐厚絕對難以想像。
結果這一切都被幣信在關鍵時刻給毀了,你說他們恨不恨?
幣信和比特大陸的恩怨
有關比特幣分叉的文章有很多,我這里就不再多說,感興趣的朋友看一下虎撲的文章《比特幣分叉往事》或者搜索其他文章了解。
這里主要說說在分叉大戰整個過程中,幣信扮演了一個什麼樣的角色,因為這個事情遭受了怎樣的損失。
可能很多朋友在 2018 年的時候,看到過比特大陸因專利的事情狀告幣信礦業公司的新聞,其中的被告還有深圳比特微(神馬礦機)和新特能源股份有限公司(礦場方)。
當時很多人看到這個新聞其實挺震驚的,因為幣信星空和比特大陸吳忌寒兩人的關系其實一向都非常好,私底下經常一起約飯。
他們怎麼突然就對簿公堂了?到底發生了什麼事情?
在那個官司中,涉及到的專利叫做串聯供電技術。
說起串聯供電技術,就不得不提到一個技術宅男——瓦西里。
瓦西里早年是俄羅斯的 Bitfury 公司(2013 年就已經開始做比特幣礦機公司)的工程師。從 Bitfury 出來之後,2014 年,瓦西里被一個名叫 Yuri 的俄羅斯人忽悠到了中國,因為 Yuri 跟他說他聯繫到了中國的烤貓,能夠拿到他們的晶元做礦機,可以發大財。
那個時候,烤貓公司剛剛宣布,他們不再自己做礦機,而是直接轉型成為晶元提供商,歡迎大家采購晶元。
Yuri 是個典型的商人,由於當時烤貓最新晶元礦機方案不成熟,在嘗試幾次做礦機方案不成功之後,他轉而向烤貓兜售他的「串聯供電」技術。
這項技術早就存在,但是瓦西里受其啟發,第一次成果將其用在礦機主板上。
有了這項技術,礦機可以不用昂貴的電源控制晶元,直接對挖礦晶元供電,這樣不但可以節省大量成本,還可以不受電源晶元貨源的制約。(當時比特大陸將市場上的電源晶元一掃而空,不但沒貨還抬升了價格)
這項技術說起來簡單,實現也簡單,但研發卻非常困難,因為沒有電源晶元控制,電流無法穩定輸出,很容易造成電流均衡而燒毀晶元。
烤貓對這項技術非常感興趣,於是和 Yuri 談了很多次,但是 Yuri 的條件太苛刻,後來烤貓得知這項技術的實際擁有者並不是 Yuri 而是瓦西里,於是直接找到瓦西里,購買了他的技術,並且還將瓦西里招到了公司當硬體開發工程師。
後來,楊作興從 RockMiner 離開,加入了烤貓礦機( ASICMiner )研發團隊,和瓦西里成為同事,一起研發礦機和晶元。
2015 年,烤貓突然人間蒸發,烤貓公司也原地解散,所有技術封存。後來道楊作興在比特大陸兼職了一段時間,順便將串聯電源技術帶到了比特大陸。
到了 2016 年 ,楊作興有了創業的想法,首先是找吳忌寒聊,得到了吳忌寒的單方面的支持,然後吳讓他去找詹聊一下,卻遭到了詹克團的當面否決,甚至詹還當面將楊作興的商業計劃書直接用碎紙機碎成碎片。
於是,楊作興創辦了神馬礦機,從此和比特大陸打擂台。
自然,神馬礦機也順理成章地用上了串聯電源技術。
值得說一下的是,楊作興創業之前曾多次找到星空聊創業的事情,在詹之後,楊再次找到星空,確認楊下決心要做礦機晶元後,星空聯合其他幾位朋友一起投了,成為了神馬礦機的大股東之一。
星空投資神馬礦機的邏輯很簡單——由於烤貓失蹤,烤貓礦機徹底退出 歷史 舞台,當時比特大陸的螞蟻礦機一家獨大,基本處於壟斷地位,這對比特幣網路並不好,很容易出大問題。(事實證明這個判斷是非常正確的)
當時一起投資神馬礦機的,還有魚池的神魚和王純,大家的想法都非常一致,不能讓比特大陸再這樣搞下去。
要知道,為了能夠成功分叉比特幣,比特大陸很早就開始布局,他們在那段時間,將大量礦機優先賣給支持分叉的人,支持比特幣的人反而很難拿到貨。
並且,大區塊的支持者甚至只需要支付 10% 的貨款,這相當於是給他們做了一個五倍杠桿,只需要支付一份算力的錢,就能獲得五份算力。
很多人因此而發家致富,因此也對比特大陸更加忠心耿耿,在支持分叉的岐途上一路走到黑。
幸運地是,神馬礦機研發順利,並且迅速成長成為能夠和比特大陸一較高下的礦機廠商。
幣信礦業當時是比特大陸的超級客戶,為了支持神馬礦機的發展,也采購了大量的神馬礦機。
在分叉大戰期間,當 BCH 集團意識到是幣信在暗中保護比特幣網路的時候,他們採用了圍魏救趙的方式,將神馬公司和幣信礦業公司,以侵犯專利為由,一起告上了法庭。
雖然最終這個官司比特大陸輸了,但是他們卻達到了預期目的——礦場場地方為了避免風險,要求幣信的礦機限時從礦場中搬離,幣信算力因此暫時消失,這場較量才告一段落。
經此一戰,幣信損失慘重。
一方面,幣信用自有算力去阻止 BCH 算力暴擊(後文有解釋),每天就有將近 100 個比特幣的損失(持續了一個難度周期,即 14 日)。
另外一方面,因為礦場被迫搬離,這其中又耽誤了很長時間無法挖礦,中間也有不小的損耗,幣信也遭受了巨大虧損。
不過,這個時候,BCH 集團針對比特幣精心策劃地採用的緊急難度調整演算法(EDA)已經失去了最佳作用時間,他們原本想用這個方式來偷襲比特幣網路的陰謀也徹底破產。
如果當時沒有幣信算力的狙擊,BCH 真的有可能已經成功篡位,不但算力超過比特幣,可能連比特幣這個名字都被其搶走,比特幣可能成長到今天的規模和地位。
因為這件事情,星空和吳忌寒這兩個原來的好兄弟,也因此反目成仇,斷了往來。幣信從此也成為了 BCH 利益相關者的肉中刺,眼中釘,欲處之而後快。
幣信為什麼不支持 BCH ?
眾所周知,其實無論是幣信也好,還是魚池也好,當年和比特大陸的關系其實都不錯,包括香港共識和紐約共識大會,大家都坐在一起談,一起討論。
目的當然是共贏,希望比特幣發展得更好。
但是,這一切在 2017 年之後事情開始有了變化,吳忌寒逐漸有了要分叉的想法,並且他在 2017 年 8 月將這個想法付諸實踐。
在這個過程中,BCH 陣營的做法一直相當具有攻擊性,一副我就要乾死你的架勢。其實分叉就分叉吧,各自好好做自己的事情就好,但是 BCH 從一開始就打算好了,要踩比特幣上位。
其實說來很諷刺,原來的比特幣佈道者,卻搖身一變成為了比特幣最堅定的反對力量,攻訐比特幣也最賣力。
他們說「BCH 才是真正的比特幣」,號召大家把比特幣賣了買 BCH。不知道多少人信了他們的謊言,將自己幸苦囤的比特幣換成了 BCH,因此而損失慘重,最終不得不徹底離開了這個行業。請問,這種行為和詐騙有什麼區別?
他們說比特幣區塊小,無法處理太多交易,鏈上非常堵。結果大家發現比特幣沒他們說的那麼堵,於是他們就發起「粉塵攻擊」,短時間內發送大量的小額垃圾交易,造成比特幣網路擁堵的假象。然後他們鼓吹大區塊,造謠說比特幣最終會因擁堵而消亡。(事實上,比特幣至今還活得很好,並且越來越健壯。)
記得當年殺毒軟體是如何作惡的嗎?為了賣出他們的軟體,有些無良公司會自己炮製病毒,等用戶中毒之後,再去兜售產品。他們的行為簡直如出一轍。
當時澳本聰站出來支持分叉,於是他們與其一拍即合,請來了澳本聰為 BCH 站台,寫文章,開發布會,一頓騷操作猛如虎,風光得不可一世。
當時他們萬萬沒想到,出來混總是要還的,澳本聰這個詐騙犯可不是易與之輩。僅僅是三個月之後,澳本聰就反手給了 BCH 致命 一刀,掀起了差點將 BCH 徹底毀滅的分叉大戰。
沒錯,BCH 分叉比特幣,澳本聰又來分叉 BCH,另外分出個 BSV,真是一出好戲!
幣信一直都是比特幣的信徒,或許 BCH 的初衷是好的,但是在後續的推進過程中,幣信自然非常不認可他們所採取的各種作惡手段。
也許這些手段在政治斗爭中非常常見,摸黑陷害競爭對手都是常用伎倆,但這是比特幣社區,寄託了無數人的期望和信仰,最初的信仰者就是一小撮理想主義者,變成這個樣子,肯定是大家所不願看到的。
並且,BCH 背後主要推手是比特大陸,無論是開發人員,還是社區中的意見領袖,大部分都是比特大陸資助的,BCH 儼然就是一個公司幣,過於中心化,想要取比特幣而代之,顯然是不合適的。
並不是說公司幣不行,例如 BNB 這樣的平台幣就做得非常好,但是如果這個公司幣想要干翻比特幣自己上位,那就有點定位不清了。
總之,BCH 集團的很多行為都透露出他們的極其不靠譜,要是將比特幣的未來寄希望在這樣一群人身上,那比特幣遲早玩完,這是所有比特幣社區的人不願看到的。
於是,在關鍵時刻,幣信決定出手干預。
幣信是如何保護比特幣網路的?
不得不承認,BCH 為了贏得這場分叉之戰,的確做了大量的工作和准備,在很久之前就開始聘請社區內的一些意見領袖開始造勢,不停地寫文章,有些文章寫得還挺有深度,看上去有理有據,邏輯完備。(後來澳本聰也採用了同樣的套路,忽悠了一大批死忠粉)
除了輿論戰,在技術和未來願景方面,BCH 集團也畫了很多大餅,看上去讓人神往,由於大區塊的特性,的確有很多比特幣無法實現的功能,這讓很多人對其充滿了期待。
如果這些還只是常規操作,那麼有一點不得不讓人驚艷,那就是—— BCH 的緊急難度調整機制(EDA)。
因為 BCH 使用和比特幣同樣的演算法,按正常的思路,BCH 要想分叉成功,並且持續保持出塊,就必須擁有龐大的算力支撐,因為分叉的時候,比特幣網路的難度已經非常大了,小算力根本爆不出塊。
所以,他們想出了一個緊急難度調整機制:如果當前區塊的前6個區塊出塊時間大於12小時,則難度自動下調20%,如果當前區塊的 MTP 時間和從當前塊往前數第6個塊的 MTP 時間相差大於12個小時,就應急降低20%難度。
簡單來說,就是如果一定時間內不出塊,就會自動下調20%難度,再不出塊就繼續下調 20%,直到出塊為止。這樣就算只有很小的算力,也能保證能夠出塊。
這個機制乍一看像是防守機制,純粹是為了自保,為了自己能夠生存下去而已,但是各位別被其表象所迷惑了,這實際上是一個極具有攻擊性的機制,因為難度只有下調,沒有上調。
設計這套機制的人,深諳人性之道,他們懂得,礦工其實是趨利的,只要哪裡有錢賺,就會用腳投票,直接把算力切到哪裡。
當 BCH 的難度降低了,擁有同樣的算力,那礦工就能夠挖到更多的幣,只要所得到的利潤大於比特幣,那麼礦工的算力就會被吸引過來。
這樣,就算 BCH 的價格比比特幣低,只要難度夠低,礦工就能賺更多錢,算力就會過來。
而 BCH 的算力和比特幣的算力是互斥的,挖 BCH 就不能挖 BTC,是一種此消彼長的關系,一旦比特幣算力都遷移到 BCH 網路,再配合拉漲幣價,在當時的環境下,還真有可能會被 BCH 篡位成功。
要知道,當時很多中立方都表示過,哪個網路的算力大就支持哪個幣是真正的比特幣。
不得不承認,緊急難度調整機制的設計的確非常天才,所以,這種機制也被人稱為針對比特幣的「算力暴擊」。
BCH 集團醞釀多時,花費了大量的人力物力籌備分叉,他們准備在分叉之後,立刻對比特幣展開「算力暴擊」,即分叉完成之後,就把自己的算力從 BCH 網路撤出,讓難度大幅下降,同時大幅度拉漲幣價,這樣就可以吸引大部分的礦工算力過來,比特幣網路的算力就會暴降,讓比特幣網路因擁堵不出塊而無法運轉,最終一舉奠定勝局。
這個計劃近乎完美。
這簡直就是針對比特幣的陽謀,大家都知道怎麼回事,但是就是沒辦法去破解,因為當時 BCH 集團控制了一半以上的比特幣算力,只要吸引 10%左右的算力過來,比特幣網路就可能運轉不了了。
當時除了 BCH 集團控制的算力和礦池,就只有三個礦池佔比比較大,分別是魚池魚池、國池(比特幣中國礦池)、和幣信礦池。
礦池就算想要支持比特幣,那也得礦工答應,礦池是無法控制用戶的算力的,不然礦工肯定會用腳投票直接走人。
所以,BCH 集團當時覺得勝券在握了,估計他們連慶祝酒會都已經准備好了。
但是,讓他們萬萬沒有想到的是,等分叉完畢,BCH 出了幾個塊,當他們將自有算力從 BCH 網路撤出,靜靜等待不出塊而難度自動下降之時,意外卻出現了——有神秘算力突然接入了 BCH 網路,爆塊繼續。
由於有持續爆塊,BCH 的緊急難度調整機制就無法生效,因為這樣難度一直降不下來(出塊間隔時間小於 12 小時)。
並且,為了防止神秘算力針對 BCH 網路發動 51%攻擊,他們又不得不很尷尬地重新將自己的算力切回來,持續挖著。
這些神秘算力隱藏了 Coinbase 和地址,一時間所有人都搞不清其來路。
突然出現的神秘算力打亂了「算力暴擊計劃」的節奏,本來等難度降低後,他們准備了大量的資金要配合拉盤,一時間拉盤計劃也無法繼續推進,生生卡住了。
這種情形,就彷彿一個刺客,針對刺殺目標發動了致命一擊,然後突然出現了一股神秘力量,將這致命一擊給擋住了,並且持續守護著目標,導致刺客後續的一系列攻擊都無法實施。
BCH集團非常費解:這股神秘力量到底從哪裡來的?
前面說過,除了 BCH 集團自己控制的算力,另外擁有比較大的算力的,就只剩下魚池、國池和幣信礦池這三方。
魚池和國池都是散戶的算力,他們根本無法動用,只有幣信礦池基本都是自己的算力,也就是說只有幣信有這個條件做這件事。
答案呼之欲出:幣信!
是的,這股神秘算力就是幣信的自有算力。
幣信在 BCH 集團准備針對比特幣發動第一次也是最強的一次算力暴擊的時候,出手了。
其他人沒辦法做這件事情,只有幣信有這個條件,只有幣信能做,那就由幣信來做!
為了比特幣的未來,舍我其誰?
要知道,當時難度沒降下來,礦工挖 BCH 肯定是不劃算的,幣信礦業頂著每天幾十甚至上百比特幣的巨額虧損,硬生生守護了比特幣一個難度周期!(即兩周時間)
BCH 集團也很快反應過來,知道這肯定是幣信乾的好事,但是沒辦法,在技術上他們是無法拒絕幣信的算力的,只能乾瞪眼。
通過這個方式,他們終於將幣信算力趕出了 BCH 網路,這才得以對比特幣實施算力暴擊。
幣信礦場剛停機,他們就迫不及待開始拉盤了,BCH 開始大漲,但那個時候已經他們無力回天了,因為最佳狙擊時機已過,他們已經失去了「天時」,效果大打折扣。
盡管後面 BCH 針對比特幣多次算力暴擊,導致比特幣網路算力經常不穩定,但勝負已定,已經無關緊要,不影響大局。
經此一役,幣信損失慘重,不但損失了十幾天的比特幣挖礦收益,礦場也不得不搬離,損失的比特幣在現在看來,簡直是個天文數字。
但是,這一切都是值得的,幣信為守護了比特幣貢獻了自己的力量,幫比特幣擋住了致命一擊,做了比特幣信仰者該做的事情。
雖然幣信因為這件事幾乎將以前所有挖礦賺到的利潤都一次性虧了出去,但長期來看,幣信肯是受益的。
後記
這些往事封存已久,很多人其實並不清楚其中的細節,也不知道幣信當年做的事情,這其實也沒什麼,幣信一直都活得很好。
但是這么多年來,幣信一直被一些別有用心者抹黑造謠,實在心累,想想還是寫點文字,將事實公布,免得無辜吃瓜群眾被其誤導。
分叉風波已經過去多年,比特幣依然還是那個比特幣,比特幣社區也比以前更加健壯,這是我們這些比特幣信仰者最大的幸福。
Long Bitcoin, Short the world!
#歐易OKEx# #比特幣[超話]# #數字貨幣#
『肆』 合約地址是什麼意思
合約地址是嘩仔指區塊鏈系統中的一種特殊地址,它是用於標識智能合約的地址。智能合約是一種特殊的計算機程序,它可納迅以在特定的條件下執行特定的操作,並且可以在區塊鏈系統中自動執行。
智能合約通常使用技術,如比特幣的腳本或以太坊的智能合約語言來編寫,它們可以被編譯成機器可讀的位元組碼,並存儲在區塊鏈系統中。每個智能合約都有一個的地址,稱為合約地址,用於標識智能合約。
合約地址有助於確保每個智能合約的性,並且可以用於檢索和訪問智能合約。合約地址也可以用於接收和發送比特幣,以太坊或其他加密貨幣,以及發送和接收其他數據。
合約地址通常是一個長度為42位的16進制字元串,它可以用來標識智能合約,並用於發送和接收加密貨幣或其他數據。合約地亂茄汪址也可以用於驗證智能合約的完整性,並且可以用於跟蹤智能合約的交易歷史。
合約地址可以用於構建復雜的智能合約,它們可以用於實現各種功能,如自動執行交易、自動執行投票、自動執行投資等。智能合約可以用於構建分布式應用程序,並可以用於實現自動化和去中心化的業務流程。
總之,合約地址是一種特殊的地址,它可以用於標識智能合約,並用於發送和接收加密貨幣或其他數據。合約地址可以用於構建復雜的智能合約,它們可以用於實現各種功能,如自動執行交易、自動執行投票、自動執行投資等。此外,合約地址還可以用於驗證智能合約的完整性,並且可以用於跟蹤智能合約的交易歷史。
『伍』 比特幣之挖礦與共識(二)
比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它 轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。
獨立校驗還確保了誠實 的礦工生成的區塊可以被納入到區塊鏈中,從而獲得獎勵。行為不誠實的礦工所產生的區塊將被拒絕,這不但使他們失 去了獎勵,而且也浪費了本來可以去尋找工作量證明解的機會,因而導致其電費虧損。
當一個節點接收到一個新的區塊,它將對照一個長長的標准清單對該區塊進行驗證,若沒有通過驗證,這個區塊將被拒 絕。這些標准可以在比特幣核心客戶端的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%算 力。
待補充
待補充
『陸』 區塊鏈鼻祖比特幣之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/
『柒』 比特幣如何防止篡改
比特幣網路主要會通過以下兩種技術保證用戶簽發的交易和歷史上發生的交易不會被攻擊者篡改:
非對稱加密可以保證攻擊者無法偽造賬戶所有者的簽名;
共識演算法可以保證網路中的歷史交易不會被攻擊者替換;
非對稱加密
圖 4 - 51% 攻擊
總結
比特幣使用了非對稱加密演算法,保證攻擊者在有限時間內無法偽造賬戶所有者的簽名;
比特幣使用了工作量證明的共識演算法並引入了記賬的激勵,保證網路中的歷史交易不會被攻擊者快速替換;
『捌』 數字貨幣轉給了騙子,能根據地址找到對方嗎
這個應該能查到對方,(現在登錄平台,賬號……都是實名認證,想鑽法律監管空子不太容易)現在網路監管逐步趨於完善,登錄昵稱都很嚴格,都是實名認證。
『玖』 eth/btc是什麼意思
BTC比特幣
比特幣是第一個創建的分布式數字資產平台。自2009年發布以來,它已被證明不僅是最受歡迎的,也是最大的市場資本價值。此外,它也是最貴的,每個幣在2018年2月17日的價值為10,710美元。比特幣引入了第一個專門用於記錄所有交易的區塊鏈分布式賬本,並擺脫了用戶需要中央機構處理或驗證交易的功能。
其目標是為用戶提供一個平台,讓他們可以跨境進行交易,而無需任何中介,也就是我們所說的去中心化。該平台的最大貨幣(BTC)供應量約為2100萬。在這個數字中,約有1650萬已被開采,目前正在流通。它在全球無時無刻的被開采著,來確保硬幣的流通性。
優點:
1、它的分布式系統為用戶提供了很大的自由。
2、高便攜性。
3、這是一個安全的網路。
缺點:
1、價格波動較大。
2、用戶可能會丟失密鑰。
ETH以太坊
以太坊也是一個分布式的平台,由網路程序員Vitalik Buterin於2015年7月創建。以太坊旨在使用戶能夠創建和部署智能合同。智能合約的一個主要功能是允許創建在Ethereum網路上運行的加密資產或令牌。以太坊代幣用於購買雲存儲空間等各種功能。這些令牌存儲在與以太坊區塊鏈兼容的數字錢包中。
以太坊的數字貨幣Ether充當了執行智能合約的介質。目前,已有約9800萬個以太幣已被開采和流通,流通供應量每年增加約1800萬。以太幣被創建為在以太坊網路上運行,它可以用於補償參與者節點,也可以從一個用戶轉移到另一個用戶。
優點:
1、構建了多平台。
2、能夠運行智能合約。
3、安全性極高。
缺點:流通量較多。
產生原理:
從比特幣的本質說起,比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到有限個解中的一組。而每一個特解都能解開方程並且是唯一的。
以鈔票來比喻的話,比特幣就是鈔票的冠字型大小碼,某張鈔票上的冠字型大小碼,就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有2100萬個特解,所以比特幣的上限就是2100萬個。
要挖掘比特幣可以下載專用的比特幣運算工具,然後注冊各種合作網站,把注冊來的用戶名和密碼填入計算程序中,再點擊運算就正式開始。
完成Bitcoin客戶端安裝後,可以直接獲得一個Bitcoin地址,當別人付錢的時候,只需要自己把地址貼給別人,就能通過同樣的客戶端進行付款。
在安裝好比特幣客戶端後,它將會分配一個私鑰和一個公鑰。需要備份你包含私鑰的錢包數據,才能保證財產不丟失。如果不幸完全格式化硬碟,個人的比特幣將會完全丟失。