聊聊數字貨幣的開山鼻祖—幣王:比特幣

萬幣之王-比特幣

萬丈高樓平地起。

比特幣這兩週大漲了26%。漲得太突然,讓許多人又驚呼牛市來了。甚至有大咖說:比特幣過去30天平均每天漲了100美元,難道不是牛市來了?

我想說,這不扯麼?要能這麼平均,那我還說,過去9年,比特幣就沒熊過呢,平均每天都在漲!

蠱惑“無知群眾”的信息,我們不能聽,不能聽,不能聽。

聊聊數字貨幣的開山鼻祖—幣王:比特幣

不管比特幣漲不漲,它的影響力卻在不斷擴大,越來越多人理解並認可比特幣的價值。

​理解比特幣難就難在它有一堆一般人聽都沒聽過的名詞。公匙、私匙、簽名、多重支付等。初次接觸的人,是一臉懵逼的。

​還有那啥?區塊鏈又是什麼?

聊聊數字貨幣的開山鼻祖—幣王:比特幣

所以,按照步驟,應該是這樣:​

理解區塊鏈之前先得理解比特幣,理解比特幣之前,先得理解一些基本概念。​

橢圓曲線數字簽名算法​

橢圓曲線數字簽名算法(ECDSA)是使用橢圓曲線對數字簽名算法(DSA)的模擬,該算法是構成比特幣系統的基石。

私鑰​

非公開,擁有者需安全保管。通常是由隨機算法生成的,說白了,就是一個巨大的隨機整數,256位、32字節。大小介於1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之間的數,都可以認為是一個合法的私鑰。於是,除了隨機方法外,採用特定算法由固定的輸入,得到32字節輸出的算法就可以成為得到私鑰的方法。於是,便有了迷你私鑰(Mini Privkey),原理很簡單,例如,採用SHA256的一種實現:

private key = SHA256()​

迷你私鑰存在安全問題,因為輸入集合太小,易被構造常見組合的彩虹表暴力破解,所以通常還是使用系統隨機生成的比較好,無安全隱患。

公鑰​

公鑰與私鑰是相對應的,一把私鑰可以推出唯一的公鑰,但公鑰卻無法推導出私鑰。公鑰有兩種形式:壓縮與非壓縮。​

早期比特幣均使用非壓縮公鑰,現大部分客戶端已默認使用壓縮公鑰。這個貌似是比特幣系統一個長得像feature的bug,早期人少活多代碼寫得不夠精細,openssl庫的文檔又不足夠好,導致Satoshi以為必須使用非壓縮的完整公鑰,後來大家發現其實公鑰的左右兩個32字節是有關聯的,左側(X)可以推出右側(Y)的平方值,有左側(X)就可以了。​

現在系統裡兩種方式共存,應該會一直共存下去。兩種公鑰的首個字節為標識位,壓縮為33字節,非壓縮為65字節。以0×04開頭為非壓縮,0×02/0×03開頭為壓縮公鑰,0×02/0×03的選取由右側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個字節校驗位,保障在人們交換個別字符錯誤時,也能夠因地址校驗失敗而制止了誤操作。​

由於存在公鑰有兩種形式,那麼一個公鑰便對應兩個地址。這兩個地址都可由同一私鑰簽署交易。

推導關係​

三者推導關係:私鑰 >> 公鑰 >> 兩個地址。過程均不可逆。擁有私鑰便擁有一切,但通常為了方便,會把對應的公鑰、地址也存儲起來。

交易​

比特幣的交易(Transation,縮寫Tx),並不是通常意義的交易,例如一手交錢一手交貨,而是轉賬。交易由N個輸入和M個輸出兩部分組成。交易的每個輸入便是前向交易的某個輸出,那麼追蹤到源頭,必然出現一個沒有輸入的交易,此類交易稱為CoinBase Tx。CoinBase類交易是獎勵挖礦者而產生的交易,該交易總是位於Block塊的第一筆。

礦工費​

礦工費(Transaction Fee)是鼓勵礦工將Tx打包進Block的激勵報酬。每筆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。​

當達到2100萬btc以後,不再有來自CoinBase的獎勵了,礦工的收入來源僅剩下交易的礦工費。此時,每個block的收入絕對值btc很低,但此時比特幣應當會非常繁榮,幣值也會相當的高,使得礦工們依然有利可圖。

杜絕多重支付​

傳統貨幣存在多重支付(Double Spending)問題,典型的比如非數字時代的支票詐騙、數字時代的信用卡詐騙等。在比特幣系統裡,每筆交易的確認均需要得到全網廣播,並收錄進Block後才能得到真正確認。每筆錢的花銷,均需要檢測上次輸入交易的狀態。數據是帶時間戳的、公開的,BlockChain由巨大的算力保障其安全性。所以比特幣系統將貨幣的多重支付的風險極大降低,幾近於零。通過等待多個Block確認,更是從概率上降低至零。一般得到6個確認後,可認為非常安全。但對於能影響你人生的重大支付,建議等待20~30個確認。

匿名性​

任何人均可以輕易生成大量的私鑰、公鑰、地址。地址本身是匿名的,通過多個地址交易可進一步提高匿名性。但該匿名性並不像媒體宣傳的那樣,是某種程度上的匿名。因為比特幣的交易數據是公開的,所以任何一筆資金的流向均是可以追蹤的。​

不瞭解比特幣的人為它的匿名性產生一些擔憂,比如擔心更利於從事非法業務;瞭解比特幣的人卻因為它的偽匿名性而苦惱。傳統貨幣在消費中也是匿名的,且是法律保障的,大部分國家都不允許個人塗畫紙幣。​

地址本身是匿名的,但你可以通過地址對應的私鑰簽名消息來向公眾證明你擁有某個比特幣地址。

認識學習新知識的過程,往往枯燥難耐。所以,我們才要抱團取暖,互相鼓勵。

加入哈希奇家族,一起成長和成就。


分享到:


相關文章: