萌新理解區塊鏈

  區塊鏈很火,但是之前其實一直有些雲裏霧裏,今天抽時間,認真瞭解了一下其中的原理。 

  這個是今天學習的教材,從CSDN首頁上摘取的,國外大神寫的,認真讀完很有收穫。

  https://mp.weixin.qq.com/s?__biz=MzU2MTE1NDk2Mg==&mid=2247485990&idx=1&sn=d99f22c3b8e6f41b8d06cf9f1c24c5c1&scene=21#wechat_redirect

 之前其實一直不明白,爲啥子要挖礦,花費大量電量,有些挖礦的廠子可能包下一座小電廠,進行挖礦活動。算出那幾個數字,能製造出何種實際價值。 今天讀完這篇文章後,算是有了一個大概的理解了。
首先,算出的數字本身是沒有意義的,但有意義的是,算出這個數字的過程。
礦工的工作,在區塊鏈中,從我的理解來看,有兩個意義:
一方面礦工的計算,爲區塊鏈提供安全機制,和信任的基石。
另一方面,礦工完成的這一過程,獲得獎金。
這是一個完整的機制,完整的循環,一體兩面。
區塊鏈去中心化,在我看來,不是沒有中心,而是把傳統社會的中心,也是信任的基石,從社會科學的產物,如政府、銀行等,抽象上升到了 數學公理,客觀事實。 也在這一刻,我有點明白了這一轉變的偉大之處。
另外,原本依賴於銀行人員、公信機構人員完成的維護公信的工作量,轉變成了礦工,進行窮舉搜索的過程,將人力成本,變成了資源成本。
區塊鏈技術是優秀的、進步的,但實話講,怎麼獲得大衆的認可還有很長的路要走,類似我之前狀態的人,還有很多,因爲雖然本身這個信任基石沒有問題,但很多人其實不理解其中的原理,更無從認可, 畢竟信任更多的是社會性,其本身是離不開廣大羣衆的。

 

以下是我自己摘錄的一些零散筆記:

1、用 CAP 定理來看,以太坊一個區塊鏈,滿足了 C 一致性, P 分區容錯性,A 可用性應該很差啊?
      難道區塊鏈不屬於分佈式系統嗎?(定理的前提) 還是本身 不需要 高可用這一特性? (實現目標)
2、 Merkle 樹感覺很強, 感覺比我大學時期記憶的樹強了很多,不知道是不是沒有學到家的緣故。
看來是得重新學習數據結構了。
Merkle樹可以實現輕節點的快速查詢。根節點作爲數據安全證明; 每個局部區塊都可以在無需保存整個狀態的情況下,驗證以太坊一部分狀態。
3、 終於理解了,爲什麼要有比特幣,爲什麼需要礦工, 通過Gas,在區塊鏈上的每一筆交易,都需要被驗證, 這個驗證的費用,由發起交易方支付,驗證這個交易的過程,就是由礦工進行的。  而第一個完成運算的礦工,將收到最大金額的獎勵,其他礦工,如果在 交易發起方支付的 虛擬貨幣消耗完前,就完成的交易證明,那麼他們會瓜分剩餘的 虛擬貨幣。
4、 去中心化: 之前的交易,都必須有一箇中心, 這個中心必須由政府或者機構完成。 現在區塊鏈中,數據安全由 Merkle 樹的根節點保證, 交易維護工作,由網上分佈式的礦工完成。
5、 區塊的驗證時間(礦工挖礦的所需要消耗的時間),通過難度機制實現平衡,耗時越長,難度越大,這時就減少區塊的驗證難度,保證每個區塊的驗證時間爲 15 秒。

執行模式:
6、 以太坊虛擬機 EVM(Ethernet virtual machine) , 採用堆棧結構,先入後出, 與馮諾依曼計算機不同,代碼不是存放在內存中,而是放在 一個虛擬的 ROM (read only memory),修改合約時,通過 solidiy 高級語言編程,之後編譯成可在 EVM 中執行的 字節碼(這個與java 很相似)。
7、 由於存在 Gas 機制,整個以太坊中 Gas 的存量,會約束可以完成的計算總量。這是EVM與傳統圖靈完備(可以模擬執行計算機上所有運算,包括循環)虛擬機的不同。
8、 EVM 運行機制:這個有點雲裏霧裏的:
       (1) EVM 具有幾個全局狀態:
                  可用的 Gas 、 程序計數器、 內存內容、 內存活躍數、 棧內容
       (2) 一個堆棧是一個循環,每個循環執行,程序計數器加一,同時 gas 消耗;
       (3)執行一個堆棧的結果,總體分爲兩類:一類爲 可控結果, 一類爲異常,
                 發生異常: gas不足、棧條目數不足、棧條目數超過1024、無效的 jump指令等,
                 或者系統宕機、這時,任何更改將被丟棄。
       (4)可控狀態: EVM 生成結果狀態、保留執行結束後的 gas。
9、 工作量證明 及 安全機制:這一段我覺得沒法精簡,所以全摘錄了
       總體而言,PoW的目的是以一種安全加密方式證明工作量,基於特定的計算量生成某些輸出(即nonce)。這是因爲除了窮舉所有可能性之外,沒有更好的辦法來找到低於要求閾值的nonce。重複應用哈希函數的輸出具有均勻分佈,因此我們可以確信,找到這樣一個nonce所需的平均時間取決於難度閾值。難度越大,解決問題的時間就越長。這樣,PoW算法對難度概念賦予了真實的意義,這個概念被用來增強區塊鏈的安全。

那麼,區塊鏈安全又是指什麼?很簡單:就是要創建一個每個人都信任的區塊鏈。正如先前在本文中討論的那樣,如果存在一個以上的鏈,用戶將對其失去信任,因爲他們無法合理地確定哪一個鏈是「有效的」鏈。爲了讓一組用戶接受存儲在塊環鏈上的基本狀態,需要一個大家都相信的且單一規範的區塊鏈。

而這正是PoW的作用:它確保一個特定的區塊鏈可以保持規範,使攻擊者難以創建新的區塊,或者覆蓋歷史的某一部分(例如擦除交易或創建虛假的交易),或者對一個分叉進行維護。爲了驗證他們的區塊,攻擊者需要比網絡中的其他任何人都更快地解決nonce問題,這樣網絡就會相信他們的鏈條是最重鏈(基於之前提到的GHOST協議的原則)。這是基本上不可能的,除非攻擊者擁有超過一半的網絡挖掘能力,因此這種情況被稱爲「51%攻擊」。

10、 礦工的收入構成:
      (1) 貢獻算力中獲勝的獎勵;
      (2) Gas 成本
      (3) ommer作爲區塊的一部分額外獎勵


11、 ommer:
比起比特幣之類的區塊鏈,以太坊的構建方式使區塊生成時間要低很多。這樣可以更快地處理交易。然而,縮短區塊生成時間的一個缺點是,礦工們要找到更多相互競爭的區塊解決方案。這些相互競爭的區塊也被稱爲「孤兒區塊」,不能進入主鏈。

Ommer的目的是幫助獎勵礦工,也包括這些孤兒區塊。礦工的ommer必須是「有效的」,也就是說在目前區塊的第六代或更小的範圍內。六代之後,陳舊的孤兒區塊就不能再被引用。比起完整的區塊,Ommer塊獲得的獎勵要小一些。儘管如此,礦工們仍然有一定的動力去挖掘這些孤兒區塊並獲得回報。

12、 以太坊正在從 Pow 工作量證明機制, 過度到 POS 機制:

資料來源: https://blog.csdn.net/sqc3375177/article/details/79528191


PoW背後的基本概念很簡單:工作端提交已知難於計算但易於驗證的計算結果,而其
他任何人都能夠通過驗證這個答案就確信工作端爲了求得結果已經完成了量相當大的計算
工作。然而PoW機制存在明顯的弊端。一方面,PoW的前提是,節點和算力是均勻分佈
的,因爲通過CPU的計算能力來進行投票,擁有錢包(節點)數和算力值應該是大致匹配
的,然而隨着人們將CPU挖礦逐漸升級到GPU、FPGA,直至ASIC礦機挖礦,節點數和算
力值也漸漸失配。另一方面,PoW太浪費了。比特幣網絡每秒可完成數百萬億次SHA256
計算,但這些計算除了使惡意攻擊者不能輕易地僞裝成幾百萬個節點和打垮比特幣網絡,
並沒有更多實際或科學價值。當然,相對於允許世界上任何一個人在瞬間就能通過去中心
化和半匿名的全球貨幣網絡,給其他人幾乎沒有手續費地轉賬所帶來的巨大好處,它的浪
費也許只算是很小的代價。
有鑑於此,人們提出了一些工作量證明的替代者。權益證明(Proof of Stake,PoS)
就是其中的一種方法。
權益證明要求用戶證明擁有某些數量的貨幣(即對貨幣的權益),點點幣
(Peercoin)是首先採用權益證明的貨幣,儘管它依然使用工作量證明挖礦。

POS --- Proof of Stake

大多數地方叫權益證明,其實可以看作是股權證明,也是一種共識算法,在基於權益證明的數字貨幣中,下一個區塊的選擇是根據不同節點的股份和時間進行隨機選擇的。打個比方說,假如你買了1萬個數字貨幣,然後就放在POS機制中,這樣你就擁有了機會去獲得新的區塊從而得到獎勵,機會有多大呢,就是那些擁有1千個數字貨幣的人的10倍概率,因爲你有1萬個,1萬是1千的十倍,10%的股份分紅是1%股份的10倍,道理是一樣的。

由於創造新的區塊並不會消耗大量的 CPU,這也就給了很多節點作弊的機會,每一個節點爲了最大化利益會在多條鏈上同時挖礦。顯然這個問題要被解決,這裏引入了懲罰機制,懲罰同時在多條鏈上投票的節點,第二種方法是直接懲罰在錯誤的鏈上創建塊的節點。

優勢:不需要浪費算力,同時,進行51%攻擊的代價更高,因爲想要進行51%攻擊的話,你得擁有51%的貨幣。也就是說,這東西越值錢,攻擊的成本就越高。


DPOS --- Delegated Proof of Stake
上面介紹的權益證明算法可以將整個區塊鏈網絡理解爲一家公司,佔比最大的人有更多的機會得到區塊;對於小股東來說,能產生區塊的可能性很小,只能得到股份帶來的分紅和收益。

但是在這裏介紹的DPOS委託權益證明能夠讓每一個人選出可以代表自己利益的人蔘與到獲取區塊的爭奪中,這樣多個小股東就能夠通過投票選出自己的代理人,爭取自己的利益。

在委託權益證明中,每一個參與者都能夠選舉任意數量的節點生成下一個區塊,得票最多的前 M 個節點會被選擇成爲區塊的創建者,下一個區塊的創建者就會從這樣一組當選者中隨機選取,除此之外,M的數量也是由整個網絡投票決定的,所以可以儘可能地保證網絡的去中心化,而且最重要的還是隨機選出的,也就是說數量M不確定,M中選取哪一個也不確定,再加上足夠多的總量,可以確定幾乎是不可操控的。


總結:
介紹了POS(權益證明)是通過持有股份來獲取新區塊的機會,優點是不需要消耗計算資源,但是小股東獲取的利益有限。
DPOS(委託權益證明)讓每個人都可以選出代表自己利益的人,多個小股東聚集到一起,增加了獲取區塊的機會,並且通過獲取總票數中隨機的一部分投票,在隨機中再隨機選一個來生成區塊,更大程度上確保了不可篡改性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章