高昂的成本不僅僅是阻礙區塊鏈技術在現實中被廣泛采用的障礙。這似乎與它最初的原則有分歧,即通過切斷其交易中受信任的權威來降低成本。此外,比特幣、以太坊和其他公共區塊鏈正面臨著自身的根本問題——可伸縮性。目前,比特幣交易處理能力的最大值是每秒3到7個交易,而稍微好一點的以太坊只能處理大約15-30個交易1 2。與Visa和萬事達等傳統競爭對手相比,顯然,公共區塊鏈仍有很長的路要走。不僅這些區塊鏈的吞吐量仍然是一個值得注意的問題,而且是公共分類帳的存儲問題也同樣值得注意。從2016年1月到2017年1月,比特幣區塊鏈從50 GB增長到100 GB 。以太坊也面臨著同樣的問題。由于每年的存儲容量至少翻了一倍,這將是一個在公共區塊鏈中處理的難題。分片方法可以減輕痛苦,但不能治愈它,因為它們有可能會違反區塊鏈純粹的分散原則。
區塊鏈的可擴展性受到其共識算法和系統架構的嚴重影響。在比特幣和以太坊等早期區塊鏈基礎設施中廣泛使用的工作原理(PoW)已經被證明是低效率和低性能的。Stack證明是一種很有前途的共識算法,它正在被考慮取代它的前身PoW,然而,如果應用到公共區塊鏈,它將會帶來嚴重的安全問題。另一個因素,即系統架構也對區塊鏈的可伸縮性起著至關重要的作用。區塊鏈是一個軟件系統,因此它必須遵循軟件設計原則。比特幣和以太坊都是用單片架構構建的,這是很難擴展的。對于現代的軟件架構設計,單片被認為是一個糟糕的實踐。
開發分散應用程序不友好和耗費時間,這是為什么區塊鏈仍然具有挑戰性的兩個原因。大多數著名的可編程的區塊鏈,如Ethereum,都缺乏一個分散的應用程序模型控制器(MVC)框架,大多數都是在每一種高級編程語言中看到的。MVC框架支持快速開發和輕松部署軟件應用程序。
MVC是一個典型的軟件架構范例,它幫助構建一個簡便的軟件系統,以實現高維護性和提高安全性。此外,MVC設計范式支持并行軟件開發,因此它提高了開發人員的生產力。由于MVC設計模型已經在軟件開發人員中廣泛使用,所以應用它有助于減少基于MVC系統的學習曲線。
公共的區塊鏈把他們的注意力集中在透明度而不是隱私上。對于一些企業來說,透明度是值得歡迎的,但對其他企業來說,它的價值會更低。對于這些企業來說,隱私是至關重要的,而且比透明度更重要。例如,在金融和銀行業,他們不希望與競爭對手分享和發布他們自己的客戶信息。但是,他們仍然珍視區塊鏈技術所具有的高度安全和歷史不可逆轉的特性。因此,將區塊鏈技術應用于金融和銀行系統尤其需要考慮到隱私問題。在一些主要處理微事務的區塊鏈網絡中,為了實現完全的透明性,每一個轉換都需要被廣播到整個網絡中的所有節點。這實際上會損害系統的吞吐量或可伸縮性。
區塊鏈的建立是為了系統的高度穩定。比特幣在理論上能夠抵抗小于51%的攻擊。這意味著,即使在網絡中有多達半的惡意節點,比特幣仍然能夠很好地運行。其他無信任的區塊鏈基礎設施具有內置的共識PoS,理論上可以在網絡中使用最多的惡意節點。IIBM Hyperledger Fabric 或Intel Sawtooth都是一個許可的區塊鏈,它是為那些在隱私、性能和安全方面有很大保護的企業設計和建造的。然而,通過對其底層網絡基礎設施的依賴,包括Google Kubernetes和Docker Swarm,這不僅會導致系統難以設置和維護,而且還會暴露出嚴重的安全問題。這兩種容器編制系統都使用分布式鍵值存儲,比如Zookeeper、etcd和consul,,它們使用的是非對即錯的共識算法。每個鍵值存儲的實現略有不同,通常為分布式系統提供基本的服務,如動態配置、服務發現、鎖定、領導,選舉等。這些系統的設計目的是為了容忍在典型的集群中,減少在半節點或機器上的崩潰故障。盡管如此,即使是一個拜占庭式的斷層也能摧毀這些系統,因為它們都是使用的非對即錯共識算法。