--- tags: it 鐵人賽 30 天, Web 3, ethereum --- # 從以太坊白皮書理解 web 3 概念 - Day2 ## 什麼是區塊鏈? **[區塊鏈](https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE)** 本質上來說是一個 **分散式記帳系統**。 分散記帳相對於集中式記帳不是帳本集中存儲在一個認證結點, 會把所有交易狀態重複存儲在多個區塊鏈節點。 ## 為何需要區塊鏈? 上面簡述了 **[區塊鏈](https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE)** 的概觀。 但如果想要了解細節,必須要從其目的性來探討。 **[區塊鏈](https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE)** 概念最早是由 **[中本聰](https://zh.wikipedia.org/zh-tw/%E4%B8%AD%E6%9C%AC%E8%81%AA)** 於 2008 年在 [比特幣](https://zh.wikipedia.org/zh-tw/%E6%AF%94%E7%89%B9%E5%B8%81) 白皮書所提出。 分散式帳本系統主要是想要解決集中式帳本出現的問題。 ### 集中式帳本可能出現的問題: 帳本交易紀錄出問題 集中式帳本最大的問題在於,集中式帳本是由唯一的帳本保存方來紀錄交易,比如說銀行。 ![](https://i.imgur.com/nmzkIw5.png) 當這個唯一帳本保存方發生了紀錄交易出錯,或是交易紀錄方倒閉了。 因為只有唯一的交易紀錄方,所以無法驗證。 過去原本的資產可能因為交易紀錄者的失誤造成財務的損失。 要避免交易狀態沒有正確的被紀錄 所以出現了分散式帳本的概念 #### 一個帳本紀錄者不行,那單純多個紀錄帳本者就可以嗎? 首先,我們從帳本交易紀錄不正確這點來思考 當把帳本做了多個複製紀錄,每次要檢查做交易多了很多個可以比對的副本 所以多個複製紀錄者相較遇單一紀錄者,多了一個可以比對的紀錄 但是要是發生狀態衝突的狀況該怎麼統合? 這時就需要一個機制來做狀態統合,也就是所謂的 **共識演算法**。 **共識演算法**會要求帳本交易紀錄者做一些資源的投入(質押), 來保障帳本紀錄者不會做一些作弊的行為。而對於帳本紀錄者產生也會有一些獎勵。 以工作量證明這個**共識演算法**來說, 除了在寫入交易時交易紀錄者除了需要提供工作量證明外, 還需要負責檢驗交易本身的正確性。 另外,當寫入交易成功到結點後,需要廣播已經完成的交易給其他交易紀錄者。 ![](https://i.imgur.com/ftEjdXT.png) #### 一個問題是如何知道交易內容沒有被修改過? 這個問題可以透過在交易內容內除了交易本身之外, 在額外加入由交易者密鑰對交易內容製作的加密簽章,並且附上公鑰來讓交易紀錄者做檢驗。 只要原本的交易簽入者沒有洩漏密鑰,基本上只也原本的交易者可以簽出一樣的簽章。 ![](https://i.imgur.com/vNRci0p.png) 除了分散重複存儲帳本外,區塊鏈還有以下幾種特性。 1 交易格式以二進位方式呈獻。 為了方便驗證做簽章,會把多筆相關的交易以固定的格式已區塊方式存放。 2 每個交易內容部份會有包含上一個區塊的簽章。 為了方便檢查出區塊正確性,會使用這種方式來把多個交易區塊鏈結在一起。 ## 共識演算法介紹 上面提到要讓多個礦工節點在新增交易區塊時透過共識演算法來避免發生狀態衝突的狀況。 共識演算法是用來多個記帳節點達成共識的機制。 目前主流主要分為以下幾種: 1. PoW(Proof of Work): 工作量證明,以最快算出 Hash 者說的算。 目前在比特幣有有使用。因為追求網路的品質,所以維持用挖礦的方式,擁有最多算力的節點,挖得越快,能更快驗證出塊、否認錯誤交易。 2. PoS(Proof of State): 權益證明,以持有最多的錢多個驗證節點中,隨機選一個來作主。 擁有越多資產在網路內,就會希望這個網路越好、越穩定。 3. PoA(Proof of Authority): 權威證明,以最具權威的驗證結點來做主。通常一開始就會設定好權威結點。 常用在測試鏈中,不想部署設置節點做挖礦,單純測試這個合約的部署能否正常執行。 4. DPoS(Delegated Proof of Stake): 委派式權益證明,透過所有貨幣持有者投票出一個記帳結點。常用在 EOS 在區塊鏈共識機制,常被提到的三角悖論。指的以下三種特性不可能同時達成: 1. 去中心化(Decentralization) 指的是任何一個節點都可以當驗證結點。 2. 可擴展性(Scalability) 產生區塊的速度要夠快,每秒交易量夠大。區塊同步低延遲。 3. 一致性 (Consistency) 每個結點在能夠在同一時間保持資料一致。 ![](https://i.imgur.com/s1AIq5I.png) PoW 俱備去中心化但卻在可擴展性不行。 PoS 改善 PoW 要消耗很多結點運算的問題,但區塊同步還有每秒交易量還是不高。 DPoS作為第三代的共識機制,保留了PoS節能的優點,並引入了代議民主的概念,透過減少節點的數量,除了能夠達成比PoS更低的能耗,更是解決了PoW與PoS其中一個痛點 — 交易確認的時間過長的問題。然而卻失去了去中心化。 ## 概念整理 到此為止,能夠知道 **[區塊鏈](https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE)** 是一個 **分散式記帳系統**。 多個區塊鏈節點的狀態需要透過**共識演算法**來保持一致。 相關的 **交易** 會以區塊方式被分散保存多個區塊鏈結點內。 每個區塊間會透過儲存上一個區塊的 Hash,來把每個區塊做鏈結起來。 ## 參考文獻 [https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE](https://zh.wikipedia.org/zh-tw/%E5%8C%BA%E5%9D%97%E9%93%BE) [https://www.btcc.com/zh-TW/academy/crypto-basics/blockchain-consensus-mechanism](https://www.btcc.com/zh-TW/academy/crypto-basics/blockchain-consensus-mechanism) [https://ithelp.ithome.com.tw/articles/10252819?sc=rss.iron](https://ithelp.ithome.com.tw/articles/10252819?sc=rss.iron) [https://rich01.com/what-is-crypto-pos-0/](https://rich01.com/what-is-crypto-pos-0/) [https://know.zombit.info/dpos/](https://know.zombit.info/dpos/)