1. 程式人生 > >談談區塊鏈的理解 -- 讀《區塊鏈:技術驅動金融》

談談區塊鏈的理解 -- 讀《區塊鏈:技術驅動金融》

它的 rdquo 2017年 如何 book 算法 處理 解決 douban

今年網上關於數字貨幣和區塊鏈的文章和討論汗牛充棟,但我一直狐疑的是,有說的那麽厲害嗎,特別是看到“重新定義了金融”,“重新定義世界”,“顛覆金融業”,“重建信用機制”。有些人的誇大之聲像賣保健品的宣傳一樣“能治百病”。正因為對這些的質疑才想找書來看。這本書雖然名字裏面帶有金融(英文名為Bitcoin and Cryptocurrency Technologies),實則是一本很實在的講解比特幣和區塊鏈技術的書。而且作者也沒有描繪區塊鏈的“繪圖偉業”。所以如果你對此有興趣,真推薦讀一讀這本。

技術分享圖片

說到比特幣,首先讓人想到的就是那讓人咋舌的暴漲速度,中本聰從2007年5月份開始編寫比特幣,09年開始發行,到2017年底,比特幣8年漲了1000萬倍。單價最高高達近2萬美元。但隨後一路下挫,到今天還是6400美元左右。2萬個比特幣買24美元披薩的故事讓人們津津樂道,多少人買了比特幣卻因為忘記了私鑰或者U盤壞了而扼腕痛惜。正是這些個故事不斷的發酵,推波助瀾,催生了很多新的數字貨幣和前赴後繼的韭菜。而說到區塊鏈,卻讓人皺起了眉頭。特別是公眾號的文章裏面不斷的甩出“去中心化”,“共識機制”,“智能合約”,或者是“挖礦”,“公鑰、私鑰”時,讓人有種不明覺厲的感覺。講區塊鏈不得不說比特幣,畢竟這是區塊鏈目前應用的最成功案例。

01 數字貨幣是旁氏騙局嗎?

巴菲特還有郎鹹平都有說過數字貨幣(ICO)是龐氏騙局,這個問題要從貨幣的本質來看,什麽是貨幣,亞當斯密在《國富論》中提出:“貨幣是流動資本的一部分,是商業的上大工具,是貨物借以流通的手段”,白話點來說就是只要大家達成共識,選定某一種物品作為媒介就可以來買賣。哪怕是一塊石頭,只要大家都認可,它就能用來交易,達成共識的人越多,它的流通價值越高。現在太平洋中雅普島居民就把下圖這種石頭當貨幣。我們偉大的祖先使用了貝殼,金銀銅鐵鑄幣,到交子(四川缺銅礦,鑄幣是鐵,背著幾十貫錢有幾十斤重走蜀道,所以宋朝出現了紙幣)。

技術分享圖片

到現在我們出門不帶錢包,錢也不過是賬戶裏面的一個數字。像比特幣這樣的數字貨幣,使用者已達千萬,有很多銀行或者商家接受,交易量也大,它實質上就是一種貨幣,只是它不屬於某個國家,沒有法律和國家信用的背書;什麽是龐氏騙局呢,就是把一個沒價值或者價值很低的東西吹噓的天花爛墜,好賣給下一個接手的以從中獲利,這是那些賣保健藥騙老人的慣用伎倆。但是要註意的是,因為比特幣的火爆,新起了很多新的數字貨幣,光2015年發行的新幣都有八百多種,坊間稱發幣最難的就是取名字。而且90%以上就是直接用的比特幣的源碼,沒有任何創新,發行方鼓吹之後,拉高出貨,收割韭菜,那就是名副其實的龐氏騙局。

這裏還想講一下虛擬貨幣和法幣的區別,法幣由各國政府發行,依據國家的生產總值,有國家信用和稅收的背書,是宏觀經濟的調控的重要手段,比如故意造成輕微的通貨膨脹(多印錢)來刺激經濟,讓你覺得錢拿在手裏還不如花了它,但數字貨幣不受任何中央政府控制,而且數量都是既定的,但可以作為各種法幣的中介。所以法幣和數字貨幣有各自不同的市場。

02 什麽是區塊鏈,比特幣為什麽需要它

中本聰打造比特幣的一個初衷就是想讓比特幣接近現金體系,現金有什麽好處?第一點就是確保了匿名性,我們拿錢到商店買東西,只要錢是真的,商家不會管你是誰。但如果你用信用卡或者支付寶,店主就能知道你的信息。第二點就是支持線下交易,不需要第三方批準。如果你的錢在銀行,可能因為某種原因被凍結,比如賈躍亭。要做到這兩點,前者就需要一套合理的加密技術,後者就需要去中心化,支持點對點交易,擺脫對中央政府、企業或者個人的控制。

而區塊鏈是中本聰為了解決比特幣去中心化而發明的,網上普遍解讀成一種分布式的數據庫(或賬本),它的數據結構如下所示。每一個區塊的內部通過二叉樹保存了相關交易記錄。每個區塊通過一個哈希值指向上一個區塊的地址,形成區塊鏈。那麽到底是怎麽做到去中心化的呢?

技術分享圖片

思考這點,我們就要考慮三個問題:誰負責這些數據的存儲?誰決定每一筆交易有效?誰負責創建新的比特幣?

如果這些數據的存儲和交易由某一個組織或者個人控制,那麽就存在作弊的可能,而且容易被攻破,為杜絕這樣的事情發生,對於第一個問題,中本聰讓所有的區塊鏈數據存儲在每一個礦工節點上,大家都保留一份完整的數據,新的節點加入的時候,首先就是通過連接到另一個最近的節點下載最新的數據。到2015年底這部分數據已經有五十G了。這樣的話,數據一旦寫入區塊,將是不可逆的,因為你無法去修改所有的數據,況且你修改一個節點的數據會導致它的哈希值發送變化,原本指向它的區塊也要修改;

對於第二個問題,一筆交易有效,意味著交易被寫入了區塊,且這個區塊最終加入的主鏈。誰負責這件事呢,總不需要所有的節點來參與,因為全世界不同的地方,有著不同的延遲,有的上線有的不上線,而且怎麽保證節點就願意正確的幹這件事呢?這就涉及到一個共識機制,就像拋繡球一樣,比特幣每隔十分鐘公布一個隨機數,哪個節點產生的哈希值和這個隨機數一致(接住了繡球),那麽這個幸運的節點就被選中創建這個區塊。為什麽說它是幸運的呢,因為比特幣系統給予這個節點一定數量的比特幣作為獎勵。最開始每創建一個區塊有50個比特幣獎勵,現在是25個,基本上每四年減少一半,上限是2100萬個比特幣,理論上到2140年這種獎勵就會發完。這個拋繡球的過程就是所謂的工作量證明PoW。專門從事計算隨機數的機器叫礦機,專門為此掏幣的人就叫礦工,礦機計算隨機數的過程就叫挖礦。這也解釋了第三個問題。誠然實際算法實現的過程比我講的要復雜。

技術分享圖片

這就是比特幣實現去中心化的方式,沒有任何人能決定誰可以提交下一個區塊。還想說的一點是,區塊鏈的交易記錄都是公開的,打個比方,如果有一家公司用比特幣發工資的話,別人可以通過你的公鑰查到你收到的工資。如果可能的話,這一點看上去比較適合做慈善或者記錄財政開支~

03 挖礦這件事怎麽看

首先要說的是挖礦是一件很難的事情,在2014年年底,產生一個區塊平均要做10^20次哈希運算。換言之,目標區域僅僅是整個輸出範圍的1/10^20。這是超大的計算量,普通個人電腦無法勝任,打個比方,假如你是個炮兵,礦機算出的哈希值就是炮彈,哈希函數就是大炮,你想擊中的目標,比如一個指揮所,它肯定在你的射程範圍內,但非常小,而且其實根本不知道在哪裏(哈希值的計算是無序的)。擊中目標的唯一辦法是狂轟濫炸,這就是比特幣工作量的概念,炸的越多,擊中的概率越高。如果這個指揮所的目標區域是轟擊區域1%大的話,你大概平均要發出100枚炮彈才可能擊中目標,而且越往後越難。正因此導致了大量能源(電力)的和算力的浪費。這也是比特幣被人詬病的問題之一。

但是目前沒有更好的辦法,如果沒有挖礦的過程如何保證去中心化的實現?就當作是比特幣產生必須付出的代價吧。所以誰想獲得更多的比特幣,那他就得擁有相當可觀的算力。這就催生了各種礦機的誕生。甚至形成了礦池這樣的挖礦組織,散戶們一起抱團挖礦,有錢同享,按算力比例分配。

技術分享圖片

類似於淘金熱,產生了不同的礦機,一度造成市場上顯卡漲價,最後產生了專用的集成電路技術ASIC來挖礦,簡直催生了一個產業。賣阿瓦隆礦機的嘉楠耘智已經準備在香港上市了。而除了浪費電力和算力之外,我們要註意的一點是,每個區塊大小限定在1MB,每個交易大約是250字節,所以每塊最多容納420000個交易。平均每隔10分鐘,有一個礦工獲得記賬權利,所以每秒鐘只能處理7個交易,這就是比特幣網絡的交易處理能力!而支付寶在雙十一的時候峰值交易量可達25.6萬筆!所以這就像一個哲學問題,公平(民主)和效率不可兼得。

04 什麽是智能合約

智能合約是區塊鏈相關書籍和文章裏面提到很多的一個特點,其實這要從比特幣的交易機制說起,先說一個比較有意思的點,平時我們花錢,根據手裏的錢我們想花多少就花多少,而比特幣卻是要麽花光要麽不花。比如張三有5個比特幣,要轉給李四1個比特幣,張三需要一次性將1個比特幣轉給李四,其他4個再轉給自己。這麽做的目的是為了方便查最後一次的交易記錄就能知道張三到底擁有多少個比特幣,而不用去回溯所有的交易記錄。

而讀取交易記錄這些用的是Forth腳本語言,也就留出可編程的可擴展的余地。假設A在網上買東西,想要貨到付款,就可以發起這樣的一個交易,並規定,三個人中有兩個人簽名了,資金就能被提取,這三個人是A,和商家B,以及仲裁C。這個規定就是一個智能合約。其實程序員很好理解這件事,智能合約就是條件語句,因此比特幣可以實現多種場景支付。

但我想的是,平時是看條款或者合約,比特幣上得會看代碼才行,而且這個擴展性是受編程環境約束的。

05 區塊鏈應用

區塊鏈應用的討論越來越多,其實我覺得有一部分的原因是ICO投機的方式在國內被嚴格限制,導致這部分的“熱情”轉移到了區塊鏈上了。各大銀行,互聯網企業都紛紛表示加入區塊鏈的研究。其實這是很正常的一件事情,畢竟ICO掀起了這麽大的浪,金融業和互聯網出於防範也要投入精力去研究它,但這並不說明區塊鏈真的適合別的其他領域。

提及比較多領域是金融、認證、數字版權、物聯網等領域。金融業很好理解,發行代幣以及交易的過程和股票非常相似,而且股票交易有傭金,ICO交易也有手續費。似乎是任何可以數字化的東西都可以像比特幣一樣在區塊鏈上被記錄和流通。這一點貌似給了很多人想象的空間。但我想的問的是,有這個需求和必要嗎?我們可以回顧一下比特幣的區塊鏈,是通過頗有爭議的共識算法做到去中心化的,如果接下來的各種區塊鏈沒有做到這一點,而只是用了區塊鏈的結構和加密方式,這還是個中心化的系統,相當於換了一種數據庫的分布式系統。所以如果只是說使用了區塊鏈,或者說智能合約如何強大(編程也需要環境支持),而沒有一套去中心化的體系,加上現有體系並沒有多大的問題時,各種鏈恐怕難以得到社會的共識。

小結:其實很多想講還沒講完,區塊鏈誕生的時間並不久,還在不斷的發展,更多的還是要理性的去看。了解到上面的這些知識之後,我覺得區塊鏈本身並不神秘也不是有多厲害的創新,但確實提供了一種新的思路。中心化或者去中心化本身都有各自的場景,並不代表好壞。

ps:這是書山有路第27期分享閱讀書目,由@山東_可樂同學歷時一個月分享完,喜歡閱讀的朋友可以關註下下面的二維碼,我們一起去下一個探索。

談談區塊鏈的理解 -- 讀《區塊鏈:技術驅動金融》