The Architecture of a Web 3.0 application
The Architecture of a Web 3.0 application
筆記:
Web 3.0應用程式也被稱之為 "DApps",因為它是一種分布式技術,
所以基礎設施、計算資源、數據、交易數據、歷史、認證和其他架構組件、庫和中間件必須採用centralized分散/分布式技術,
而不應該是decentralized集中式的。
支 持 本 站: 捐贈伺服器等運維費用,需要您的支持!
1 前端層與傳統的網絡應用程式類似,但它應該被託管在IPFS或SWARM的分布式存儲之上,
而不是在AWS、Azure或內部的伺服器上。 不過貌似這不是必須的
2 業務邏輯層完全留給區塊鏈。 所以它將是一個部署在以太坊虛擬機(Ethereum Virtual Machine, EVM)之上的智能合約smart contracts程序(Solidity或Vyper開發語言)。
業務邏輯層的計算資源需要建立在以太坊區塊鏈的專用節點上。
這可能相當複雜,但有許多第三方服務供應商,如Infura、Alchemy、Quicknode等可以使用,這樣就極大方便了開發者著手。
3 前台層需要通過一個第三方服務提供商(Provider)與業務邏輯層通信。 通信協議將是JSON-RPC。
如果只想讀取數據將不需要對通信進行簽名,
但如果你想寫數據到區塊鏈就需要簽名,此時可以使用簽名服務的Metamask。
基本上,DApp要求用戶輸入他們的私鑰,並將簽署的交易發送到區塊鏈上。
Metamask將用戶的私鑰存儲在瀏覽器中,每當前端需要用戶簽署交易時,它就會調用 Metamask
4 因為Ethereum異常昂貴,我們不可能每次更新狀態時都把所有東西都存儲在區塊鏈上。 因此建議使用區塊鏈外的分布式存儲,如IPFS或Swarm。
在實踐中,IPFS和Swarm是通過Infura和Pinata使用的。
5 FE的Web3.js庫是從區塊鏈加載數據的有效手段。 它還能夠監聽數據的更新事件。
然而由於其功能有限,建議使用 "The Graph "技術。
"The Graph"是建立在區塊鏈,通過索引區塊鏈數據、使用GraphQL作為IF,其靈活性高,延遲性能也不錯。
6 Ethereum很貴,而且伸縮性極差,所以引入了側鏈技術。
我們可以使用Polygon、Optimistic Rollups and zkRollups這些側鏈在區塊鏈外處理交易,並只在存儲交易數據時才把它提交至區塊鏈。
這將帶來快速的處理和低廉的成本。
7 開發者需要有一個開發環境架構來開始工作,有一個很好的選擇叫Hardhat。
"Hardhat Network "使構建、部署、測試和調試代碼變得容易。
留言簿