NO IMAGE

很早就想寫一寫區塊鏈(Blockchain)技術,作為比特幣等一系列應用背後最核心的技術,它的前景充滿了各種可能和挑戰。最近身邊不少人感興趣,正好總結下。

起源和背景

相比區塊鏈,更多人都聽說過比特幣。其實最早 08 年的時候比特幣就已經問世了,但真正流行起來還是在 10 年後的事情。其官方網站是 bitcion。發明人(傳言代號為中本村的澳大利亞人)到目前為止尚無法確認身份,但是一個團隊的概率較大。

比特幣是一種概念金融貨幣。主要是希望解決已有金融貨幣系統的幾個問題:

  • 被掌控在發行機構手中;
  • 自身的價值無法保證;
  • 無法匿名化交易。

搞金融的人都能想到,實際上,要設計這麼一套系統,最關鍵的還是一套強大的交易記錄系統和中立的貨幣發行機制。

首先,這個系統要能中立、公正、無法被篡改地記錄發生過的每一筆交易。對比已有的銀行系統,可以看出,現在的銀行機制作為第三方,是有代價的提供了這樣的服務,即如果交易雙方都相信銀行的資料庫,那麼就沒問題了。可是如果是世界範圍內流通的貨幣呢?有哪個銀行能讓大家完全信任它?於是,需要有一套分散式的資料庫,在世界範圍內都可以訪問,而且都無法去控制。這也就是區塊鏈設計的目的。

貨幣的發行則是通過比特幣的協議來規定的,總量必須控制,發行速度會自動調整。既然總量一定,那麼單個比特幣的價值肯定會隨著承認比特幣的實體經濟的加入而水漲船高。發行速度的調整則避免了通脹或者滯漲的出現。

原理

區塊鏈的基本原理其實十分簡單。

首先假設存在一個 P2P 的資料庫(這方面的技術相對成熟),剩下來就是大家如何決策去新增資料上來。只允許新增、不允許刪除避免了作偽的可能性。這個資料庫的結構是一個鏈,由一個個塊組成,這也是其名字的來源。新的資料要加入,必須作為一個新的塊來加入。而這個塊能否加入,可以通過一些手段來檢驗出來。

具體到比特幣如何使用了區塊鏈技術。比特幣將每十分鐘內所有的交易都打包在一起,這些資訊組成一個塊。然後,網路中所有的成員都可以試圖來找到一個合法的塊(比如基於當前的塊的資訊,加上時間、id,加上某些其它有用資訊等),然後進行一些 hash 計算,並且找到的結果還得滿足一定條件(比如小於某個值)。一旦算出來就可以進行全網廣播,大家拿到這個算出來的結果,進行正向驗證,發現確實符合條件了,就承認你算出來了。

因為算出來的概率要從數學上進行保證,比如每十分鐘內大概就剛好算出來一個。所以保證了區塊鏈每十分鐘增加一個塊。算出來的這個人將獲取得到這個時間內所有交易產生的管理費和協議固定發放的獎勵費(目前是 25 比特幣)。也即俗稱的挖礦。

挖礦

五年前,挖礦還是一個很有前途的行業。但是現在,建議還是不要考慮了,因為從概率上說,由於當前參與挖礦的計算力實在過於龐大(已經超出了大部分的超算中心),獲得比特幣的收益已經眼看要 cover 不住電費了。特別那些想著用雲端計算虛機來挖礦的想法,意義確實不大了。

從普通的 CPU、到後來的 GPU、到後來的 asic 礦機、到現在的 asic 資料中心。短短數間,比特幣礦機的技術走完了過去的計算機的歷程,並且還頗有創新之處。確實是哪裡有利益,哪裡的技術就飛速發展!

有哥們當年去內蒙古用近乎白給的價格租了當地的機房,打著創業幌子搞挖礦,不知道今日身家幾何!

很自然的,有人會想到,如果我有很強大的計算力,所有的塊我都算出來了,那是不是就能破壞比特幣網路。確實如此,基本上拿到 1/3 的計算力,位元別網路就存在被破壞的風險了;拿到 1/2,概率上就掌控整個網路了。

想想看,你可以一直不承認別人的計算結果,只承認自己的,從概率上風險是很大的。這裡,要區別分散式系統裡面的拜占庭將軍問題,這裡完全是概率意義,並非數學證明。

那麼有沒有辦法防護呢?

除了儘量避免計算力放到同一個組織手裡,沒太好的辦法,這是目前 pow (proof of work)的協議規定的。

也有人覺得為了算一個塊,大部分計算力(特別到最後根本沒算出來的)其實都浪費了。

有人提出用所謂的 pos,即大節點作為多個節點代理人的模式來節約計算力。那怎麼選大節點?又容易導致“富則越富”問題。呵呵,這就是完全民主 vs 選舉人制度嘛。

個人認為,無論 pow 還是 pos,都無法解決問題。要從根本上解決,得引入隨機代理人制度,通過演算法在某段時間內只讓部分節點參加計算,然後要發放一部分“普世獎勵”給所有線上節點。

安全

既然區塊鏈一個可能的應用前景是金融系統,那麼安全自然是討論最多、挑戰最多的話題。區塊鏈的實現是開源的,基於了現有的成熟的密碼學演算法。但這是否就能確保其安全呢?

未必。有如下幾個方面是很難逃避的。

首先是,攻擊區塊鏈系統是否是犯罪?攻擊銀行系統是要承擔後果的。但是目前還沒有任何法律保護區塊鏈以及基於它的實現。

其次是軟體實現的潛在漏洞是無法避免的。考慮到使用了幾十年的 openssl 還帶著那麼低階的漏洞(heart bleeding),而且是原始碼在大家眼皮底下。這背後曾經發生過啥,讓人遐想連篇。金融系統自身到底有沒有必要開源,也值得商榷。

另外,區塊鏈所有交易都是公開可見的。搞大資料的人聽了是不是開始激動起來了,呵呵,這裡面能分析的東西還真不少,而且規模夠大、影響力夠大……

還有就是作為一套完全的分散式系統,區塊鏈缺乏足夠的調整機制,一旦執行起來,真的無人能控制。即使是讓它變得更公平、更完善的修改,只要有部分既得利益者合起來反對,那就無法加入進去。這讓比特幣本身的價值也蒙上了一層陰影。

展望

無論如何,區塊鏈確實是第一個試圖做公開、中立、匿名化的分散式資料庫的系統。它的出現,讓大家意識到除了網際網路這樣的基礎設施外,資料庫系統也可以成為公共基礎設施。而且像比特幣這樣的例子,給與了區塊鏈更多的遐想空間。如果交易無法造價,資訊無法造價,世界是不是會多了一些演算法來保證的公平呢?這是又一次用技術給人類發展帶來進步的福利。

不提這種去中心化的金融系統是否現實(個人認為至少 5-10 年後的事情了),在跨國交易、跨組織合作日益頻繁的今天,區塊鏈、比特幣都是很好的一些嘗試和參考。

進一步的,比特幣只是基於區塊鏈技術的一種應用(而且是直接基於區塊鏈開發),利用區塊鏈技術能否還有其他應用呢?Ethereum 就試圖做類似的事情,希望基於區塊鏈再做一層平臺層,讓別人基於平臺開發應用變得更簡單。

另外,區塊鏈本身可以作為分散式儲存,也自然可以作為分散式計算引擎。可以想象,整個加入叢集的裝置都是計算引擎,大家通過付費來使用計算力,是不是就有點普適計算的意味了。

轉載請註明:http://blog.csdn.net/yeasy/article/details/50533451