學術產出-Theses

Article View/Open

Publication Export

Google ScholarTM

政大圖書館

Citation Infomation

題名 基於以太坊的私有鏈的共識效能評估工具
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-Jul-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, 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
描述 碩士
國立政治大學
資訊科學系
105753017
資料來源 http://thesis.lib.nccu.edu.tw/record/#G0105753017
資料類型 thesis
dc.contributor.advisor 陳恭zh_TW
dc.contributor.advisor Chen, Kungen_US
dc.contributor.author (Authors) 廖偉宗zh_TW
dc.contributor.author (Authors) Liao, Wei-Tsungen_US
dc.creator (作者) 廖偉宗zh_TW
dc.creator (作者) Liao, Wei-Tsungen_US
dc.date (日期) 2018en_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) G0105753017en_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 (描述) 105753017zh_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/#G0105753017en_US
dc.subject (關鍵詞) 區塊鏈zh_TW
dc.subject (關鍵詞) 共識演算法zh_TW
dc.subject (關鍵詞) 共識引擎zh_TW
dc.subject (關鍵詞) 以太坊zh_TW
dc.subject (關鍵詞) 實用拜占庭容錯zh_TW
dc.subject (關鍵詞) Blockchainen_US
dc.subject (關鍵詞) Consensus algorithmen_US
dc.subject (關鍵詞) Consensus engineen_US
dc.subject (關鍵詞) Ethereumen_US
dc.subject (關鍵詞) Proof-of-Authorityen_US
dc.subject (關鍵詞) Practical Byzantine Fault Toleranceen_US
dc.title (題名) 基於以太坊的私有鏈的共識效能評估工具zh_TW
dc.title (題名) A Performance Evaluation Tool for the Consensus Mechanism of Ethereum-Based Private Blockchainsen_US
dc.type (資料類型) thesisen_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/NCCU201900045en_US