Foresight Ventures: Crypto-Native DApp架構
原文作者: msfew@Foresight Ventures
原文作者: msfew@Foresight Ventures
一級標題

原文作者: msfew@Foresight Ventures
一級標題
原文作者: msfew@Foresight Ventures
一級標題
當我們開發一個現代化toC 應用程序的時候, 無論是Web App 還是Mobile App 還是Desktop App, 他們的基本架構都可以用以下三端來概括:
數據庫: 數據庫顧名思義, 專門存儲數據的. 後端會讀取或者修改數據庫的內容.
二級標題
a) 工程化
二級標題
架構角度: 每個端都有自己的一套規則和語言去描述數據. 前端用人類能理解的思路來構建頁面, 後端用面向對象的語言來操作數據, 數據庫使用關係代數語言來訪問物理存儲. 沒有辦法規定一套萬金油的規則來統一三端. 同時由於語言各司其職, 所以性能側重點也不同.
) 來達到類似前端直連數據庫的效果, 也有CouchDB 這樣為這樣的通信而生的協議, 但依然沒有解決其他的缺點.
c) 安全性
數據映射角度: 前端處理UI, 後端處理對象, 數據庫處理數據. 前端與後端的連接使用了UI 與對象的映射, 後端與數據庫的連接需要使用對象關係進行映射.
二級標題
c) 安全性
二級標題
二級標題
從以上三個角度, 我們分析了為什麼Web2 應用是三端架構, 而這也帶給了我們對區塊鏈DApp 的一些思考:

一級標題
通信: 對應了區塊鍊網絡不同的共識機制. 這些不同的機制也讓區塊鏈的互通變成難題, 但也有諸如Cosmos 和Polkadot 的互通協議, 嘗試去鏈接整個網絡. 但從Web2 應用的角度來說, 這並不意味著是最佳的解決方案. 數據映射則可以對應面向賬戶或者UTXO 的設計模式, 兩者在性能, 隱私, 和開發複雜度上各有優劣.
一級標題
安全性: 對應了區塊鏈的去中心化與Verify, Not Trust 思想. 安全性在區塊鏈領域中更為重要, 因此需要可驗證, 甚至完全透明公開的方式來對數據的處理和數據的可見度進行調整, 從而實現透明和Permissionless 的DeFi, 公開且具有所有權的NFT, 以及DApp 最重要的可組合性.
一級標題
大多數的Web3 DApp都遵循瞭如下的架構:
前端與Web2 App 沒有區別.
二級標題區塊鏈作為數據庫.:
二級標題
大多數的Web3 DApp 都遵循瞭如下的架構:
二級標題
a) Web3 DApp 細化組件
更多的組件

前後端通信: 節點Provider, 索引協議.
二級標題後端數據庫通信: 節點Provider, 存儲網絡網關.,二級標題

數據庫: 智能合約狀態和去中心化存儲網絡.
二級標題
b) Web3 DApp 如何做到無後端?
區塊鍊網絡上的圖靈完備的智能合約的存在,
讓區塊鏈能成為最好的Serverless 平台
或者說是可以被視作Trustware 的World Computer. 應用的數據和後端邏輯都可以在智能合約中實現.
和Serverless 函數相比, 智能合約更加優秀, 也造就了比Web2 應用更加優秀的架構和模式:
付費方式: Serverless 函數通常是開發者支付費用, 而智能合約大部分交互費用都是由用戶來支付, 且用戶也會心甘情願地為鏈上空間而付費.部署環境: Serverless 函數部署在中心化雲服務平台, 而智能合約部署在去中心化和無需許可的去中心化網絡上. 除此之外, 網絡的運營成本也是從中心化平台轉嫁到了礦工, 經濟系統會更加具有自主性..

2. Web3 Crypto-native DApp 架構
二級標題

Web2 的複雜應用其實也遠遠不止是我們之前所概括的三端了, 需要非常多模塊化, 中間層以及水平拓展的
架構拆分web3-react與Center.deva) 前端⇒ 開源+ Self-hosted 前端與對於Web3 前端的發展, 我認為有兩個大的趨勢:與框架的選擇: 前端的兩大框架React 與Vue 中, React 佔了Web3 的主導地位, 主要就是因為生態與各種組件的積累, 比如
與. 但是我個人感覺React 項目的主導權始終還是在Meta 手裡的,開源協議的更改也多次引起爭議, 所以如果有機會使用Vue 框架搭配一些; 依賴盡量少的第三方庫來進行前端開發的話, 還是比React 更加好的.Trustless.fi前端的Hosting: 前端是DApp 被黑(惡意劫持或腳本注入) 以及被censor (Uniswap 和Flashbots 的源碼中都有OFAC 的黑名單,) 的重災區. Yearn Finance 很早就okcontract在Arweave 這樣的永久存儲網絡上託管前端codeisspeech和theshake也提出了前端Marketplace 的概念, 讓用戶在多個社區託管的前端中選擇, 這也能保證中立性和“前端多樣性”; Etherscan 等其他區塊鏈瀏覽器其實也算是

和用戶可以通過它來直接進行交互, 或者也有專門的應用給合約生成前端, 如,; 最近Tornado 被censor, 也有很多社區(比如

) 在自發託管它的前端.
二級標題
前端有censorship resistence
二級標題
大大地提升DApp 整體的安全性和去中心化程度.

二級標題
b) 後端⇒ ZKP + 智能合約
App 架構的演進過程會是這樣的:
Web2 應用: 前端⇒ 後端⇒ 數據庫
Web3 簡單應用: 前端⇒ 智能合約
Web3 複雜應用: 前端⇒ ZKP ⇒ 智能合約
智能合約雖然讓整個應用變得去中心化, 但用一個公開網絡上的智能合約去處理應用的邏輯是一把雙刃劍. 數據與代碼公開了, 保證了透明可查與可組合性, 但也把隱私和安全風險完全暴露, 同時鏈上空間與計算的成本非常高.
ZKP 的加入作為一個前後端之間的中間層與通信方式, 又一次非常好地發揮了它的兩大優點:
擴容: 鏈上空間有限, 因此很多Web2 應用中的複雜算法無法實現, ZKP 能在保證計算可信的情況下, 將算法在鏈下執行, 鏈上驗證.
二級標題
計算可行性: ZKP 的計算種類是受限制的, 並非所有的計算可以通過ZKP 來解決.
二級標題
優化: 當操作的複雜度提高時, 計算時間和空間會顯著提高, 這就需要非常多的軟硬件優化. 同時很多情況下只能在吞吐量上進行顯著提升, 整體Proving 的overhead 很難削減.
c) 數據庫⇒ 去中心化節點服務

目前來說, DApp 常用的都是中心化的NaaS, 比如Alchemy 與Infura, 未來在我的構想裡有三個更好的方向:
二級標題Tornado.cash多中心NaaS, 使用多個中心化NaaS 作為備選(類似Chainlink + Uniswap 的預言機組合). 這是一個更加可行且靠譜的方案, 能保證抗審查和uptime.
二級標題
自託管NaaS. 終極方案, 不僅可以保證“數據庫” 連接的可信與各種數據的隱私和抗審查, 也可以增加網絡的去中心化程度. 搭配上自託管前端, 整個DApp 就會無比去中心化.
最近剛被制裁的
(尤其是老闆本) 是一個非常Crypto-native 的DApp, 它滿足了我們很多的定義:Tornado.cash完全使用前端代碼中的ZK 電路和智能合約實現, 沒有任何服務器端代碼.
3. Web3 Infra
託管在IPFS 中

一級標題我相信未來會有更多應用以:
一級標題
的範式來進行架構的打造, 這是目前我心目中最完美的去中心化的Web3 應用架構.
一級標題
上述只是簡化版的架構, 以下是較為具體的一個實際DeFi 應用的架構:

其中包含了除了節點服務以外的幾個
關於Foresight Ventures
關於Foresight Ventures
關於Foresight Ventures
Foresight Ventures 押注加密貨幣未來幾十年的創新歷程,旗下管理多支基金:VC基金、二級主動管理基金、多策略FOF、特殊目的S基金「Foresight Secondary Fund l」, 總資產管理規模超過4億美元。 Foresight Ventures 堅持“Unique, Independent, Aggressive, Long-term”的理念,通過強大的生態力量為項目提供廣泛的支持。其團隊來自包括紅杉中國,中金公司,谷歌,比特大陸等頂級金融和技術公司的資深人士。
Website: https://www.foresightventures.com/
Twitter: https://twitter.com/ForesightVen
Medium: https://medium.com/@foresightventures-zh
Substack: https://foresightventures.substack.com
Discord: https://discord.com/invite/jYtyfxfB
Linktree: https://linktr.ee/foresightventures
Related Links
0:
https://learnblockchain.cn/article/4338
https://www.zhihu.com/question/457087098
0a:
https://www.zhihu.com/question/457087098/answer/1864992254
https://www.zhihu.com/question/457087098/answer/1863665807
0b:https://www.zhihu.com/question/457087098/answer/1911173154
0c:
https://www.zhihu.com/question/457087098/answer/1864258142
https://www.zhihu.com/question/457087098/answer/1910852580
1:
https://medium.com/iearn/self-hosting-web3-services-299306b706ee
1a:
https://twitter.com/suhailkakar/status/1555894207570513920
1b:
https://www.informit.com/articles/article.aspx?p=3006828
2:
https://mp.weixin.qq.com/s/1h6yqCWyzYLM8WPGlGdtVA
2a:
https://twitter.com/ChainLinkGod/status/1562125152506195969
https://github.com/Uniswap/web3-react
https://www.codemag.com/article/1701041/Legal-Notes-What’s-the-Deal-with-ReactJS’s-Licensing-Scheme
https://twitter.com/paulmillr/status/1558578060940791809
https://github.com/Nemusonaneko/projects-with-restrictions/
https://medium.com/iearn/self-hosting-web3-services-299306b706ee
https://twitter.com/samecwilliams/status/1561127191106158592
https://twitter.com/forgivenever/status/1556820240993882112
https://okcontract.com/whitelist
https://twitter.com/lickitungxbt/status/1558477975292715016
https://twitter.com/DotTheShake/status/1557703404574707717
https://twitter.com/mallowsxyz/status/1560655467613143040
2b:
https://twitter.com/LeopoldSayous/status/1515982366635966466
2c:
https://ethereum.org/en/developers/docs/nodes-and-clients/nodes-as-a-service/
2d:
https://mp.weixin.qq.com/s/USa7y6IZRjYXa8mWK4t2Lg
https://ipfs.io/ipfs/QmTFnDJbfZLbopwjowmwNE9LFvK599sxhktAArQUvH7Tex
3:
https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application
https://mp.weixin.qq.com/s/ifaVkhdgmh41zxDKVE68Kw
https://www.usv.com/writing/2018/10/the-myth-of-the-infrastructure-phase/


