# Blockchain final ***Ch2*** **一個好的共識機制:** 1.要讓網路保持最新,修復錯誤並忽略惡意的nodes 2.在區塊鏈上,確保交易是有效的 **為了達成共識維護有效區塊鏈帳本的algorithms須達到以下:** 1. 如果不良行為者試圖廣播無效交易,它們應該被良好節點忽略並且不包含在賬本中 2. 當不良節點嘗試用無效或欺詐性交易挖掘一個塊,網絡的大多數人應該同意不要在它上面挖掘 **為了達到這點,區塊鏈需要做到以下幾點:** 1. 能夠追蹤交易 2. 與其他nodes帳本內容達成一致 3. 獲得適當的獎勵,以做出正確的事 獎勵是公共網路區塊鏈共識的關鍵因素 **分布式網路可能會發生兩種類型的故障:** 1. Network failure 網路完全或部分失去連結 2. Node failure **Byzantine failure:** 1. Omission failure(未能接受請求或發送回應) 2. Commission failure(錯誤處理請求,破壞local state或發送對請求不正確或不一致的回應) **Byzantine fault-tolerant:** 1. 所有好的nodes必須就相同的計畫達成一致(交易是否有效) 2. 共識機制必須保證第一點,不論壞的nodes想要做什麼 3. 只要壞的nodes夠少,好的nodes就不會採用無效的交易 4. 𝑛 ≥ 3𝑚 + 1(n為good nodes, m為bad nodes) 大多數情況下,惡意行為者需要控制大約 50% 的網絡才能成功地對某個節點發起拜占庭式攻擊PoW 網絡 **BFT系統有兩個基本階段** 1. 一致性 2. 執行(就結果達成一致,就進入執行並將結果記入帳本) ![](https://i.imgur.com/8K5BRvk.jpg) 在trustless blockchain中,沒有一個節點式受信任的,需要依靠共式算法和適當的獎勵機制確保成員的正確運行 1. 做正確的事會得到回報 2. 繼續做正確的事回報會超過做壞事的淨收益(做壞事的成本高) **PoW:** Proof of Work is the grandparent of trustless consensus in a blockchain. 具有競爭性,每個block只有一個node可以獲得獎勵 **PoW Step:** ![](https://i.imgur.com/XzjCbCI.jpg) **Economies of scale:** 一名miner用100USD資源挖礦的機會會比一百名minder各用1USD機會高 **PoS:** * 一個人需要在系統中擁有一些股份(stake)或是一些coin才能參與PoS * Ex:一個人持有5%的stake,那他挖掘下一個block的機率也是5% * 不需要太多計算便能解決密碼學的難題 * PoS較節能 * 一樣具有競爭力,每個block只有一個staker可以挖 **PoS Problem:** * nothing at stake(無風險) * 如果有fork,PoS可以在兩個forks上都stake,導致對於哪個chain是正確的沒有解答![](https://i.imgur.com/PdKJLus.jpg) **DPoS:** * The staking is delegated * coins(stake)的所有者可以選擇代表他們進行stake的人 * 由於需要協調的人變少,比PoS更快 **EOS utilizes PoS:** * witnesses需支付生產block的fee * 21個witnesses輪流一次產生一個block * 不能連續生產block,所以不會有double-spending * 若在時間內無法生成block,則跳過,可以投票淘汰繼續錯過時間或發布無效交易的witnesses * DPoS是合作的而非競爭 * 如果有足夠的coins,可以投自己成為witnesses,並控制整個網路 **Proof of Believability(PoB):** * PoB分成believable group和normal group * believable group : 驗證第一階段的交易 * normal group : 對第二階段的交易進行採樣和驗證 * 根據可信度得分選入believable group * 由於可信的驗證者不太可能行為不端,因此單一驗證者的交易方法使得 PoB 非常快 **Consesus of Trusted Blockchains** * 在可信區塊鏈中,所有nodes都是已知的,因此可以識別惡意行為 * 由於這些nodes在進入網路前都已經過審查,通常假設他們是可信的 * 因此,可以專注在防止crash faults **PoET:** 共識機制須確保兩個因素 1. 必須給參與node一個確切的隨機等待時間,而不是參與者為了獲勝故意選擇更短的等待時間 2. 獲勝者必須完成等待時間 **PBFT:** * PBFT中有個leader node,其他node都是備份node * 每個node相互通訊達成一致的多數決系統 * 惡意節點不能超過系統的三分之一 PBFT共識: * 向網絡中添加交易的請求被發送到領導節點 * 領導節點將其廣播給所有其他節點 * 每個節點執行請求並向主節點發送回复請求者 * 請求者等待 n+1 確實返回相同的結果,其中 n 是允許的最大惡意節點數 1. leader node是交替的,若經過一定的時間或其他node確定leafer node有故障,則可更改 2. 通常僅可用於permissioned networks,因為沒有獎勵機制可防止不受信任的惡意節點 3. 快速且可擴展 **dPoW:** * 利用輔助blockchain為主要blockchain提供額外的安全性 * 主要blockchain可以是public或permisssioned Komodo dPoW系統有兩種type nodes 1. notary nodes 2. normal nodes * notary nodes由dPoW blockchain的相關利益者選舉 * notarization process需要多數決 * 以循環方式執行此操作,減少了對獎的競爭 * normal nodes參與主要blockchain上的usual consensus(PoS or PoW) 這種在更強大的網絡上的概念允許在不消耗高能量的情況下提高安全性 ***Ch4*** ![](https://i.imgur.com/9GARO2Y.jpg) **在區塊鏈上使用智能合約:** 1. 發行代幣(Issuing of tokens) 2. 電子商務(Ecommerce) 3. 樂透彩票(Lotteries) ***Ethereum is a decentralized global computer that processes smart contracts.*** **Smart Contract Function** * 若函數沒有在blockchain上寫入任何數據,最好使用view function,因為不消耗任何gas **Function Modifiers:** * Pure : 不允許修改或訪問狀態 * View : 不允許修改狀態 * Payable : 允許在call時同時接收以太幣