區塊鏈技術學習筆記

2021-08-02 14:52:59 字數 2207 閱讀 7185

為了方便理解,先插個話題。做伺服器端開發的程式設計師,都對zookeeper不陌生,我們解決分布式acp問題時,尋找一致性解決方案時都會想到它。zookeeper實際使用了paxos的簡化版演算法(本文不展開,請參考我之前寫過的兩篇文章:paxos分布式一致性演算法–講述諸葛亮的反穿越 以及paxos演算法如何容錯的–講述五虎將的實踐)。想搞明白位元幣(成於區塊鏈技術)的演算法,應先弄明白paxos演算法(便於對比),目前商用的方案中,我們都假定伺服器內網是不能被攻破的,所以,我們主要解決的是網路傳輸的不可靠,包括丟包、重發、延遲等問題,以及服務程序的bug導致的服務宕機、重啟等。如果內網被攻破,黑客惡意的在某個節點(伺服器)偽造網路包,向正常節點傳送有問題的資料報,這種場景通常是不考慮的。顯然這很合理,企業內網間如果還做大量的安全驗證,效能消耗就太大了,基於成本使得商業目標幾乎無法達成。

而公有區塊鏈則是不同的,比如目前最成功的位元幣,它使用了pow工作量證明演算法,這個演算法允許網路中存在拜占庭節點!也就是說,網路中即使存在作惡的節點,只要這些作惡的節點小於總節點計算能力的50%,就還能保持一致性!當然這個一致性做得也不怎麼樣,可能存在分叉好一段時間(1小時甚至更高,其一致性的大小只能獲得概率),而且資料的回滾非常糟糕。

2、區塊鏈技術的另乙個核心特點是全量帳本。即,每乙個節點都保持著全網資料!即,每個節點、每台電腦上都儲存著所有的資料。多麼恐怖的代價!每台電腦的儲存容量是有限的,以網路中最差的那台電腦容量為限制,幾十個g就差不多了。儲存的浪費是很驚人的!所以,別指望非數字帳戶的核心資料也能放到區塊鏈網路上,或者僅放個索引,指向現在的網路儲存設施。

當然,區塊鏈的核心優勢也是全量帳本,最好的也是最壞的!因為,每個節點都維護全量資料,所以,所有節點本質上都是對等的!即,或許這個區塊鏈網路中既有銀聯的超級伺服器,也有個人開發者的公有雲小主機,但大家的資料是相同的,誰也不能說資料出問題了必須以我的為準!

因此,全量帳本解決了社會信任問題!特別對於金融**鏈來說,原本的中心化服務企業可能大家都很難接受,而基於區塊鏈技術後,小企業的顧慮沒了,大企業考慮做大這個聯盟可能更有利於談判從而做大蛋糕!

全量帳本還帶來乙個***,就是資料透明,沒有隱私!!!這對很多人來說是不可接受的。每乙個節點都有所有人的資料,你敢把你何時何地消費了多少錢放在上面嗎???

3、區塊鏈技術還有個特點,就是所有的交易記錄都是不可修改、不可刪除的!這是其演算法決定的。所以,這對於公益、扶貧、反腐等是很有吸引力的,螞蟻金服目前也只敢在公益上用用區塊鏈技術。

4、區塊鏈技術底層使用了p2p網路技術,大量使用反對稱加密技術(相信程式設計師們沒有不知道ssl的)來驗證基於公網的訊息可靠性,基於雜湊演算法實現了如快速驗證資料未被篡改等諸多特性(pow的工作量證明演算法,核心就是雜湊演算法)。基於多種分布式網路的一致性演算法。所以,區塊鏈使用了一堆老技術,實現了新的理念!特別是對公有鏈和聯盟鏈,這種思維方式打造了技術上的社會信任體系!(私有鏈從這個角度來說沒有任何意義!)

5、位元幣的火爆原因,我認為,除了區塊鏈技術本身的以上特性外,更多的是它的激勵機制:挖礦獎勵。即,確認出全網前1個小時左右所有交易的節點獲取50位元幣獎勵(由於位元幣總數固定,所以獎勵額持續下降中)。這利用了人性的特點,而只要越來越多的人認可這個想象共同體,其價值就會出現。

當然,pow演算法才是程式設計師們最感興趣的。所謂工作量證明演算法,就是全網的所有節點(電腦),都在拼命的消耗自己的計算力(其實就是消耗錢,包括買機器、顯示卡的錢,電費、房屋租金等等),以此證明我是樂意合作的。很難懂?

其實很簡單:第一,所謂消耗計算力,就是挖礦,所有節點都在不停的挖礦,拼命的用cpu和gpu在運算雜湊值,試圖搶得新位元幣獎勵。

第二,為什麼消耗了計算力,就能證明我是樂意合作的呢?

先說乙個心理學上的囚徒困境。想必大家港產黑幫片看得多吧?警察抓到2個相關的嫌犯時,最怕他們通過其他人、手機等裝置互相聯絡上。如果聯絡不上,根據囚徒困境原理,雙方都會基於為自己獲得最大利益從而出賣對方。但是,一旦他們互相間可以溝通時,其中乙個多半會通過描述一種對他非常不利的場景(大家可以想象,比如說:如果我出賣了你,一定會***x。當然通過言語沒有效果,都會描述一種客觀事實),向另乙個嫌犯證明自己不會背叛他。接著他們就建立了一種信任關係,警察就很難有成果。

所以,先證明對自己不利,將有利於大家可以合作,建立起信任關係。而pow就是認為,51%的計算力都來自於嚮往合作的好的節點,少數服從多數。而所有節點都在消耗計算力,就是在證明自己是願意付出的。

所以,一旦出現一家機構掌握了位元幣全網51%的計算能力,結果就是災難性的!

6、聯盟鏈目前看是區塊鏈技術商用的最好方式。特別是跨國銀行間的匯款等操作!信任問題,在跨越國家、法律、文化等多領域時才會劇烈地凸顯出來,區塊鏈的用武之地!

區塊鏈技術學習筆記

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

《區塊鏈技術指南》筆記

對於多個服務節點,給定一系列操作,在約定協議的保障下,使得它們對處理結果達成 某種程度 的協同 傳統傳統分布式系統中討論一致性,往往是指在外部任意發起請求 如向多個節點傳送不同請求 的情況下,確保系統內大部分節點實際處理請求序列的一致,即對請求進行全域性排序 實際挑戰 節點間網路通訊不完全可靠 節點...

區塊鏈技術學習指引

本文會一直更新,建議感興趣的同學加入收藏夾。給迷失在如何學習區塊鏈技術的同學乙個指引,區塊鏈技術是隨位元幣誕生,因此要搞明白區塊鏈技術,應該先了解下位元幣。但區塊鏈技術不單應用於位元幣,還有非常多的現實應用場景,想做區塊鏈應用開發,可進一步閱讀以太坊系列。如果你是還不知位元幣是什麼,那就看看位元幣是...