學術產出-學位論文
文章檢視/開啟
書目匯出
-
題名 基於亞馬遜雲端運算服務之Quorum自動化部署與效能量測工具
Automated Deployment and Performance Evaluation Tool Based on Amazon Web Services for Quorum Blockchain作者 蕭兆洋
Hsiao, Chao-Yang貢獻者 陳恭
Chen, Kung
蕭兆洋
Hsiao, Chao-Yang關鍵詞 區塊鏈
亞馬遜雲端運算
自動化部署
效能量測
聯盟鏈
私有鏈
亞馬遜雲端運算服務
部署
Blockchain
Private Blockchain
Consortium Blockchain
AWS
Amazon Web Services
Quorum
Blockchain Deployment
Automated Deployment
Performance Measurement
Performance Evaluation日期 2020 上傳時間 5-五月-2020 12:01:20 (UTC+8) 摘要 區塊鏈的種類除了「公有鏈」之外,「私有鏈」與「聯盟鏈」也扮演了舉足輕重的角色,聯盟鏈將於各種企業、組織間創造許多區塊鏈的應用場景,解決跨企業、跨組織的「信任」、「隱私」與「整合標準化」問題。本研究以目前三大聯盟鏈之一的Quorum為主要研究對象。為了幫助未來企業、組織在進行「私有鏈」或是「聯盟鏈」評估時,降低區塊鏈部署門檻,快速部署並套用實務應用之區塊鏈環境,我們以公有雲端運算服務商AWS(Amazon Web Service,亞馬遜雲端運算服務)為「運算資源」與「網路環境」之基礎,整合多種開源工具,僅需簡單透過更改設定檔,即可將Quorum使用自動化部署的方式快速部署到AWS上,且可依據需求選擇Clique、Istanbul BFT、Raft三種共識演算法,並搭配Tessera、Constellation兩種隱私協議,解決「區塊鏈部署」之複雜性問題並大大增進部署效率。另外,我們也利用開源工具收集各種共識指標,整合了節點資源與共識資訊的即時視覺化Dashboard,透過共識相關日誌之收集,將日誌集中索引,並提供日誌搜尋與視覺化工具,幫助快速進行共識狀態的分析。最後我們也整合了多種壓測與網路控制工具,方便進行不同共識演算法於不同「系統資源」與「網路環境」之比較,打造全面且易於擴充的「區塊鏈效能量測」工具。
Besides “Public Blockchain”, “Private Blockchain” and “Consortium Blockchain” also play a pivotal role. “Consortium Blockchain” will create many blockchain’s application scenario among various enterprises and organizations to solve the problems of “Trust”, “Privacy” and “Integration Standardization” across enterprises and organizations. This study takes Quorum, one of the three major consortium blockchain, as the main research object.In order to help enterprises and organizations to evaluate the “Private Blockchain” or “Consortium Blockchain”, reduce the threshold for blockchain deployment, quickly deploy and apply the blockchain to practical applications, we use the public cloud computing service provider AWS (Amazon Web Service) as the “computing resources” and “network environment” foundation. We integrate a variety of open source tools to make Quorum automated deployment fast by simply setup and apply the configuration files. Three consensus algorithms: Clique, Istanbul BFT and Raft, together with two privacy implementation Tessera and Constellation on Quorum can be choose by requirements. We’d like to solve the complexity and improve the efficiency of “Blockchain Deployment”.In addition, we also use open source tools to collect various consensus metrics, integrate real-time visualization of node resources and consensus status dashboard. Through the collection of consensus related logs, and provide log search and visualization tools to help consensus status analysis. Finally, we also integrated a variety of stress test and network control tools to facilitate the comparison of different consensus algorithms between different “system resources” and “network environments”, creating a comprehensive and easy to expand “Blockchain Performance Measurement” tool.參考文獻 [1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system”, 2008.[2] Libra Association Members, “An Introduction to Libra”, https://libra.org/en-US/wp-content/uploads/sites/23/2019/06/LibraWhitePaper_en_US.pdf .[3] 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.[4] “Clique”, https://github.com/ethereum/EIPs/issues/225 .[5] Miguel Castro and Barbara Liskov, “Practical Byzantine Fault Tolerance”, 1999.[6] “Istanbul Byzantine Fault Tolerance”, https://github.com/ethereum/EIPs/issues/650 .[7] Diego Ongaro and John Ousterhout, “In Search of an Understandable Consensus Algorithm(Extended Version)”, USENIX Annual Technical Conference, 2014.[8] Leslie Lamport, “Paxos Made Simple”, 2001-11-01[9] “Constellation”, https://docs.goquorum.com/en/latest/Privacy/Constellation/Constellation .[10] “NaCl”, https://nacl.cr.yp.to/ .[11] “Curve25519”, https://en.wikipedia.org/wiki/Curve25519 .[12] “Tessera”, https://docs.goquorum.com/en/latest/Privacy/Tessera/Tessera/ .[13] Arati Baliga, Subhod I, Pandurang Kamat and Siddhartha Chatterjee, “Performance Evaluation of the Quorum Blockchain Platform”, 2018-07-19.[14] “caliper”, https://github.com/hyperledger/caliper .[15] B Xu, D Luthra, Z Cole, N Blakely, “Eos: An architectural, performance, and economic analysis”, 2018.[16] “Whiteblock”, https://whiteblock.io .[17] Ethan Buchman, “Tendermint: Byzantine Fault Tolerance in the Age of Blockchains”, 2016-06.[18] “Istanbul BFT Benchmarking”, https://github.com/getamis/istanbul-tools/wiki/Istanbul-BFT-Benchmarking .[19] “go-ethereum”, https://github.com/ethereum/go-ethereum .[20] “Parity”, https://github.com/paritytech/parity-ethereum .[21] “nethermind”, https://github.com/NethermindEth/nethermind .[22] “Quorum”, https://github.com/jpmorganchase/quorum .[23] “Packer”, https://github.com/hashicorp/packer .[24] “Terraform”, https://github.com/hashicorp/terraform .[25] “Terragrunt”, https://github.com/gruntwork-io/terragrunt .[26] “monit”, https://mmonit.com/monit .[27] “Ansible”, https://github.com/ansible/ansible .[28] “epirus”, https://github.com/blk-io/epirus-free .[29] “Etherscan”, https://etherscan.io .[30] “Prometheus”, https://github.com/prometheus/prometheus .[31] “Grafana”, https://github.com/grafana/grafana .[32] “Node exporter”, https://github.com/prometheus/node_exporter .[33] “Grok exporter”, https://github.com/fstab/grok_exporter .[34] “Filebeat”, https://github.com/elastic/beats/tree/master/filebeat .[35] “Logstash”, https://github.com/elastic/logstash .[36] “Elasticsearch”, https://github.com/elastic/elasticsearch .[37] “Kibana”, https://github.com/elastic/kibana .[38] “sysbench”, https://github.com/akopytov/sysbench .[39] tc(8) tc Manual.[40] iptables(8) iptables Manual.[41] “Wondershaper”, https://github.com/magnific0/wondershaper .[42] “etcd Hardware”, https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/hardware.md .[43] “etcd Failures”, https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/failures.md . 描述 碩士
國立政治大學
資訊科學系碩士在職專班
106971005資料來源 http://thesis.lib.nccu.edu.tw/record/#G0106971005 資料類型 thesis dc.contributor.advisor 陳恭 zh_TW dc.contributor.advisor Chen, Kung en_US dc.contributor.author (作者) 蕭兆洋 zh_TW dc.contributor.author (作者) Hsiao, Chao-Yang en_US dc.creator (作者) 蕭兆洋 zh_TW dc.creator (作者) Hsiao, Chao-Yang en_US dc.date (日期) 2020 en_US dc.date.accessioned 5-五月-2020 12:01:20 (UTC+8) - dc.date.available 5-五月-2020 12:01:20 (UTC+8) - dc.date.issued (上傳時間) 5-五月-2020 12:01:20 (UTC+8) - dc.identifier (其他 識別碼) G0106971005 en_US dc.identifier.uri (URI) http://nccur.lib.nccu.edu.tw/handle/140.119/129668 - dc.description (描述) 碩士 zh_TW dc.description (描述) 國立政治大學 zh_TW dc.description (描述) 資訊科學系碩士在職專班 zh_TW dc.description (描述) 106971005 zh_TW dc.description.abstract (摘要) 區塊鏈的種類除了「公有鏈」之外,「私有鏈」與「聯盟鏈」也扮演了舉足輕重的角色,聯盟鏈將於各種企業、組織間創造許多區塊鏈的應用場景,解決跨企業、跨組織的「信任」、「隱私」與「整合標準化」問題。本研究以目前三大聯盟鏈之一的Quorum為主要研究對象。為了幫助未來企業、組織在進行「私有鏈」或是「聯盟鏈」評估時,降低區塊鏈部署門檻,快速部署並套用實務應用之區塊鏈環境,我們以公有雲端運算服務商AWS(Amazon Web Service,亞馬遜雲端運算服務)為「運算資源」與「網路環境」之基礎,整合多種開源工具,僅需簡單透過更改設定檔,即可將Quorum使用自動化部署的方式快速部署到AWS上,且可依據需求選擇Clique、Istanbul BFT、Raft三種共識演算法,並搭配Tessera、Constellation兩種隱私協議,解決「區塊鏈部署」之複雜性問題並大大增進部署效率。另外,我們也利用開源工具收集各種共識指標,整合了節點資源與共識資訊的即時視覺化Dashboard,透過共識相關日誌之收集,將日誌集中索引,並提供日誌搜尋與視覺化工具,幫助快速進行共識狀態的分析。最後我們也整合了多種壓測與網路控制工具,方便進行不同共識演算法於不同「系統資源」與「網路環境」之比較,打造全面且易於擴充的「區塊鏈效能量測」工具。 zh_TW dc.description.abstract (摘要) Besides “Public Blockchain”, “Private Blockchain” and “Consortium Blockchain” also play a pivotal role. “Consortium Blockchain” will create many blockchain’s application scenario among various enterprises and organizations to solve the problems of “Trust”, “Privacy” and “Integration Standardization” across enterprises and organizations. This study takes Quorum, one of the three major consortium blockchain, as the main research object.In order to help enterprises and organizations to evaluate the “Private Blockchain” or “Consortium Blockchain”, reduce the threshold for blockchain deployment, quickly deploy and apply the blockchain to practical applications, we use the public cloud computing service provider AWS (Amazon Web Service) as the “computing resources” and “network environment” foundation. We integrate a variety of open source tools to make Quorum automated deployment fast by simply setup and apply the configuration files. Three consensus algorithms: Clique, Istanbul BFT and Raft, together with two privacy implementation Tessera and Constellation on Quorum can be choose by requirements. We’d like to solve the complexity and improve the efficiency of “Blockchain Deployment”.In addition, we also use open source tools to collect various consensus metrics, integrate real-time visualization of node resources and consensus status dashboard. Through the collection of consensus related logs, and provide log search and visualization tools to help consensus status analysis. Finally, we also integrated a variety of stress test and network control tools to facilitate the comparison of different consensus algorithms between different “system resources” and “network environments”, creating a comprehensive and easy to expand “Blockchain Performance Measurement” tool. en_US dc.description.tableofcontents 摘要 iAbstract iiContents iiiList of Tables xiList of Figures xii1 緒論 11.1 研究背景與動機 11.2 研究目的與問題 21.3 研究貢獻 31.4 各章節說明 42 相關研究與技術背景 52.1 Quorum簡介 52.2 Quorum區塊鏈上的共識演算法 62.2.1 Clique 62.2.1.1 Clique簡介 62.2.1.2 Clique的角色 62.2.1.3 Clique的重要概念 62.2.1.4 Clique的運作機制 72.2.2 Istanbul BFT 82.2.2.1 Istanbul BFT簡介 82.2.2.2 Istanbul BFT的角色 92.2.2.3 Istanbul BFT的重要概念 92.2.2.4 Istanbul BFT的運作機制 102.2.3 Raft 112.2.3.1 Raft簡介 112.2.3.2 Raft的角色 122.2.3.3 Raft的重要概念 122.2.3.4 Raft的運作機制 142.3 Quorum區塊鏈上的隱私協議 152.3.1 Constellation 152.3.1.1 Constellation簡介 152.3.1.2 Constellation的運作機制 162.3.2 Tessera 172.3.2.1 Tessera簡介 172.3.2.2 Tessera的運作機制 182.3 區塊鏈效能量測 182.3.1 Performance Evaluation of the Quorum Blockchain Platform 182.3.2 Eos: An architectural, performance, and economic analysis 192.3.3 Tendermint: Byzantine Fault Tolerance in the Age of 20Blockchains 202.3.4 Istanbul BFT Benchmarking 213 Quorum系統架構簡介 233.1 Ethereum介紹 233.1.1 Ethereum帳戶(Ethereum Account) 233.1.2 交易(Transaction) 233.1.3 區塊(Block) 243.1.4 智能合約(Smart Contract) 243.1.5 Ethereum Virtual Machine(EVM) 243.1.6 Ethereum客戶端(Client) 253.2 Quorum介紹 253.2.1 Quorum簡介 253.2.2 Quorum的隱私交易 264 量測指標與實驗環境 294.1 量測指標 294.1.1 公開交易(Public Transaction) 294.1.2 隱私交易(Private Transaction) 294.1.3 起始區塊(Start Block)與結束區塊(End Block) 294.1.4 總共識時間 304.1.5 出塊時間(Block Period) 304.1.6 TPS(Transaction per Second) 304.2 實驗環境 304.2.1 AWS Region 304.2.2 可用區域 Available Zone 324.2.3 VPC 324.2.4 EC2 324.2.5 EBS 324.2.6 AMI 334.2.7 Security Group 334.2.7.1 Egress 334.2.7.2 Ingress 334.2.8 Elastic IP 334.2.9 Launch Configuration 344.2.10 Auto Scaling Group 344.2.11 AWS Elasticsearch Service 344.2.11 AWS Cost 344.3 實驗變因 354.3.1 系統資源 354.3.2 網路環境 354.3.3 崩潰(Crash Failure) 364.3.4 共識演算法 364.3.5 交易類型 364.3.6 隱私協議 365 實驗工具 375.1 自動化部署工具 375.1.1 Packer 375.1.2 Terraform 385.1.3 Terragrunt 385.1.4 Monit 395.1.5 Ansible 395.2 系統監控 / 效能量測工具 405.2.1 Epirus 405.2.2 Prometheus 415.2.3 Grafana 425.2.4 Exporter 435.2.4.1 Node exporter 445.2.4.2 Block exporter 445.2.4.3 Grok exporter 445.2.5 Filebeat 445.2.6 Logstash 445.2.7 Elasticsearch 455.2.8 Kibana 455.3 壓測/網路控制工具 465.3.1 sysbench 465.3.2 netem 465.3.3 iptables 465.3.4 wondershaper 475.4 系統架構 475.4.1 系統架構概述 475.4.1.1 AWS 475.4.1.2 AWS Region 475.4.1.3 AWS VPC 475.4.1.4 AWS 可用區域 485.4.1.3 Client 485.4.1.4 Elastic IP 485.4.1.5 CT Server 485.4.1.6 Quorum Nodes 485.4.1.7 Logstash 495.4.1.8 Elasticsearch Service 495.4.2 部署實驗流程 505.4.3 系統日誌收集流程 505.4.4 共識資訊收集流程 515.4.5 共識流程 525.5 實驗腳本 535.5.1 Host Inventory 535.5.2 Keyword-driven Task 545.5.3 Ansible Playbook 545.5.4 Istanbul BFT Ansible Playbook範例 545.6 實驗流程 565.6.1 階段1 - 事前準備(Preparation) 565.6.1.1 AWS AMI準備 575.6.1.2 Terraform部署環境定義 585.6.2 階段2 - 實驗進行中(Experiment) 585.6.2.1 Terraform部署實驗環境 585.6.2.2 Ansible準備實驗環境 585.6.2.3 Ansible控制實驗流程 585.6.2.4 Prometheus收集Metrics 595.6.2.5 Grafana Dashboard 595.6.2.6 Epirus Dashboard 595.6.2.7 Kibana Dashboard 595.6.3 階段3 - 實驗結束(Teardown) 595.6.3.1 Ansible停止共識進行 595.6.3.2 Terrafrom關閉AWS資源 596 實驗結果 606.1 TPS(Transaction per Second)測試 606.1.1 實驗環境介紹 606.1.2 測試結果 616.1.2.1 每區塊處理的交易數量 616.1.2.2 每個區塊累積處理的交易數量 636.1.2.3 共識過程交易池中Pending Transaction之數量 656.2 中央處理器(CPU)壓力測試 676.2.1 實驗環境介紹 676.2.2 測試結果 686.3 記憶體(Memory)壓力測試 696.3.1 實驗環境介紹 696.3.2 測試結果 706.4 硬碟I/O(Disk I/O)壓力測試 716.4.1 實驗環境介紹 716.4.2 前測 726.4.3 測試結果 736.5 網路延遲(Network Delay)測試 756.5.1 實驗環境介紹 756.5.2 測試結果 766.5.2.1 固定時間網路延遲(Delay with specific time) 766.5.2.2 固定時間區間網路延遲(Delay with Margin) 786.5.2.3 固定機率觸發時間區間網路延遲(Delay with Margin Probability) 806.5.2.4 邊緣分布網路延遲(Delay with Margin Distribution) 816.6 網路封包遺失(Packet Loss)測試 836.6.1 實驗環境介紹 836.6.2 測試結果 846.6.2.1 基於機率之封包遺失(Packet Loss base on Probability) 846.6.2.2 基於相關係數機率之封包遺失(Packet Loss with Correlation Probability) 866.7 網路封包錯誤(Packet Corrupt)測試 886.6.1 實驗環境介紹 886.6.2 測試結果 896.8 網路封包亂序(Packet Misorder)測試 906.8.1 實驗環境介紹 906.8.2 測試結果 916.8.2.1 基於相關係數機率之封包亂序(Packet Misorder with Correlation Probability) 916.8.2.2 基於特定頻率之封包亂序(Packet Misorder with Specific Gap) 936.9 網路封包重複(Packet Duplicate)測試 946.9.1 實驗環境介紹 946.9.2 測試結果 956.10 網路流量限制(Rate Limit)測試 966.10.1 實驗環境介紹 966.10.2 測試結果 976.11 網路分割(Network Partition)測試 986.11.1 實驗環境介紹 986.11.2 測試結果 996.11.2.1 單一節點網路分割 996.11.2.2 兩群節點網路分割 1006.12 崩潰(Crash Failure) 測試 1016.12.1 實驗環境介紹 1016.12.2 測試結果 1026.12.2.1 Clique 1026.12.2.2 Istanbul BFT 1026.12.2.3 Raft 1036.13 不同隱私協議測試 1036.13.1 實驗環境介紹 1036.13.2 測試結果 1046.14 公開交易與隱私交易比較 1056.14.1 實驗環境介紹 1056.14.2 測試結果 1057 結論與未來研究方向 1077.1 結論 1077.2 未來研究方向 108Bibliography 110 zh_TW dc.format.extent 7399825 bytes - dc.format.mimetype application/pdf - dc.source.uri (資料來源) http://thesis.lib.nccu.edu.tw/record/#G0106971005 en_US dc.subject (關鍵詞) 區塊鏈 zh_TW dc.subject (關鍵詞) 亞馬遜雲端運算 zh_TW dc.subject (關鍵詞) 自動化部署 zh_TW 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 (關鍵詞) Private Blockchain en_US dc.subject (關鍵詞) Consortium Blockchain en_US dc.subject (關鍵詞) AWS en_US dc.subject (關鍵詞) Amazon Web Services en_US dc.subject (關鍵詞) Quorum en_US dc.subject (關鍵詞) Blockchain Deployment en_US dc.subject (關鍵詞) Automated Deployment en_US dc.subject (關鍵詞) Performance Measurement en_US dc.subject (關鍵詞) Performance Evaluation en_US dc.title (題名) 基於亞馬遜雲端運算服務之Quorum自動化部署與效能量測工具 zh_TW dc.title (題名) Automated Deployment and Performance Evaluation Tool Based on Amazon Web Services for Quorum Blockchain en_US dc.type (資料類型) thesis en_US dc.relation.reference (參考文獻) [1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system”, 2008.[2] Libra Association Members, “An Introduction to Libra”, https://libra.org/en-US/wp-content/uploads/sites/23/2019/06/LibraWhitePaper_en_US.pdf .[3] 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.[4] “Clique”, https://github.com/ethereum/EIPs/issues/225 .[5] Miguel Castro and Barbara Liskov, “Practical Byzantine Fault Tolerance”, 1999.[6] “Istanbul Byzantine Fault Tolerance”, https://github.com/ethereum/EIPs/issues/650 .[7] Diego Ongaro and John Ousterhout, “In Search of an Understandable Consensus Algorithm(Extended Version)”, USENIX Annual Technical Conference, 2014.[8] Leslie Lamport, “Paxos Made Simple”, 2001-11-01[9] “Constellation”, https://docs.goquorum.com/en/latest/Privacy/Constellation/Constellation .[10] “NaCl”, https://nacl.cr.yp.to/ .[11] “Curve25519”, https://en.wikipedia.org/wiki/Curve25519 .[12] “Tessera”, https://docs.goquorum.com/en/latest/Privacy/Tessera/Tessera/ .[13] Arati Baliga, Subhod I, Pandurang Kamat and Siddhartha Chatterjee, “Performance Evaluation of the Quorum Blockchain Platform”, 2018-07-19.[14] “caliper”, https://github.com/hyperledger/caliper .[15] B Xu, D Luthra, Z Cole, N Blakely, “Eos: An architectural, performance, and economic analysis”, 2018.[16] “Whiteblock”, https://whiteblock.io .[17] Ethan Buchman, “Tendermint: Byzantine Fault Tolerance in the Age of Blockchains”, 2016-06.[18] “Istanbul BFT Benchmarking”, https://github.com/getamis/istanbul-tools/wiki/Istanbul-BFT-Benchmarking .[19] “go-ethereum”, https://github.com/ethereum/go-ethereum .[20] “Parity”, https://github.com/paritytech/parity-ethereum .[21] “nethermind”, https://github.com/NethermindEth/nethermind .[22] “Quorum”, https://github.com/jpmorganchase/quorum .[23] “Packer”, https://github.com/hashicorp/packer .[24] “Terraform”, https://github.com/hashicorp/terraform .[25] “Terragrunt”, https://github.com/gruntwork-io/terragrunt .[26] “monit”, https://mmonit.com/monit .[27] “Ansible”, https://github.com/ansible/ansible .[28] “epirus”, https://github.com/blk-io/epirus-free .[29] “Etherscan”, https://etherscan.io .[30] “Prometheus”, https://github.com/prometheus/prometheus .[31] “Grafana”, https://github.com/grafana/grafana .[32] “Node exporter”, https://github.com/prometheus/node_exporter .[33] “Grok exporter”, https://github.com/fstab/grok_exporter .[34] “Filebeat”, https://github.com/elastic/beats/tree/master/filebeat .[35] “Logstash”, https://github.com/elastic/logstash .[36] “Elasticsearch”, https://github.com/elastic/elasticsearch .[37] “Kibana”, https://github.com/elastic/kibana .[38] “sysbench”, https://github.com/akopytov/sysbench .[39] tc(8) tc Manual.[40] iptables(8) iptables Manual.[41] “Wondershaper”, https://github.com/magnific0/wondershaper .[42] “etcd Hardware”, https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/hardware.md .[43] “etcd Failures”, https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/failures.md . zh_TW dc.identifier.doi (DOI) 10.6814/NCCU202000414 en_US