比特幣出塊間隔是寫死的嗎
『壹』 挖礦獲取比特幣的時間點是什麼時候比如是一挖出就可得到,還是等接在該區塊後再出來5個區塊才能得到
首先你要理解挖取比特幣的時間點是怎麼一回事:
比特幣總共發行2100W個,每生成一個塊周期10分鍾,一個塊獎勵一定數目的比特幣。最開始挖礦每個塊獎勵50個比特幣,以後每21000個塊獎勵減半(約4年獎勵減半一次),現在每生成一個塊獎勵12.5個比特幣。每個塊的生成時間10分鍾,但是隨著計算機技術的發展,現在的挖礦算力在不斷升高,那麼生成一個塊的時間肯定小於10分鍾,這就需要一定的控制措施來保證這個時間。這個措施就是挖礦難度,如果每個塊產出時間小於10分鍾,則提高挖礦難度,大於10分鍾則降低挖礦難度,每次難度調整時間為2016塊,即2周。
挖礦難度會在每2016個塊後所有節點都會按照一定的公式自動進行調整,這個公式由最新的也就是這個周期內2016個區塊的花費時間和期望的時間(期望時間20160分鍾即兩周)比較得出的。
新難度 = 舊難度值 * (過去2016個區塊花費的時長 / 20160分鍾)
『貳』 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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# #比特幣[超話]# #數字貨幣#
『肆』 區塊鏈入門必備108知識點
區塊鏈入門必備108知識點
(歡迎同頻者交流)
1、什麼是區塊鏈
把多筆交易的信息以及表明該區塊的信息打包放在一起,經驗證後的這個包就是區塊。
每個區塊里保存了上一個區塊的 hash值,使區塊之間產生關系,也就是說的鏈了。合起來就叫區塊鏈。
2.什麼是比特幣
比特幣概念是2009年 中本聰提出的,總量是2100萬個。比特幣鏈大約每10分鍾產生一個區塊,這個區塊是礦工挖了10分鍾挖出來的。作為給礦工獎勵,一定數量的比特幣會發給礦工們,但是這個一定數量是每四年減半一次。現在是12.5個。照這樣下去2040年全部的比特幣問世。
3.什麼是 以太坊
以太坊與比特幣最大的區別是有了智能合約。使得開發者在上邊可以開發,運行各種應用。
4.分布式賬本
它是一種在網路成員之間共享,復制和同步的資料庫。直白說,在區塊鏈上的所有用戶都有記賬功能,而且內容一致,這樣保證了數據不可篡改性。
5.什麼是准匿名性
相信大家都有錢包,發送交易都用的錢包地址(一串字元串)這就是准匿名。
6.什麼是開放透明性/可追溯
區塊鏈存儲了從 歷史 到現在的所有數據,任何人都可以查看,而且還可以查看到 歷史 上的任何數據。
7.什麼是不可篡改
歷史 數據和當前交易的數據不可篡改。數據被存在鏈上的區塊上,有一個hash值,如果修改該區塊信息,那麼它的 hash值也變了,它後邊的所有區塊的hash值也必須修改,使成為新的鏈。同時主鏈還在進行交易產生區塊。修改後鏈也必須一直和主鏈同步產生區塊,保證鏈的長度一樣。代價太大了,只為修改一條數據。
8.什麼是抗ddos攻擊
ddos:黑客通過控制許多人的電腦或者手機,讓他們同時訪問一個網站,由於伺服器的寬頻是有限的,大量流量的湧入可能會使得網站可能無法正常工作,從而遭受損失。但區塊鏈是分布式的,不存在一個中心伺服器,一個節點出現故障,其他節點不受影響。理論上是超過51%的節點遭受攻擊,會出現問題。
9.主鏈的定義
以比特幣為例,某個時間點一個區塊讓2個礦工同時挖出來,然後接下來最先產生6個區塊的鏈就是主鏈
10.單鏈/多鏈
單鏈指的是一條鏈上處理所有事物的數據結構。多鏈結構,其核心本質是公有鏈+N個子鏈構成。只有一條,子鏈理論上可以有無數條,每一個子鏈都可以運行一個或多個DAPP系統
11.公有鏈/聯盟鏈/私有鏈
公有鏈:每個人都可以參與到區塊鏈
聯盟鏈:只允許聯盟成員參與記賬和查詢
私有鏈:寫入和查看的許可權只掌握在一個組織手裡。
12.共識層數據層等
區塊鏈整體結構有六個:數據層,網路層,共識層,激勵層,合約層,應用層。數據層:記錄數據的一層,屬於底層技術; 網路層:構建區塊鏈網路的一種架構,它決定了用戶與用戶之間通過何種方式組織起來。共識層:提供了一套規則,讓大家接收和存儲的信息達成一致。激勵層:設計激勵政策,鼓勵用戶參與到區塊鏈生態中;合約層:一般指「智能合約」,它是一套可以自動執行,根據自己需求編寫的合約體系。應用層:區塊鏈上的應用程序,與手機的app類似前分布式存儲研發中心
13.時間戳
時間戳是指從1970年1月1日0時0分0秒0...到現在的當前時間的總秒數,或者總納秒數等等很大的數字。每個區塊生成時都有一個時間戳,表明生成區塊的時間。
14.區塊/區塊頭/區塊體
區塊是區塊鏈的基本單元,區塊頭和區塊體是區塊鏈的組成部分。區塊頭裡麵包含的信息有上一個區塊的hash,本區塊的hash,時間戳等等。區塊體就是區塊里的詳細數據。
15.Merkle樹
Merkle樹,也叫二叉樹,是存儲數據的一種數據結構,最底層是所有區塊包含的原始數據,上一層是每個區塊的hash值,這一層的hash兩兩組合產生新的hash值,形成新的一層,然後一層層往上,-直到產生一個hash值。這樣的結構可以用於快速比較大量的數據,不需要下載全部的數據就可以快速的查找你想要的最底層的 歷史 數據。
16什麼是擴容
比特幣的一個區塊大小大約是1M左右,可以保存4000筆交易記錄。擴容就是想把區塊變大,能保存更多的數據。
17.什麼是鏈
每個區塊都會保存上一個區塊的 hash,使區塊之間產生關系,這個關系就是鏈。通過這個鏈把區塊交易記錄以及狀態變化等的數據存儲起來。
18.區塊高度
這個不是距離上說的高度,它指是該區塊與所在鏈上第一個區塊之間相差的區塊總個數。這個高度說明了就是第幾個區塊,只是標識作用。
19.分叉
同一時間內產生了兩個區塊(區塊里的交易信息是一樣的,只是區塊的hash值不一樣),之後在這兩個區塊上分叉出來兩條鏈,這兩條鏈接下來誰先生成6個區塊,誰就是主鏈,另外的一條鏈丟棄。
20. 幽靈協議
算力高的礦池很容易比算力低的礦機產生區塊速度快,導致區塊鏈上大部分區塊由這些算力高的礦池產生的。而算力低的礦機產生的區塊因為慢,沒有存儲到鏈上,這些區塊將會作廢。
幽靈協議使得本來應該作廢的區塊,也可以短暫的留在鏈上,而且也可以作為
工作量證明的一部分。這樣一來,小算力
的礦工,對主鏈的貢獻比重就增大了,大型礦池就無法獨家壟斷對新區塊的確認。
21.孤塊
之前說過分叉,孤塊就是同一時間產生的區塊,有一個形成了鏈,另一個後邊沒有形成鏈。那麼這個沒形成鏈的塊就叫
孤塊。
22.叔塊
上邊說的孤塊,通過幽靈協議,使它成為工作量證明的一部分,那它就不會被丟棄,會保存在主鏈上。這個區塊就是下
23重放攻擊
就是黑客把已經發送給伺服器的消息,重新又發了一遍,有時候這樣可以騙取伺服器的多次響應。
24.有向無環圖
也叫數據集合DAG(有向非循環圖),DAG是一種理想的多鏈數據結構。現在說的區塊鏈大都是單鏈,也就是一個區塊連一個區塊,DAG是多個區塊相連。好處是可以同時生成好幾個區塊,於是網路可以同時處理大量交易,吞吐量肯定就上升了。但是缺點很多,目前屬於研究階段。
25.什麼是挖礦
挖礦過程就是對以上這六個欄位進行一系列的轉換、連接和哈希運算,並隨著不斷一個一個試要尋找的隨機數,最後成功找到一個隨機數滿足條件:經過哈希運算後的值,比預設難度值的 哈希值小,那麼,就挖礦成功了,節點可以向鄰近節點進行廣播該區塊,鄰近節點收到該區塊對以上六個欄位進行同樣的運算,驗證合規,再向其它結點轉播,其它結點也用同樣的演算法進行驗證,如果全網有51%的結點都驗證成功,這個區塊就算真正地「挖礦」成功了,每個結點都把這個區塊加在上一個區塊的後面,並把區塊中與自己記錄相同的列表刪除,再次復生上述過程。另外要說的是,不管挖礦成不成功每個節點都預先把獎勵的比特幣50個、所有交易的手續費(總輸入-總輸出)記在交易列表的第一項了(這是「挖礦」最根本的目的,也是保證區塊鏈能長期穩定運行的根本原因),輸出地址就是本結點的地址,但如果挖礦不成功,這筆交易就作廢了,沒有任何獎勵。而且這筆叫作「生產交易」的交易不參與「挖礦」計算。
26.礦機/礦場
礦機就是各種配置的計算機,算力是他們的最大差距。礦機集中在一個地的地方就是礦場
27.礦池
就是礦工們聯合起來一起組成一個團隊,這個團隊下的計算機群就是礦池。挖礦獎勵,是根據自己的算力貢獻度分發。
28.挖礦難度和算力
挖礦難度是為了保證產生區塊的間隔時間穩定在某個時間短內,如比特幣10分鍾出
塊1個。算力就是礦機的配置。
29.驗證
當區塊鏈里的驗證是對交易合法性的一種確認,交易消息在節點之間傳播時每個節點都會驗證一次這筆交易是否合法。比如驗證交易的語法是否正確,交易的金額是否大於0,輸入的交易金額是否合理,等等。驗證通過後打包,交給礦工挖礦。
30.交易廣播
就是該節點給其他節點通過網路發送信息。
31.礦工費
區塊鏈要像永動機一樣不停的工作,需要礦工一直維護著這個系統。所以要給礦工們好處費,才能持久。
32.交易確認
當交易發生時,記錄該筆交易的區塊將進行第一次確認,並在該區塊之後的鏈上的每一個區塊進行再次確認:當確認數達到6個及以上時,通常認為這筆交易比較安全並難以篡改。
33.雙重交易
就是我有10塊錢,我用這10塊錢買了一包煙,然後瞬間操作用這還沒到付的10塊錢又買了杯咖啡。所以驗證交易的時候,要確認這10塊錢是否已花費。
34.UTXO未花費的交易輸出
它是一個包含交易數據和執行代碼的數據結構,可以理解為存在但尚未消費的數字貨幣。
35.每秒交易數量TPS
也就是吞吐量,tps指系統每秒能處理的交易數量。
36.錢包
與支付寶類似,用來存儲數字貨幣的,用區塊鏈技術更加安全。
37.冷錢包/熱錢包
冷錢包就是離線錢包,原理是儲存在本地,運用二維碼通信讓私鑰永不觸網。熱錢包就是在線錢包,原理是將私鑰加密後存儲在伺服器上,當需要使用時再從伺服器上下載下來,並在瀏覽器端進行解密。
38.軟體錢包/ 硬體錢包
軟體錢包是一種計算機程序。一般而言,軟體錢包是與區塊鏈交互的程序,可以讓用戶接收、存儲和發送數字貨幣,可以存儲多個密鑰。硬體錢包是專門處理數字貨幣的智能設備。
39.空投
項目方把數字貨幣發送給各個用戶錢包地址。
40.映射
映射跟區塊鏈貨幣的發行相關,是鏈與鏈之間的映射。比如有一些區塊鏈公司,前期沒有完成鏈的開發,它就依託於以太坊發行自己的貨幣,前期貨幣的發行、交易等都在以太坊上進行操作。隨著公司的發展,公司自己的鏈開發完成了公司想要把之前在以太坊上的信息全部對應到自己的鏈上,這個過程就是映射。
41.倉位
指投資人實有投資和實際投資資金的比例
42.全倉
全部資金買入比特幣
43.減倉
把部分比特幣賣出,但不全部賣出
44.重倉
資金和比特幣相比,比特幣份額佔多
45.輕倉
資金和比特幣相比,資金份額佔多
46.空倉
把手裡所持比特幣全部賣出,全部轉為資金
47.止盈
獲得一定收益後,將所持比特幣賣出以保住盈利
48.止損
虧損到一定程度後,將所持比特幣賣出以防止虧損進一步擴大
49.牛市
價格持續上升,前景樂觀
50.熊市
價格持續下跌,前景黯淡
51.多頭(做多)
買方,認為幣價未來會上漲,買入幣,待幣價上漲後,高價賣出獲利了結
52.空頭(做空)
賣方,認為幣價未來會下跌,將手中持有的幣(或向交易平台借幣)賣出,待幣價下跌後,低價買入獲利了結
53.建倉
買入比特幣等虛擬貨幣
54.補倉
分批買入比特幣等虛擬貨幣,如:先買入1BTC,之後再買入1BTC
55.全倉
將所有資金一次性全部買入某一種虛擬幣
56.反彈
幣價下跌時,因下跌過快而價格回升調整
57.盤整(橫盤)
價格波動幅度較小,幣價穩定
58.陰跌
幣價緩慢下滑
59.跳水(瀑布)
幣價快速下跌,幅度很大
60.割肉
買入比特幣後,幣價下跌,為避免虧損擴大而賠本賣出比特幣。或借幣做空後,幣價上漲,賠本買入比特幣
61.套牢
預期幣價上漲,不料買入後幣價卻下跌;或預期幣價下跌,不料賣出後,幣價卻上漲
62.解套
買入比特幣後幣價下跌造成暫時的賬面損失,但之後幣價回升,扭虧為盈
63.踏空
因看淡後市賣出比特幣後,幣價卻一路上漲,未能及時買入,因此未能賺得利潤
64.超買
幣價持續上升到一定高度,買方力量基本用盡,幣價即將下跌
65.超賣
幣價持續下跌到一定低點,賣方力量基本用盡,幣價即將回升
66.誘多
幣價盤整已久,下跌可能性較大,空頭大多已賣出比特幣,突然空方將幣價拉高,誘使多方以為幣價將會上漲,紛紛買入,結果空方打壓幣價,使多方套牢
67.誘空
多頭買入比特幣後,故意打壓幣價,使空頭以為幣價將會下跌,紛紛拋出,結果誤入多頭的陷阱
68.什麼是NFT
NFT全稱「Non-Fungible Tokens」 即非同質化代幣,簡單來說,即區塊鏈上一種無法分割的版權證明,主要作用數字資產確權,轉移,與數字貨幣區別在於,它獨一無二,不可分割,本質上,是一種獨特的數字資產。
69.什麼是元宇宙
元宇宙是一個虛擬時空間的集合, 由一系列的增強現實(AR), 虛擬現實(VR) 和互聯網(Internet)所組成,其中數字貨幣承載著這個世界中價值轉移的功能。
70.什麼是DeFi
DeFi,全稱為Decentralized Finance,即「去中心化金融」或者「分布式金融」。「去中心化金融」,與傳統中心化金融相對,指建立在開放的去中心化網路中的各類金融領域的應用,目標是建立一個多層面的金融系統,以區塊鏈技術和密碼貨幣為基礎,重新創造並完善已有的金融體系
71.誰是中本聰?
72.比特幣和Q幣不一樣
比特幣是一種去中心化的數字資產,沒有發行主體。Q幣是由騰訊公司發行的電子貨幣,類似於電子積分,其實不是貨幣。Q幣需要有中心化的發行機構,Q幣因為騰訊公司的信用背書,才能被認可和使用。使用范圍也局限在騰訊的 游戲 和服務中,Q幣的價值完全基於人們對騰訊公司的信任。
比特幣不通過中心化機構發行,但卻能夠得到全球的廣泛認可,是因為比特幣可以自證其信,比特幣的發行和流通由全網礦工共同記賬,不需要中心機構也能確保任何人都無法竄改賬本。
73.礦機是什麼?
以比特幣為例,比特幣礦機就是通過運行大量計算爭奪記賬權從而獲得新生比特幣獎勵的專業設備,一般由挖礦晶元、散熱片和風扇組成,只執行單一的計算程序,耗電量較大。挖礦實際是礦工之間比拼算力,擁有較多算力的礦工挖到比特幣的概率更大。隨著全網算力上漲,用傳統的設備(CPU、GPU)挖到比特的難度越來越大,人們開發出專門用來挖礦的晶元。晶元是礦機最核心的零件。晶元運轉的過程會產生大量的熱,為了散熱降溫,比特幣礦機一般配有散熱片和風扇。用戶在電腦上下載比特幣挖礦軟體,用該軟體分配好每台礦機的任務,就可以開始挖礦了。每種幣的演算法不同,所需要的礦機也各不相同。
74.量化交易是什麼?
量化交易,有時候也稱自動化交易,是指以先進的數學模型替代人為的主觀判斷,極大地減少了投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下做出非理性的投資決策。量化交易有很多種,包括跨平台搬磚、趨勢交易、對沖等。跨平台搬磚是指,當不同目標平台價差達到一定金額,在價高的平台賣出,在價低的平台買入。
75.區塊鏈資產場外交易
場外交易也叫OTC交易。用戶需要自己尋找交易對手,不通過撮合成交,成交價格由交易雙方協商確定,交易雙方可以藉助當面協商或者電話通訊等方式充分溝通。
76.時間戳是什麼?
區塊鏈通過時間戳保證每個區塊依次順序相連。時間戳使區塊鏈上每一筆數據都具有時間標記。簡單來說,時間戳證明了區塊鏈上什麼時候發生了什麼事情,且任何人無法篡改。
77.區塊鏈分叉是什麼?
在中心化系統中升級軟體十分簡單,在應用商店點擊「升級」即可。但是在區塊鏈等去中心化系統中,「升級」並不是那麼簡單,甚至可能一言不合造成區塊鏈分叉。簡單說,分叉是指區塊鏈在進行「升級」時發生了意見分歧,從而導致區塊鏈分叉。因為沒有中心化機構,比特幣等數字資產每次代碼升級都需要獲得比特幣社區的一致認可,如果比特幣社區無法達成一致,區塊鏈很可能形成分叉。
78.軟分叉和硬分叉
硬分叉,是指當比特幣代碼發生改變後,舊節點拒絕接受由新節點創造的區塊。不符合原規則的區塊將被忽略,礦工會按照原規則,在他們最後驗證的區塊之後創建新的區塊。 軟分叉是指舊的節點並不會意識到比特幣代碼發生改變,並繼續接受由新節點創造的區塊。礦工們可能會在他們完全沒有理解,或者驗證過的區塊上進行工作。軟分叉和硬分叉都"向後兼容",這樣才能保證新節點可以從頭驗證區塊鏈。向後兼容是指新軟體接受由舊軟體所產生的數據或者代碼,比如說Windows 10可以運行Windows XP的應用。而軟分叉還可以"向前兼容"。
79.區塊鏈項目分類和應用
從目前主流的區塊鏈項目來看,區塊鏈項目主要為四類:第一類:幣類;第二類:平台類;第三類:應用類;第四類:資產代幣化。
80.對標美元的USDT
USDT是Tether公司推出的對標美元(USD)的代幣Tether USD。1USDT=1美元,用戶可以隨時使用USDT與USD進行1:1兌換。Tether公司執行1:1准備金保證制度,即每個USDT代幣,都會有1美元的准備金保障,對USDT價格的恆定形成支撐。某個數字資產單價是多少USDT,也就相當於是它的單價是多少美元(USD)。
81.山寨幣和競爭幣
山寨幣是指以比特幣代碼為模板,對其底層技術區塊鏈進行了一些修改的區塊鏈資產,其中有技術性創新或改進的又稱為競爭幣。因為比特幣代碼開源,導致比特幣的抄襲成本很低,甚至只需復制比特幣的代碼,修改一些參數,便可以生成一條全新的區塊鏈。
82.三大交易所
幣安
Okex
火幣
83.行情軟體
Mytoken
非小號
84.資訊網站
巴比特
金色 財經
幣世界快訊
85.區塊鏈瀏覽器
BTC
ETH
BCH
LTC
ETC
86.錢包
Imtoken
比特派
MetaMask(小狐狸 )
87. 去中心化交易所
uniswap
88. NFT交易所
Opensea
Super Rare
89. 梯子
自備,購買靠譜梯子
90. 平台幣
平台發行的數字貨幣,用於抵扣手續費,交易等
91. 牛市、熊市
牛市:上漲行情
熊市:下跌行情
92. 區塊鏈1.0
基於分布式賬本的貨幣交易體系,代表為比特幣
93. 區塊鏈2.0
以太坊(智能合約)為代表的合同區塊鏈技術為2.0
94. 區塊鏈3.0
智能化物聯網時代,超出金融領域,為各種行業提供去中心化解決方案
95. 智能合約
智能合約,Smart Contract,是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議,簡單說,提前定好電子合約,一旦雙方確認,合同自動執行。
96. 什麼是通證?
通證經濟就是以Token為唯一參考標準的經濟體系,也就是說相當於通行證,你擁有Token ,就擁有權益,就擁有發言權。
97. 大數據 和 區塊鏈 的 區別
大數據是生產資料,AI是新的生產力,區塊鏈是新的生產關系。大數據指無法在一定時間范圍內用常規軟體工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。簡單理解為,大數據就是長期積累的海量數據,短期無法獲取。區塊鏈可以作為大數據的獲取方式,但無法取代大數據。大數據只是作為在區塊鏈運行的介質,沒有絕對的技術性能,所以兩者不能混淆。(生產關系簡單理解就是勞動交換和消費關系,核心在於生產力,生產力核心在於生產工具)
98. 什麼是ICO?
ICO,Initial Coin Offering, 首次公開代幣發行,就是區塊鏈數字貨幣行業中的眾籌。是2017最為熱門的話題和投資趨勢,國家9.4出台監管方案。說到ICO,人們會想到IPO,兩者有著本質不同。
99. 數字貨幣五個特徵
第一個特徵:去中心化
第二個特徵:有開源代碼
第三個特徵:有獨立的電子錢包
第四個特徵:恆量發行的
第五個特徵:可以全球流通
100.什麼叫去中心化?
沒有發行方,不屬於任何機構或國家,由互聯網網路專家設計、開發並存放於互聯網上,公開發行的幣種。
101. 什麼叫衡量(稀缺性)?
發行總量一旦設定,永久固定,不能更改,不能隨意超發,可接受全球互聯網監督。因挖掘和開釆難度雖時間數量變化,時間越長,開采難度越大,所開釆的幣就越少,因此具有稀缺性。
102. 什麼叫開源代碼?
用字母數字組成的存放在互聯網上,任何人都可以查出其設計的源代碼,所有人都可以參與,可以挖掘,全球公開化。
103. 什麼叫匿名交易? 專有錢包私密?
每個人都可以在網上注冊下載錢包,無需實名認證,完全由加密數字代碼組成,全球即時點對點發送、交易,無需藉助銀行和任何機構,非本人授權任何人都無法追蹤、查詢。
104.什麼是合約交易?
合約交易是指買賣雙方對約定未來某個時間按指定價格接收一定數量的某種資產的協議進行交易。合約交易的買賣對象是由交易所統一制定的標准化合約,交易所規定了其商品種類,交易時間,數量等標准化信息。合約代表了買賣雙方所擁有的權利和義務。
105.數字貨幣產業鏈
晶元廠家 礦機廠商 礦機代理 挖礦 出礦到交易所 散戶炒幣
106.北 楓 是誰?
北 楓 :數字貨幣價值投資者
投資風格:穩健
建立社區 :北斗 社區 (高質量價投社區 )
107.北斗 投資策略
長短結合,價投為主,不碰合約,不玩短線
合理布局,科學操作,穩健保守,掙周期錢
108.北 楓 ?
歡迎幣友,共謀發展
『伍』 比特幣基礎知識 你絕對想不到
橢圓曲線數字簽名演算法
橢圓曲線數字簽名演算法(ECDSA)是使用橢圓曲線對數字簽名演算法(DSA)的模擬,該演算法是構成比特幣系統的基石。
私鑰
非公開,擁有者需安全保管。通常是由隨機演算法生成的,說白了,就是一個巨大的隨機整數,32位元組,256位。
大小介於1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之間的數,都可以認為是一個合法的私鑰。
於是,除了隨機方法外,採用特定演算法由固定的輸入,得到32位元組輸出的演算法就可以成為得到私鑰的方法。於是,便有了迷你私鑰(Mini Privkey),原理很簡單,例如,採用SHA256的一種實現:
private key = SHA256()1
迷你私鑰存在安全問題,因為輸入集合太小,易被構造常見組合的彩虹表暴力破解,所以通常仿輪納還是使用系統隨機生成的比較好,無安全隱患。
公鑰
公鑰與私鑰是相對應的,一把私鑰可以推出唯一的公鑰,但公鑰卻無法推導出私鑰。公鑰有兩種形式:壓縮與非壓縮。
早期比特幣均使用非壓縮公鑰,現大部分客戶端已默認使用壓縮公鑰。
這個貌似是比特幣系統一個長得像feature的bug,早期人少活多代碼寫得不夠精細,openssl庫的文檔又不足夠好,導致Satoshi以為必須使用非壓縮的完整公鑰,後來大家發現其實公鑰的左右兩個32位元組是有關聯的,左側(X)可以推出右側(Y)的平方值,有左側(X)就可以了。
現在系統里兩種方式共存,應該會一直共存下去。兩種公鑰的首個位元組為標識位,壓縮為33位元組,非壓縮為65位元組。以0x04開頭為非壓縮,0x02/0x03開頭為壓縮公鑰,0x02/0x03的選取由右側Y開方後的奇偶決定。
壓縮形式可以減小Tx/Block的體積,每個Tx Input減少32位元組。
簽名
使用私鑰對數據進行簽署(Sign)會得到簽名(Signature)。通常會將數據先生成Hash值,然後對此Hash值進行簽名。簽名(signature)有兩部分組成: R + S。由簽名(signature)與Hash值,便可以推出一個公鑰,驗證此公鑰,便可知道此簽名是否由公鑰對應的私鑰簽名。
通常,每個簽名會有三個長度:73、72、71,符合校驗的概率為25%、50%、25%。所以每次簽署後,需要找出符合校驗的簽名長度,再提供給驗證方。
地址
地址是為了人們交換方便而弄出來的一個方案,因為公鑰太長了(130字元串或66字元串)。地址長度為25位元組,轉為base58編碼後,為34或35個字元。base58是類似base64的編碼,但去掉了易引起視覺混淆的字元,又在地址末尾添加了4個位元組校驗位,保障在人們交換個別字元錯誤時,也能夠因地址校驗失敗而制止了誤操作。
由於存在公鑰有兩種形式,那麼一個公鑰便對應兩個地址。這兩個地址都可由同一私鑰簽署交易。
公鑰生成地址的演算法:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)1234
下圖是非壓縮公鑰生成地址的過程:
對於壓縮公鑰生成地址時,則只取公鑰的X部分即可。
推導關系
三者推導關系:私鑰
公鑰
兩個地址。過程均不可逆。擁有私鑰便擁有一切,但通常為了方便,會把對應的公鑰、地址也存儲起來。
交易
比特幣的交易(Transation,縮寫Tx),並不是通常意義的桐散交易,例如一手交錢一手交貨,而是轉賬。交易由N個輸入和M個輸出兩部分組成。交易的每個輸入便是前向交易的某個輸出,那麼追蹤到源頭,必然出現一個沒有輸入的交易,此類交易稱為CoinBase Tx。CoinBase類備沒交易是獎勵挖礦者而產生的交易,該交易總是位於Block塊的第一筆。
擁有一個輸入與輸出的Tx數據:
Input:
Previous tx:
Index: 0
scriptSig:
241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG12345678910
一旦某個Tx的第N個輸出成為另一個Tx的輸入,那麼該筆比特幣即為已花費。每個交易有唯一Hash字元串來標識,通過對交易數據做兩次SHA256哈希運算而來:
Tx Hash ID = SHA256(SHA256(Tx Data))1
礦工費
礦工費(Transaction Fee)是鼓勵礦工將Tx打包進Block的激勵報酬。計算一筆交易的礦工費:
Transaction Fee = SUM(Inputs amount) - SUM(Outputs amount)1
每筆Tx的礦工費必然大於等於零,否則該筆Tx即為非法,不會被網路接收。
數據塊
數據塊(Block)是存儲Block Meta與Tx的地方。Block的第一筆Tx總是CoinBase Tx,因此Block中的交易數量總是大於等於1,隨後是這段時間內網路廣播出來的Tx。
找到合適的Block是一件非常困難的事情,需要通過大量的數學計算才能發現,該計算過程稱為「挖礦」。首個發現者,會得到一些比特幣作為獎勵。
數據鏈
多個Block連接起來成為數據鏈(Block Chain)。
為了引入容錯與競爭機制,比特幣系統允許Block Chain出現分叉,但每個節點總是傾向於選擇最高的、難度最大的鏈,並稱之為Best Chain,節點只認可Best Chain上的數據。
首個Block稱為Genesis Block,並設定高度為零,後續每新增一個Block,高度則遞增一。目前是不允許花費Genesis Block中的比特幣的。
每個Block中的Tx在此Block中均唯一
一個Tx通常只會在一個Block里,也可能會出現在多個Block中,但只會在Best Chain中的某一個Block出現一次
貨幣存儲
比特幣是密碼貨幣、純數字化貨幣,沒有看得見摸得著的硬幣或紙幣。一個人持有比特幣意味著:
其擁有一些地址的私鑰
這些地址是數筆交易的輸出,且未花費
所有貨幣記錄均以交易形式存儲在整個blockchain數據塊中,無交易無貨幣。貨幣不會憑空產生,也不會憑空消失。遺失了某個地址的私鑰,意味著該地址上的Tx無法簽署,無法成為下一個Tx的輸入,便認為該筆比特幣永久消失了。
貨幣發行
既然所有交易的輸入源頭都是來自CoinBase,產生CoinBase時即意味著貨幣發行。比特幣採用衰減發行,每四年產量減半,第一個四年每個block的coinbase獎勵50BTC,隨後是25btc, 12.5btc, 並最終於2140年為零,此時總量達到極限為2100萬個btc。
減半周期,嚴格來說,並不是准確的四年,而是每生成210000個block。之所以俗稱四年減半,是因為比特幣系統會根據全網算力的大小自動調整難度系統,使得大約每兩周產生2016個block,那麼四年約21萬塊block。
該函數GetBlockValue()用於計算挖得Block的獎勵值:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy = (nHeight / 210000);
return nSubsidy + nFees;
}123456789
當達到2100萬btc以後,不再有來自CoinBase的獎勵了,礦工的收入來源僅剩下交易的礦工費。此時,每個block的收入絕對值btc很低,但此時比特幣應當會非常繁榮,幣值也會相當的高,使得礦工們依然有利可圖。
杜絕多重支付
傳統貨幣存在多重支付(Double Spending)問題,典型的比如非數字時代的支票詐騙、數字時代的信用卡詐騙等。在比特幣系統里,每筆交易的確認均需要得到全網廣播,並收錄進Block後才能得到真正確認。每筆錢的花銷,均需要檢測上次輸入交易的狀態。數據是帶時間戳的、公開的,BlockChain由巨大的算力保障其安全性。所以比特幣系統將貨幣的多重支付的風險極大降低,幾近於零。通過等待多個Block確認,更是從概率上降低至零。一般得到6個確認後,可認為非常安全。但對於能影響你人生的重大支付,建議等待20~30個確認。
匿名性
任何人均可以輕易生成大量的私鑰、公鑰、地址。地址本身是匿名的,通過多個地址交易可進一步提高匿名性。但該匿名性並不像媒體宣傳的那樣,是某種程度上的匿名。因為比特幣的交易數據是公開的,所以任何一筆資金的流向均是可以追蹤的。
不了解比特幣的人為它的匿名性產生一些擔憂,比如擔心更利於從事非法業務;了解比特幣的人卻因為它的偽匿名性而苦惱。傳統貨幣在消費中也是匿名的,且是法律保障的,大部分國家都不允許個人塗畫紙幣。
地址本身是匿名的,但你可以通過地址對應的私鑰簽名消息來向公眾證明你擁有某個比特幣地址。
其他名詞
哈希
哈希(Hash)是一種函數,將一個數映射到另一個集合當中。不同的哈希函數映射的空間不同,反映到計算機上就是生成的值長度不一樣。同一個哈希函數,相同的輸入必然是相同的輸出,但同一個輸出卻可能有不同的輸入,這種情況稱為哈希碰撞。
常見的哈希函數有CRC32, MD5, SHA1, SHA-256, SHA-512, RIPEMD-160等,哈希函數在計算中有著非常廣泛的用途。比特幣里主要採用的是SHA-256和RIPEMD-160。
腦錢包紙錢包
前面提到過的腦錢包與紙錢包,這其實不算是錢包的分類,只是生成、存儲密鑰的方式而已。腦錢包屬於迷你私鑰的產物。腦錢包就是記在腦袋裡的密鑰,紙錢包就是列印到紙上的密鑰,僅此而已。
有同學提到過,以一個計算機文件作為輸入,例如一個數MB大小的照片,通過某種Hash運算後得到私鑰的方法。這個方案的安全性還是不錯的,同時可以防止盜私鑰木馬根據特徵掃描私鑰。文本形式存儲私鑰是有特徵的,而一個照片文件卻難以察覺,即使放在雲盤等第三方存儲空間中都是安全的。
『陸』 比特幣什麼時候會挖完
預計2140年可以挖完,總計2100萬枚。
根據比特幣的相關文獻,在2140年,會產出2100個比特幣,並不再增長。根據比特幣的原理,在經歷33次減半期後,每區塊的挖礦產出將達到0.58聰,小於最小單位一聰。而每次減半的間隔是210000區塊,上述文獻給出的全部產出時間(2140年)是由每區塊產出時間10分鍾推算出來的。(210000*10/60/24/365=3.9954年*33=132年,從比特幣產生的2008年起,132年之後即是2140年)。
但是,上述推算方法所使用的「每區塊產出時間為10分鍾」是一個理想狀態,這個假設僅在全網算力和難度不發生改變的情況下成立。查閱比特幣區塊鏈,不難發現,比特幣的全網算力長期處於增長狀態,挖礦難度也隨之增漲。於是,不難得出,上述推算不成立,有巨大誤差。上述方法的注意缺陷是,無法准確地預測比特幣全網算力的變化,無法准確地預測比特幣的開采速度。上述計算方法所使用的11.3天的數據,僅是從2013年5月2014年4月5日的平均值,代表性有待商榷。大家可以綜合大數據分析結果和礦機生產情況等建立更准確的數學模型。
『柒』 什麼是爆塊/報塊
比特幣協議規定全網每10分鍾會產生1個區塊,礦工完成計算任務,發現新的區塊後,會獲得約12.5個比特幣的獎勵,發現新區塊又被稱為爆塊或者報塊。
『捌』 比特幣挖礦的難度和算力
難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個HASH值的困難程度。
difficulty = difficulty_1_target / current_target
difficulty_1_target 的長度為256bit, 前32位為0, 後面全部為1 ,一般顯示為HASH值:, difficulty_1_target 表示btc網路最初的目標HASH。 current_target 是當前塊的目標HASH,先經過壓縮然後存儲在區塊中,區塊的HASH值必須小於給定的目標HASH, 區塊才成立。
例如:如果區塊中存儲的壓縮目標HASH為 0x1b0404cb , 那麼未經壓縮的十六進制HASH為
所以,目標HASH為0x1b0404cb時, 難度為:
比特幣的挖礦的過程其實是通過隨機的hash碰撞,找到一個解 nonce ,使得 塊hash 小於 目標HASH 值。 而一個礦機每秒鍾能做多少次hash碰撞, 就是其「算力」的代表, 單位寫成 hash/s 或者 H/s
算力單位:
比特幣系統的難度是動態調整的, 每挖 2016 個塊便會做出一次調整, 調整的依據是前面2016個塊的出塊時間, 如果前一個周期平均出塊時間小於10分鍾,便會加大難度, 大於10分鍾,則減小難度,目的是為了保證系統穩定的每過 10分鍾 產出一個塊,所以難度調整的時間大概是2周(2016 * 10 分鍾)
全網算力是btc網路中參與競爭挖礦的所有礦機的算力總和。當前難度周期全網算力會影響下一個周期的難度調整, 如果全網算力增加,挖礦難度增大,單台礦機固定時間的產出就會減少。目前全網算力大概是24.42EH/s, 一台螞蟻S9礦機的算力大概是14TH/s
那麼, 已知當前全網算力,下一個周期難度將如何調整呢?
根據公式:
因為出塊時間要穩定在10分鍾, 也就是600s:
那麼,在3.46e+12的難度下, 一台算力為14TH/s的礦機平均要花多長時間才能出一個塊呢?
根據公式:
有:
結果大概是12270天
『玖』 比特幣機制研究
現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。
假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣 。
如下圖所示:
為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:
比特幣中每一筆交易都會有手續費,手續費會給記賬者
記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:
要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。
假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?
口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:
這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。
書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:
可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。
在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:
所以之前的區塊就變成了這樣:
這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。
如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。
首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:
這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。
此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
PoW其實在比特幣中是做了以下的三件事情。
這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。
有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)
也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。
綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。
默克爾樹的概念其實很簡單,如圖所示
這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。
區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題
將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:
簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。
UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:
UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:
『拾』 比特幣如何算出來的
要想了解bitcoin的技術原理,首先需要了解兩個重要的密碼技術: HASH碼:將一個長字元串轉換成固定長度的字元串,並且其轉換不可逆,即不太可能從HASH碼猜出原字元串。bitcoin協議里使用的主要是SHA256。
公鑰體系:對應一個公鑰和私鑰,在應用中自己保留私鑰,並公開公鑰。當甲向乙傳遞信息時,可使用甲的私鑰加密信息,乙可用甲的公鑰進行解密,這樣可確保第三方無法冒充甲發送信息;同時,甲向乙傳遞信息時,用乙的公鑰加密後發給乙,乙再用自己的私鑰進行解密,這樣可確保第三者無法偷聽兩人之間的通信。最常見的公鑰體系為RSA,但bitcoin協議里使用的是lliptic Curve Digital Signature Algorithm。 和現金、銀行賬戶的區別? bitcoin為電子貨幣,單位為BTC。在這篇文章里也用來指代整個bitcoin系統。 和在銀行開立賬戶一樣,bitcoin里的對應概念為地址。每個人都可以有1個或若干個bitcoin地址,該地址用來付賬和收錢。每個地址都是一串以1開頭的字元串,比如我有兩個bitcoin賬戶,和。一個bitcoin賬戶由一對公鑰和私鑰唯一確定,要保存賬戶,只需要保存好私鑰文件即可。 和銀行賬戶不一樣的地方在於,銀行會保存所有的交易記錄和維護各個賬戶的賬面余額,而bitcoin的交易記錄則由整個P2P網路通過事先約定的協議共同維護。 我的賬戶地址里到底有多少錢? 雖然使用bitcoin的軟體可以看到當前賬戶的余額,但和銀行不一樣,並沒有一個地方維護每個地址的賬面余額。它只能通過所有歷史交易記錄去實時推算賬戶余額。 我如何付賬? 當我從地址A向對方的地址B付賬時,付賬額為e,此時雙方將向各個網路節點公告交易信息,告訴地址A向地址B付賬,付賬額為e。為了防止有第三方偽造該交易信息,該交易信息將使用地址A的私鑰進行加密,此時接受到該交易信息的網路節點可以使用地址A的公鑰進行驗證該交易信息的確由A發出。當然交易軟體會幫我們做這些事情,我們只需要在軟體中輸入相關參數即可。 網路節點後收到交易信息後會做什麼? 這個是整個bitcoin系統里最重要的部分,需要詳細闡述。為了簡單起見,這里只使用目前已經實現的bitcoin協議,在當前版本中,每個網路節點都會通過同步保存所有的交易信息。 歷史上發生過的所有交易信息分為兩類,一類為"驗證過"的交易信息,即已經被驗證過的交易信息,它保存在一連串的「blocks」裡面。每個"block"的信息為前一個"bock"的ID(每個block的ID為該block的HASH碼的HASH碼)和新增的交易信息(參見一個實際的block)。另外一類指那些還"未驗證"的交易信息,上面剛剛付賬的交易信息就屬於此類。 當一個網路節點接收到新的未驗證的交易信息之後(可能不止一條),由於該節點保存了歷史上所有的交易信息,它可以推算中在當時每個地址的賬面余額,從而可以推算出該交易信息是否有效,即付款的賬戶里是否有足夠余額。在剔除掉無效的交易信息後,它首先取出最後一個"block"的ID,然後將這些未驗證的交易信息和該ID組合在一起,再加上一個驗證碼,形成一個新的「block」。 上面構建一個新的block需要大量的計算工作,因為它需要計算驗證碼,使得上面的組合成為一個block,即該block的HASH碼的HASH碼的前若干位為1。目前需要前13位為1(大致如此,不確定具體方式),此意味著如果通過枚舉法生成block的話,平均枚舉次數為16^13次。使用CPU資源生成block被稱為「挖金礦」,因為生產該block將得到一定的獎勵,該獎勵信息已經被包含在這個block裡面。 當一個網路節點生成一個新的block時,它將廣播給其它的網路節點。但這個網路block並不一定會被網路接受,因為有可能有別的網路節點更早生產出了block,只有最早產生的那個block或者後續block最多的那個block有效,其餘block不再作為下一個block的初始block。 對方如何確認支付成功? 當該筆支付信息分發到網路節點後,網路節點開始計算該交易是否有效(即賬戶余額是否足夠支付),並試圖生成包含該筆交易信息的blocks。當累計有6個blocks(1個直接blocks和5個後續blocks)包含該筆交易信息時,該交易信息被認為「驗證過」,從而該交易被正式確認,對方可確認支付成功。 一個可能的問題為,我將地址A裡面的余額都支付給地址B,同時又支付給地址C,如果只驗證單比交易都是有效的。此時,我的作弊的方式為在真相大白之前產生6個僅包括B的block發給B,以及產生6個僅包含C的block發給C。由於我產生block所需要的CPU時間非常長,與全網路相比,我這樣作弊成功的概率微乎其微。 網路節點生產block的動機是什麼? 從上面描述可以看出,為了讓交易信息有效,需要網路節點生成1個和5個後續block包含該交易信息,並且這樣的block生成非常耗費CPU。那怎麼樣讓其它網路節點盡快幫忙生產block呢?答案很簡單,協議規定對生產出block的地址獎勵BTC,以及交易雙方承諾的手續費。目前生產出一個block的獎勵為50BTC,未來每隔四年減半,比如2013年到2016年之間獎勵為25BTC。 交易是匿名的嗎? 是,也不是。所有BITCOIN的交易都是可見的,我們可以查到每個賬戶的所有交易記錄,比如我的。但與銀行貨幣體系不一樣的地方在於,每個人的賬戶本身是匿名的,並且每個人可以開很多個賬戶。總的說來,所謂的匿名性沒有宣稱的那麼好。 但bitcoin用來做黑市交易的還有一個好處,它無法凍結。即便警方追蹤到了某個bitcoin地址,除非根據網路地址追蹤到交易所使用的電腦,否則還是毫無辦法。 如何保證bitcoin不貶值? 一般來說,在交易活動相當的情況下,貨幣的價值反比於貨幣的發行量。不像傳統貨幣市場,央行可以決定貨幣發行量,bitcoin里沒有一個中央的發行機構。只有通過生產block,才能獲得一定數量的BTC貨幣。所以bitcoin貨幣新增量決定於: 1、生產block的速度:bitcoin的協議里規定了生產block的難度固定在平均2016個每兩個星期,大約10分鍾生產一個。CPU速度每18個月速度加倍的摩爾定律,並不會加快生產block的速度。 2、生產block的獎勵數量:目前每生產一個block獎勵50BTC,每四年減半,2013年開始獎勵25BTC,2017年開始獎勵額為12.5BTC。 綜合上面兩個因素,bitcoin貨幣發行速度並不由網路節點中任何單個節點所控制,其協議使得貨幣的存量是事先已知的,並且最高存量只有2100萬BTC