Publications-Theses
Article View/Open
Publication Export
Google ScholarTM
NCCU Library
Citation Infomation
-
Loading...Loading...
Related Publications in TAIR
Title | 基於以太坊的私有鏈的共識效能評估工具 A Performance Evaluation Tool for the Consensus Mechanism of Ethereum-Based Private Blockchains |
Creator | 廖偉宗 Liao, Wei-Tsung |
Contributor | 陳恭 Chen, Kung 廖偉宗 Liao, Wei-Tsung |
Key Words | 區塊鏈 共識演算法 共識引擎 以太坊 實用拜占庭容錯 Blockchain Consensus algorithm Consensus engine Ethereum Proof-of-Authority Practical Byzantine Fault Tolerance |
Date | 2018 |
Date Issued | 1-Jul-2019 10:58:58 (UTC+8) |
Summary | 共識引擎是區塊鏈相關技術最核心的一環,一個區塊鏈系統適合的應用環境、運作效能、安全性、活性都由共識引擎所主宰。為了讓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, and workloads 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 |
Description | 碩士 國立政治大學 資訊科學系 105753017 |
資料來源 | http://thesis.lib.nccu.edu.tw/record/#G0105753017 |
Type | thesis |
dc.contributor.advisor | 陳恭 | zh_TW |
dc.contributor.advisor | Chen, Kung | en_US |
dc.contributor.author (Authors) | 廖偉宗 | zh_TW |
dc.contributor.author (Authors) | 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-Jul-2019 10:58:58 (UTC+8) | - |
dc.date.available | 1-Jul-2019 10:58:58 (UTC+8) | - |
dc.date.issued (上傳時間) | 1-Jul-2019 10:58:58 (UTC+8) | - |
dc.identifier (Other Identifiers) | 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 | 第一章 緒論 1 1.1 研究背景與動機 1 1.2 研究目的與問題 2 1.3 研究貢獻 3 1.4 各章節說明 4 第二章 相關研究與技術背景 5 2.1 Ethereum 區塊鏈上的共識演算法 5 2.2 Ethereum 實作版本與共識引擎 8 2.3 區塊鏈系統測試工具 9 第三章 Etheruem 系統架構簡介 12 3.1 Elliptic Curve Digital Signature Algorithm 12 3.2 Ethereum 帳戶(Ethereum Account) 12 3.3 交易(Transaction) 13 3.4 區塊(Block)和區塊鏈(Blockchain) 13 3.5 Miner 模組 15 3.6 共識引擎(Consensus Engine)模組 16 3.7 交易池(Transaction Pool)模組 16 3.8 RPC 、IPC 模組 17 3.9 Ethereum P2P 網路 18 3.10 Ethereum 區塊鏈系統架設流程 19 第四章 系統架構及實驗流程 21 4.1 名詞定義 21 4.2 影響共識過程的各項變因 22 4.3 效能評估計算方式 23 4.4 測試項目和受測程式 24 4.5 實驗環境與工具介紹 27 4.6 實驗環境建置原則 29 4.7 實驗流程 32 第五章 Crete 測試工具 35 5.1 系統架構 35 5.2 Private Key Generator 與 Genesis Template Generator 36 5.3 Docker Image Creator 37 5.4 Docker Machine 物件 37 5.5 Ethereum Container 與 Ethereum Launcher 38 5.6 Transactor Container 40 5.7 CLI Dashboard 42 5.8 實驗控制器 43 5.9 實驗執行器與實驗執行器指令集 45 第六章 實驗結果 51 6.1 效能延展性測試 51 6.2 區塊大小對交易吞吐量影響測試 54 6.2.1 實驗環境介紹 54 6.3 網路分割(Network Partition)測試 57 6.4 崩潰故障(Crash Failure)測試 63 6.5 隨機網路延遲測試 65 6.6 拜占庭故障(Byzantine Failure)測試 65 第七章 結論與未來研究方向 71 7.1 結論 71 7.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, and workloads 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 |