企業區塊鏈應用程序的兩個關鍵問題
公共區塊鏈通過提供數據的透明度、完整性、可追蹤性、真實性來協調信任層。它可以記錄所有交易活動。這些獨特的屬性吸引了許多企業來開發應用程序,這些應用程序記錄利益相關者之間的透明活動、提供來源可追溯性的所有權詳細信息、證明存在的數字內容的時間戳等等。Aion基金會首席執行官Matt Spoke強調了公共區塊鏈是一條很好的前進道路的原因。
盡管區塊鏈存儲是開放和可訪問的,但在這種狀態下執行的每一個寫操作都會產生成本。因此,必須將應用程序的主要部分托管在區塊鏈上,以最大程度地降低成本。需要構建應用程序的其余部分來解決以下問題:
兩個關鍵問題
1. 需要在區塊鏈中存儲哪些數據?
公共區塊鏈上的任何數據都是開放的、訪問的且不可撤銷的。因此,除非數據已使用抗量子算法編碼并存儲,否則公共區塊鏈不符合GDPR(以及CCPA)法規的標準。
個人身份信息(PII)或危及用戶隱私的敏感數據不應存儲在區塊鏈上。但是,區塊鏈仍然需要賬戶地址才能將其與真實用戶單獨鏈接(在區塊鏈上可以是偽匿名的)。
2. 在哪個區塊鏈上構建應用程序?
軟件的性能直接取決于其依賴項及其主機環境的性能。區塊鏈帶來了一種去中心化架構的新模式,其中鏈上的每個節點不斷更新以維護狀態。除此之外,區塊鏈應用程序還需要處理各種問題及其實現。
共識
區塊鏈依賴于參與者節點的分布式共識。與任何權益證明(PoS)系統相比,工作量證明(PoW)共識需要花費更多時間才能在基于最終水印的系統上達成共識。同樣,其他變體共識算法也會影響交易確認時間,應用程序需要在不犧牲響應時間的情況下進行處理。
智能合約
公共區塊鏈智能合約方法是開放的,無論什么樣的用戶都可以調用。因此,智能合約需要確保其數據不被破壞,并防止濫用其業務邏輯。開發安全有效的智能合約需要高超的技能,并需要大量的實踐。此外,基于這種智能合約的復雜性和監控影響,它需要與外部組織進行安全審核。
區塊產生時間和交易數量
區塊的產生時間和可以合并到一個區塊中的最大交易數決定了系統的吞吐量。該應用程序理論上可以生成許多交易,但是這些交易仍需要與區塊鏈上的其他應用程序一起完成。例如,以太坊當前每秒處理15個交易。
訪問區塊鏈
盡管區塊鏈是開放和可消耗的,但需要可靠的連接才能使用完整的節點或第三方等選項(例如Infura、Blockdaemon、Nodesmith等)與其通信。完整節點保證最新的區塊鏈狀態。然而,它很難管理(特別是在維護和升級方面),而且不具有成本效益。
如果企業選擇第三方服務,它將引入額外的依賴性,其內部工作原理是將交易交付到區塊鏈、交易池管理、重試策略和重置策略。
天然氣成本和價格
以電網為例,與區塊鏈上執行交易相關的天然氣價格根據電網的需求和供應而波動。基礎電網加密貨幣價格也會對其產生影響。根據應用程序的使用模式,明智的做法是估算未來三到五年內運行該系統的天然氣成本預算,而在價格較低時提前購買天然氣將有助于降低成本。
工具與支持
最后但并非最不重要的一點是對區塊鏈生態系統的工具支持,因為它在開發、部署、調試和監視智能合約時起著至關重要的作用。在需要時獲得技術支持會帶來很多不同工具。
處理區塊鏈的復雜性
墨菲定律在理想世界中是無效的,但實際上出了問題,人們需要為可能出現的最壞情況制定計劃。其中一些問題是可以解決的,但是應用程序仍然需要處理來自區塊鏈復雜性的挑戰。
區塊鏈無法處理的交易
如今,許多應用程序都會產生大量的微交易,以記錄每一個小細節。區塊鏈尚未達到這一級別的可擴展性,但是,它不應阻止人們在其之上構建應用程序。這可以通過匯總交易(如果邏輯上可行)并減少區塊鏈上的交易提交來解決。
高吞吐量的另一種選擇是使用側鏈網絡(如果可用),這樣可確保將公共區塊鏈收益仍可用于應用程序,同時將部分工作卸載到側鏈。
未能實施交易
區塊鏈可能無法提取應用程序提交的交易。這可能是交易本身的問題,也可能與分散網絡問題有關(例如,區塊鏈中鏈的重組、硬分叉、交易池故障等)。該應用程序將在所有情況下通過記住已提交給區塊鏈但未通過的內容來重試。
如果交易失敗是由于較低的天然氣價格引起的,則應用程序將以較高的天然氣價格重新提交交易。否則,它將重試。這對于同步區塊鏈的狀態和應用程序的內部狀態至關重要。
電網擁塞
應用程序應該具有響應和適應電網擁塞的規定。如果提高天然氣價格不起作用,則該應用程序應定期或按指數重試。
電網擁塞采用區塊鏈的好處是,可能無法立即通過其他方式將交易提交到電網。這將減少重復消費的風險。該應用程序可以使用其內部狀態繼續運行,并在以后以較高的可用天然氣價格提交交易。
區塊鏈與內部應用程序狀態之間的不一致
如果應用程序是圍繞區塊鏈標記技術構建的,則應用程序的非區塊鏈部分將記住尚未確認或提交給區塊鏈的系統狀態。
當用戶訪問應用程序時,可以考慮這些未決的交易。但是,如果他們直接訪問區塊鏈瀏覽器,則余額或狀態可能會關閉。如果用戶很聰明并且可以訪問其私鑰,那么他們可以將交易直接發送到應用程序外部的區塊鏈,并耗盡余額或更改狀態。
解決此問題的一種方法是在應用程序中實現余額的透支保護,并在交易余額達到一定程度時允許執行交易。第二種方法是為應用程序創建內部賬戶,以代表用戶執行狀態更改。
總而言之,構建具有數百萬個用戶和大量交易的企業區塊鏈應用程序可能不適合常規軟件體系結構。因此,架構師需要為新的挑戰和未解決的問題做好準備,以解決這種大規模應用問題。
此處未涵蓋的重要方面是管理用于在區塊鏈上執行交易的密鑰。