Web3系列研究 | 中國信通院尹子航:Infura——幫助用戶快速接入以太坊和IPFS網絡
一、目標愿景
IaaS(Infrastructure as a Servic,基礎設施即服務)為普通用戶提供開發便利,實現資源的最大化利用。通過為傳統互聯網應用開發者提供場外服務器,存儲和網絡硬件等設施,節省開發成本的同時也降低了應用開發的門檻,促進應用程序的多樣化生態構建。其中,最高端IaaS的代表產品是亞馬遜的AWS(Elastic Compute Cloud),IBM、VMware和惠普以及其他一些傳統IT廠商也提供類似服務,其極強的靈活性和便捷性受到用戶廣泛青睞。
區塊鏈系統分布式應用(DApp)開發用戶亟需一款面向區塊鏈系統的IaaS產品,幫助用戶快速上手,構建區塊鏈商業文明。目前,DApp開發普遍面臨開發門檻高、完成度低、應用質量差等問題。傳統接入以太坊網絡并進行開發工作,需要本地部署以太坊節點,數據下載緩慢,同步節點耗時,部署全節點需要數天乃至數周之久。然而,目前以太坊轉賬等應用必須依托完整的以太坊節點,用戶需要能夠降低區塊鏈應用開發門檻、簡化區塊鏈系統數據訪問操作的接口型應用程序,以便幫助區塊鏈應用程序開發人員解決存儲空間、開發效率、可擴展性等問題。
Infura是為用戶提供對以太坊和IPFS網絡的即時、可擴展的 API訪問的,確保用戶去中心化應用程序隨需求的演變而不斷擴展的IaaS產品。Infura以先進的可動態擴展的微服務驅動架構為依托,通過提供API服務,為跨行業開發人員、DApp團隊和企業提供開發套件,將應用程序連接到以太坊或其他去中心化平臺,為全球的去中心化應用程序奠定基礎,提供高可用性、可擴展性和高度安全的后端系統。Infura是以太坊網絡上的完整節點的集合,使開發人員能夠通過符合以太坊客戶端標準的API接口連接到節點。
二、解決方案
1. 技術架構
Infura API套件采用微服務驅動的架構,該架構可動態擴展以支持Infura API。Infura API套件始終擁有最新的網絡更新,并在所有網絡更改期間保持服務可用性。它通過配置一個新的虛擬服務器,安裝以太坊客戶端軟件并將區塊鏈同步到最新的塊數據(也稱為“節點配置”),使得節點之間的同步時間更快(小于1小時),并且不需要額外的工具。開發人員可以通過HTTPS和WebSockets連接到以太坊和IPFS,請求響應時間比其他服務和自托管解決方案快20倍。通過使用Infura API套件,開發人員可以擁有更多的時間與用戶溝通,并打造定制化產品。
圖1 Infura API應用架構圖
2. 關鍵技術
Infura基礎設施中最著名的部分是托管的以太坊客戶端網絡,它通過客戶端兼容的JSON-RPC、HTTPS和WSS支持主網和測試網。Infura還推出IPFS API及其他去中心化網絡接口,為實現Web3開發套件奠定基礎,有利于構建更多的去中心化存儲產品。
Infura使用彈性塊存儲(EBS)將數據直接寫入快照,根據對比快照間差異完成系統處理,保障Infura服務有序運行。如果同步時間超過特定閾值,將被認為時間過長而啟動一個新節點,以便快速保持系統運行,如此可以更高效、更具成本效益地通過快照跟蹤EBS卷上的增量更改,確保Infura服務不停機。
Infura的流量按請求類型被分為三類:Near-Head、Archive和 Full。其中,Near-Head是用戶通過直接訪問數據緩存區域獲得快速響應的請求類型;Archive是為增強查詢速度額外存儲歷史狀態節點數據的請求類型,將節點的歷史狀態信息“存檔”保存下來,大大增加了整體的存儲容量;Full是直接訪問全節點數據的一種請求類型。Infura的大部分流量是Near-Head類型(70%以上)。為了服務大量的Near-Head請求,Infura使用內容分發網絡(CDN)緩存數據(“近端緩存”)。但是伴隨流量增長, 平臺受到CDN 限制,隨后Infura切換到 Redis 存儲系統,允許緩存所有近端數據并讓支持擴展。
圖2 Infura 節點訪問請求處理結構
Infura使用各類索引器和緩存方法幫助處理頻繁的調用請求。Infura構建Log Indexer解決了傳統以太坊客戶端使用的布隆過濾器檢索面臨的響應時間過慢問題;Infura創建 “重組跟蹤器”,可以檢測新塊數據的重組;請求處理方面,Infura通過一組專門的索引器和緩存來處理更頻繁調用的請求;Infura開源Key router微服務,使用一致哈希將鍵映射到一組數據源,這有助于將特定類型的流量路由到特定數據源;Infura還使用節點監控服務,跟蹤關鍵統計數據,并根據需要重新啟動節點,使用Vipnode服務創建按各種屬性分組的單獨內部節點拓撲,有助于控制節點的塊傳播時間和帶寬利用率。
3. 業務應用
Infura模塊化擴展方案使區塊鏈基礎網絡訪問更容易運行和擴展,并根據用戶反饋定制開發更多項目,提供更多功能服務。例如,Infura提供全套的交易工具,幫助開發人員創造更好的用戶體驗;豐富Infura儀表盤,讓開發者更好的了解項目情況;支持Web3中MetaMask,Aragon,Gnosis,OpenZeppelin 等眾多優秀項目等。目前,Infura已經吸引超過 350,000 名開發人員使用。
三、項目歷程
- 2016年Infura正式發布。
- 2017年Infura幫助 Cryptokitties 優化其基礎設施。
- 2019年Infura被 ConsenSys全資收購,變為其下業務部門。
- 2019年7月,推出高級以太坊API產品 Infura+。
- 2020年8月,Infura 幫助 Uniswap 成為DeFi中最活躍的協議之一,并且以創紀錄的時間服務前所未有的消費者需求。
- 2020年11月11日,Infura以太坊API發生服務中斷,此事件引發人們開始思考對于Infura的過度依賴問題。
- 2021年2月,Infura支持分布式網絡Filecoin Mainnet的最新發布。
- 2022年Infura 將進一步從 Merge、MetaMask 和 DeFi 應用程序等方面繼續發力。
四、思考評論
Infura給區塊鏈相關開發者提供了便利,促進區塊鏈應用開發生態構建,提升區塊鏈應用商業價值。Infura可以讓普通開發者在不本地運行龐大的全節點就可以快速接入平臺區塊鏈系統,提供負載均衡的API節點集群,并且通過Infura也可以很方便的接入IPFS,這些都大大降低了進入區塊鏈應用程序開發以及Web3世界的門檻,極大豐富了區塊鏈應用,推進了去中心化平臺及相關技術的發展。
Infura的壟斷化傾向與去中心化思想存在明顯沖突,過度依賴Infura的開發將帶來中心化問題。Infura阻礙開發人員運行完整的區塊鏈系統節點,也間接影響了用戶為區塊鏈系統的分散化做貢獻的動力,阻礙了去中心化架構的發展演進。其中,對于Infura的集中化擔憂主要來自亞馬遜服務器上的托管,Infura已經擴展到更多云服務提供商,以解決純粹使用亞馬遜云托管的問題。同時,為應對Infura的集中化問題,也有其他替代方案如降低全節點存儲要求,允許用戶本次運行完整的區塊鏈系統或者選擇其他開發客戶端等,但是目前仍沒有其他方案能挑戰Infura的地位。相信未來會有更多的替代性方案解決Infura的壟斷化、集中化的問題,以促進區塊鏈系統的分散化。