學術產出-學位論文
文章檢視/開啟
書目匯出
-
題名 基於以太坊的私有鏈的共識效能評估工具
A Performance Evaluation Tool for the Consensus Mechanism of Ethereum-Based Private Blockchains作者 廖偉宗
Liao, Wei-Tsung貢獻者 陳恭
Chen, Kung
廖偉宗
Liao, Wei-Tsung關鍵詞 區塊鏈
共識演算法
共識引擎
以太坊
實用拜占庭容錯
Blockchain
Consensus algorithm
Consensus engine
Ethereum
Proof-of-Authority
Practical Byzantine Fault Tolerance日期 2018 上傳時間 1-七月-2019 10:58:58 (UTC+8) 摘要 共識引擎是區塊鏈相關技術最核心的一環,一個區塊鏈系統適合的應用環境、運作效能、安全性、活性都由共識引擎所主宰。為了讓Ethereum 能夠更有效率地被應用在私有區塊鏈環境或聯盟區塊鏈環境,近年來許多團隊陸續設計出相容於Ethereum Protocol 且更適用於私有領域的共識引擎,基於Practical Byzantine Fault Tolerance 共識演算法所實作的共識引擎和基於Proof-of-Authority的共識引擎都是熱門的提案。本研究將測試並評估目前幾款基於PBFT、PoA 共識機制所設計的Ethereum 共識引擎,其中包含Go Ethereum Clique、Parity Tendermint、Parity Aura、NCCU BFT、Istanbul BFT。評估項目包含「吞吐量與延遲」、「網路分割」、「隨機網路延遲」、「崩潰故障」和「拜占庭故障」。為了讓開發人員或是測試人員得以快速部署並測試Ethereum 共識引擎,我們在研究過程中實作了一款稱為Crete 的測試工具,測試人員可以透過撰寫設定檔控制實驗流程和調整實驗參數。Crete 也提供一個簡易的Dashboard 界面,方便測試人員了解實驗過程中區塊鏈系統的整體狀況,並在實驗結束之後自動收集實驗數據,藉此幫助測試人員評估共識引擎的表現。
The consensus engine is a core technical component of blockchain related technology. The operational environment, performance, security and liveness of a blockchain system are dominated by the consensus engine. In order to make Ethereum more efficient in private blockchain environments or federated blockchain environments, many development teams have successively designed consensus engines that are compatible with the Ethereum protocol and are more suitable for private blockchains or federated blockchains. The consensus engine based on the Practical Byzantine Fault Tolerance consensus algorithm and the consensus engine based on Proof-of-Authority are popular proposals.This study will test and evaluate several Ethereum consensus engine based on PBFT and PoA consensus mechanisms, including Go Ethereum Clique, Parity Tendermint, Parity Aura, NCCU BFT and AMIS Istanbul BFT. Evaluation items include throughput and latency, network partition, random network delay, crash failure, and Byzantine failure.In order to allow developers or testers to quickly deploy and test the Ethereum consensus engine, we implemented a test tool called Crete in the course of research. Testers can control the experiment procedure and adjust the experimental parameters by writing a profile. Crete also provides a simple dashboard interface that allows testers to observe the overall status of the blockchain system during the experiment and automatically collect experimental data after the end of the experiment to help testers evaluate the performance of the consensus engine.參考文獻 [1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” 2008.[2] V. Buterin, “Ethereum: A next-generation smart contract and decentralized application platform.” https://github.com/ethereum/wiki/wiki/White-Paper, 2014. Accessed: 2016-08-22.[3] G. Wood, “Ethereum: A secure decentralised generalised transaction ledger eip-150 revision (759dccd - 2017-08-07),” 2017. Accessed: 2018-04-03.[4] M. Castro and B. Liskov, “Practical byzantine fault tolerance,” in Proceedings of the Third Symposium on Operating Systems Design and Implementation, OSDI ’99, (Berkeley, CA, USA), pp. 173–186, USENIX Association, 1999.[5] “Official golang implementation of the ethereum protocol..” https://github.com/ethereum/go-ethereum[6] “Parity.” https://www.parity.io[7] “Github - paritytech/parity-ethereum: The fast, light, and robust evm and wasm client..” https://github.com/paritytech/parity/[8] S. De Angelis, “Assessing Security and Performances of Consensus algorithms for Permissioned Blockchains,” ArXiv e-prints, May 2018.[9] “Clique poa protocol & rinkeby poa testnet · issue #650 · ethereum/eips.” https://github.com/ethereum/EIPs/issues/225[10] “Aura - authority round - parity ethereum documentation.” https://wiki.parity.io/Aura.html[11] S. D. Angelis, L. Aniello, R. Baldoni, F. Lombardi, A. Margheri, and V. Sassone, “Pbft vs proof-of-authority: applying the cap theorem to permissioned blockchain,” January 2018.[12] E. Brewer, “Cap twelve years later: How the "rules" have changed,” Computer, vol. 45, pp. 23–29, Feb 2012.[13] E. Buchman, “Tendermint: Byzantine fault tolerance in the age of blockchains,” 2016.[14] “Tendermint: Blockchain consensus.” https://tendermint.com[15] Yi-Jiun. Shiu, “An implementation of bft consensus for ethereum,” 2017.[16] “Nccu bft consensus for go ethereum.” https://github.com/NCCUCS-PLSM/NCCU-BFT-for-Go-Ethereum[17] “Hydrachain: Permissioned distributed ledger based on ethereum.” https://github.com/HydraChain/hydrachain[18] “Amis.” https://am.is[19] “Istanbul byzantine fault tolerance.” https://github.com/getamis/go-ethereum[20] “Istanbul byzantine fault tolerance · issue #650 · ethereum/eips.” https://github.com/ethereum/EIPs/issues/650[21] T. T. A. Dinh, J. Wang, G. Chen, R. Liu, B. C. Ooi, and K.-L. Tan, “Blockbench: A framework for analyzing private blockchains,” in Proceedings of the 2017 ACM International Conference on Management of Data , SIGMOD ’17, (New York, NY, USA), pp. 1085–1100, ACM, 2017.[22] “Blockbench: A framework for analyzing private blockchains. blockbench contains workloads for measuring the data processing performance, andworkloads for understanding the performance of different layers of blockchain systems..” https://github.com/ooibc88/blockbench[23] “Istanbul bft tools.” https://github.com/getamis/istanbul-tools[24] “Benchmarking tendermint networks.” https://github.com/tendermint/network_testing[25] “Geth ethereum/go-ethereum wiki· github.” https://github.com/ethereum/go-ethereum/wiki/geth[26] “Parity ethereum documentation.” https://wiki.parity.io[27] “Docker - build, ship, and run any app, anywhere.” https://www.docker.com[28] “Docker hub.” https://hub.docker.com[29] iptables(8) iptables Manual[30] ipset(8) ipset Manual[31] tc(8) tc Manual 描述 碩士
國立政治大學
資訊科學系
105753017資料來源 http://thesis.lib.nccu.edu.tw/record/#G0105753017 資料類型 thesis dc.contributor.advisor 陳恭 zh_TW dc.contributor.advisor Chen, Kung en_US dc.contributor.author (作者) 廖偉宗 zh_TW dc.contributor.author (作者) Liao, Wei-Tsung en_US dc.creator (作者) 廖偉宗 zh_TW dc.creator (作者) Liao, Wei-Tsung en_US dc.date (日期) 2018 en_US dc.date.accessioned 1-七月-2019 10:58:58 (UTC+8) - dc.date.available 1-七月-2019 10:58:58 (UTC+8) - dc.date.issued (上傳時間) 1-七月-2019 10:58:58 (UTC+8) - dc.identifier (其他 識別碼) G0105753017 en_US dc.identifier.uri (URI) http://nccur.lib.nccu.edu.tw/handle/140.119/124194 - dc.description (描述) 碩士 zh_TW dc.description (描述) 國立政治大學 zh_TW dc.description (描述) 資訊科學系 zh_TW dc.description (描述) 105753017 zh_TW dc.description.abstract (摘要) 共識引擎是區塊鏈相關技術最核心的一環,一個區塊鏈系統適合的應用環境、運作效能、安全性、活性都由共識引擎所主宰。為了讓Ethereum 能夠更有效率地被應用在私有區塊鏈環境或聯盟區塊鏈環境,近年來許多團隊陸續設計出相容於Ethereum Protocol 且更適用於私有領域的共識引擎,基於Practical Byzantine Fault Tolerance 共識演算法所實作的共識引擎和基於Proof-of-Authority的共識引擎都是熱門的提案。本研究將測試並評估目前幾款基於PBFT、PoA 共識機制所設計的Ethereum 共識引擎,其中包含Go Ethereum Clique、Parity Tendermint、Parity Aura、NCCU BFT、Istanbul BFT。評估項目包含「吞吐量與延遲」、「網路分割」、「隨機網路延遲」、「崩潰故障」和「拜占庭故障」。為了讓開發人員或是測試人員得以快速部署並測試Ethereum 共識引擎,我們在研究過程中實作了一款稱為Crete 的測試工具,測試人員可以透過撰寫設定檔控制實驗流程和調整實驗參數。Crete 也提供一個簡易的Dashboard 界面,方便測試人員了解實驗過程中區塊鏈系統的整體狀況,並在實驗結束之後自動收集實驗數據,藉此幫助測試人員評估共識引擎的表現。 zh_TW dc.description.abstract (摘要) The consensus engine is a core technical component of blockchain related technology. The operational environment, performance, security and liveness of a blockchain system are dominated by the consensus engine. In order to make Ethereum more efficient in private blockchain environments or federated blockchain environments, many development teams have successively designed consensus engines that are compatible with the Ethereum protocol and are more suitable for private blockchains or federated blockchains. The consensus engine based on the Practical Byzantine Fault Tolerance consensus algorithm and the consensus engine based on Proof-of-Authority are popular proposals.This study will test and evaluate several Ethereum consensus engine based on PBFT and PoA consensus mechanisms, including Go Ethereum Clique, Parity Tendermint, Parity Aura, NCCU BFT and AMIS Istanbul BFT. Evaluation items include throughput and latency, network partition, random network delay, crash failure, and Byzantine failure.In order to allow developers or testers to quickly deploy and test the Ethereum consensus engine, we implemented a test tool called Crete in the course of research. Testers can control the experiment procedure and adjust the experimental parameters by writing a profile. Crete also provides a simple dashboard interface that allows testers to observe the overall status of the blockchain system during the experiment and automatically collect experimental data after the end of the experiment to help testers evaluate the performance of the consensus engine. en_US dc.description.tableofcontents 第一章 緒論 11.1 研究背景與動機 11.2 研究目的與問題 21.3 研究貢獻 31.4 各章節說明 4第二章 相關研究與技術背景 52.1 Ethereum 區塊鏈上的共識演算法 52.2 Ethereum 實作版本與共識引擎 82.3 區塊鏈系統測試工具 9第三章 Etheruem 系統架構簡介 123.1 Elliptic Curve Digital Signature Algorithm 123.2 Ethereum 帳戶(Ethereum Account) 123.3 交易(Transaction) 133.4 區塊(Block)和區塊鏈(Blockchain) 133.5 Miner 模組 153.6 共識引擎(Consensus Engine)模組 163.7 交易池(Transaction Pool)模組 163.8 RPC 、IPC 模組 173.9 Ethereum P2P 網路 183.10 Ethereum 區塊鏈系統架設流程 19第四章 系統架構及實驗流程 214.1 名詞定義 214.2 影響共識過程的各項變因 224.3 效能評估計算方式 234.4 測試項目和受測程式 244.5 實驗環境與工具介紹 274.6 實驗環境建置原則 294.7 實驗流程 32第五章 Crete 測試工具 355.1 系統架構 355.2 Private Key Generator 與 Genesis Template Generator 365.3 Docker Image Creator 375.4 Docker Machine 物件 375.5 Ethereum Container 與 Ethereum Launcher 385.6 Transactor Container 405.7 CLI Dashboard 425.8 實驗控制器 435.9 實驗執行器與實驗執行器指令集 45第六章 實驗結果 516.1 效能延展性測試 516.2 區塊大小對交易吞吐量影響測試 546.2.1 實驗環境介紹 546.3 網路分割(Network Partition)測試 576.4 崩潰故障(Crash Failure)測試 636.5 隨機網路延遲測試 656.6 拜占庭故障(Byzantine Failure)測試 65第七章 結論與未來研究方向 717.1 結論 717.2 未來研究方向和規劃 72參考文獻 73 zh_TW dc.format.extent 3677313 bytes - dc.format.mimetype application/pdf - dc.source.uri (資料來源) http://thesis.lib.nccu.edu.tw/record/#G0105753017 en_US dc.subject (關鍵詞) 區塊鏈 zh_TW dc.subject (關鍵詞) 共識演算法 zh_TW dc.subject (關鍵詞) 共識引擎 zh_TW dc.subject (關鍵詞) 以太坊 zh_TW dc.subject (關鍵詞) 實用拜占庭容錯 zh_TW dc.subject (關鍵詞) Blockchain en_US dc.subject (關鍵詞) Consensus algorithm en_US dc.subject (關鍵詞) Consensus engine en_US dc.subject (關鍵詞) Ethereum en_US dc.subject (關鍵詞) Proof-of-Authority en_US dc.subject (關鍵詞) Practical Byzantine Fault Tolerance en_US dc.title (題名) 基於以太坊的私有鏈的共識效能評估工具 zh_TW dc.title (題名) A Performance Evaluation Tool for the Consensus Mechanism of Ethereum-Based Private Blockchains en_US dc.type (資料類型) thesis en_US dc.relation.reference (參考文獻) [1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” 2008.[2] V. Buterin, “Ethereum: A next-generation smart contract and decentralized application platform.” https://github.com/ethereum/wiki/wiki/White-Paper, 2014. Accessed: 2016-08-22.[3] G. Wood, “Ethereum: A secure decentralised generalised transaction ledger eip-150 revision (759dccd - 2017-08-07),” 2017. Accessed: 2018-04-03.[4] M. Castro and B. Liskov, “Practical byzantine fault tolerance,” in Proceedings of the Third Symposium on Operating Systems Design and Implementation, OSDI ’99, (Berkeley, CA, USA), pp. 173–186, USENIX Association, 1999.[5] “Official golang implementation of the ethereum protocol..” https://github.com/ethereum/go-ethereum[6] “Parity.” https://www.parity.io[7] “Github - paritytech/parity-ethereum: The fast, light, and robust evm and wasm client..” https://github.com/paritytech/parity/[8] S. De Angelis, “Assessing Security and Performances of Consensus algorithms for Permissioned Blockchains,” ArXiv e-prints, May 2018.[9] “Clique poa protocol & rinkeby poa testnet · issue #650 · ethereum/eips.” https://github.com/ethereum/EIPs/issues/225[10] “Aura - authority round - parity ethereum documentation.” https://wiki.parity.io/Aura.html[11] S. D. Angelis, L. Aniello, R. Baldoni, F. Lombardi, A. Margheri, and V. Sassone, “Pbft vs proof-of-authority: applying the cap theorem to permissioned blockchain,” January 2018.[12] E. Brewer, “Cap twelve years later: How the "rules" have changed,” Computer, vol. 45, pp. 23–29, Feb 2012.[13] E. Buchman, “Tendermint: Byzantine fault tolerance in the age of blockchains,” 2016.[14] “Tendermint: Blockchain consensus.” https://tendermint.com[15] Yi-Jiun. Shiu, “An implementation of bft consensus for ethereum,” 2017.[16] “Nccu bft consensus for go ethereum.” https://github.com/NCCUCS-PLSM/NCCU-BFT-for-Go-Ethereum[17] “Hydrachain: Permissioned distributed ledger based on ethereum.” https://github.com/HydraChain/hydrachain[18] “Amis.” https://am.is[19] “Istanbul byzantine fault tolerance.” https://github.com/getamis/go-ethereum[20] “Istanbul byzantine fault tolerance · issue #650 · ethereum/eips.” https://github.com/ethereum/EIPs/issues/650[21] T. T. A. Dinh, J. Wang, G. Chen, R. Liu, B. C. Ooi, and K.-L. Tan, “Blockbench: A framework for analyzing private blockchains,” in Proceedings of the 2017 ACM International Conference on Management of Data , SIGMOD ’17, (New York, NY, USA), pp. 1085–1100, ACM, 2017.[22] “Blockbench: A framework for analyzing private blockchains. blockbench contains workloads for measuring the data processing performance, andworkloads for understanding the performance of different layers of blockchain systems..” https://github.com/ooibc88/blockbench[23] “Istanbul bft tools.” https://github.com/getamis/istanbul-tools[24] “Benchmarking tendermint networks.” https://github.com/tendermint/network_testing[25] “Geth ethereum/go-ethereum wiki· github.” https://github.com/ethereum/go-ethereum/wiki/geth[26] “Parity ethereum documentation.” https://wiki.parity.io[27] “Docker - build, ship, and run any app, anywhere.” https://www.docker.com[28] “Docker hub.” https://hub.docker.com[29] iptables(8) iptables Manual[30] ipset(8) ipset Manual[31] tc(8) tc Manual zh_TW dc.identifier.doi (DOI) 10.6814/NCCU201900045 en_US