加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > PEPE > Info

簡述DeFi應用架構設計之道_EFI:WEB

Author:

Time:1900/1/1 0:00:00

前言

DeFi應用跟傳統應用的差異性還是比較大的,商業模式不同,產品模型也不同,就連落地實現的技術棧也有很大不同。一般,傳統應用也稱為Web2應用,而DeFi應用則可被歸入Web3之列。

我們不說商業模式和產品模型,就只說說技術棧。DeFi應用目前所涉及到的技術棧主要包括:Solidity、Subgraph、PriceOracle、Hardhat、Ethers等等。這些技術棧,大多就連阿里、騰訊、字節等互聯網大廠里一些高達P9級別的大佬可能聽都沒聽過。傳統應用架構中所熱門的微服務架構、大數據架構、云原生架構等,在DeFi應用中也基本毫無用武之地。

這些技術棧只是DeFi應用的硬門檻,如果不熟悉這些技術棧,就難以設計出優雅的DeFi應用。而且,除了這些硬門檻,還存在一些軟門檻,主要是一些思維上的東西,如果沒在區塊鏈行業中沉淀至少一兩年的話是掌握不了的。因此,就算是傳統應用的架構大佬們,也無法平滑無縫地將技能切換到DeFi行業。而且DeFi也只是這兩年才開始爆發起來的,也因此,這個行業中架構師級別的人才非常緊缺。

我從2017年中旬就開始研究區塊鏈,在這個行業深耕了幾年時間,做過了幾款DeFi應用,才終于有了一些根基。基于我的經驗總結,來聊聊我理解的DeFi應用的架構設計之道。

FTX索賠網站在開放約一小時后下線:7月12日消息,FTX用戶聯盟于7小時前發推稱FTX索賠網站開放,該網站顯示為在FTX、FTX US、Blockfolio、FTX EU、FTX Japan和Liquid用戶提供訪問賬戶信息、查詢歷史交易、提交電子索賠證明等功能。但FTX索賠網站在運行約一個小時后下線,截止發文,該網站目前顯示不可用,原因尚未查明。[2023/7/12 10:49:23]

下面我來一一介紹下幾個模塊:

Blockchain:底層的區塊鏈網絡,一個DeFi應用一般都會部署到多個不同的區塊鏈網絡

SmartContracts:智能合約,是DeFi應用的核心業務實現,也是靈魂所在

PriceOracle:價格預言機,用來提供價格信息的,一般可分為鏈下預言機和鏈上預言機

KeeperServices:智能合約的任務觸發器和執行器,因為智能合約本身沒有自動觸發執行任務的能力,所以需要外部的任務觸發器協助

Subgraph:子圖,也被稱為索引器,主要將鏈上數據重新組裝成方便前端查詢的數據

GraphNode:Subgraph所運行的環境,會同步鏈上區塊數據給Subgraph處理

Wallet:錢包應用,最主流的就是MetaMask

美聯儲會議紀要:“幾乎所有”美聯儲官員都同意6月暫停加息:金色財經報道,美聯儲會議紀要顯示,美聯儲官員一致同意在6月會議上維持利率不變,以爭取時間并評估是否需要進一步加息,盡管多數委員預計最終需要進一步收緊政策。雖然“一些參與者”希望在6月份加息,因為抑制通脹的進展緩慢,但“幾乎所有參與者都認為維持”現有的5%至5.25%的聯邦基金利率是合適或可以接受的。“大多數與會者認為,在這次會議上保持目標區間不變,將使他們有更多時間評估經濟進展,”朝著將通脹從目前的兩倍多的水平恢復到2%的目標邁進。[2023/7/6 22:19:59]

WebUI:前端展示的UI頁面,一般用Vue、React等前端框架

SDK:封裝了對Subgraph的查詢、智能合約的調用、錢包的連接等,方便前端UI的調用

相信有不少人會產生一個疑惑:為什么一個DeFi應用系統會有這么多不同的組成?

首先,智能合約本身缺乏自動執行的機制。Web2應用因為有定時器,所以很多任務都可以用定時器自動執行。但智能合約卻沒有定時器,因此有些任務就沒法自動執行,就需要外部程序來觸發執行這些任務。這樣的外部程序就被稱為Keeper,比如執行Compound的清算任務的liquidator就是一種Keeper。

大部分Keeper都是鏈下中心化的程序。而近一年來,也陸續出現了一些去中心化的Keeper網絡,我所知的就有keep3r.network、ChainlinkKeepers、KeeperDAO。

Pudgy Penguins推出的實體玩偶Pudgy Toys已上架亞馬遜商城:5月19日消息,由 NFT 項目胖企鵝Pudgy Penguins 推出的實體玩偶 Pudgy Toys 現已上架亞馬遜商城,目前已開放購買的產品包含 2 個毛絨玩具系列,售價分別為 24.99 美元及 12.99 美元,塑料及橡膠材質公仔系列暫未開放購買,所有商品最早于 6 月 3 日發貨。Pudgy Penguins 表示,每個毛絨玩具都有對應的官方 NFT 證書,可實現數字企鵝定制體驗Pudgy World。Pudgy World 將為非 NFT 用戶提供他們的第一個區塊鏈錢包、Soulbound NFT 和 Tradeable NFT,只需用戶使用一個電子郵件地址進行簡單注冊即可。用戶可通過附帶證書解鎖 Pudgy World Season 1 的獨特特征,用戶可將這些特性裝備到 Forever Pudgy Penguin 上,或進行買賣,與朋友一起游玩迷你游戲。在 Retail Monster 和 PMI Toys 的支持下,Pudgy Toys 將陸續在全球一些最著名的零售店和專賣店上架。[2023/5/19 15:13:30]

其次,也同樣是因為智能合約本身的限制,無法像Web2應用一樣主動向外部程序發起網絡請求獲取數據。否則,如果智能合約可以向Coinbase、Binance等中心化交易所發送網絡請求獲取價格數據的話,那不同節點因為請求的時間不同,獲取到的價格也不同,就無法達成一致了。但智能合約又的確需要獲取價格信息,所以就有了PriceOracle。

Marathon取消第四季度財報電話會議:金色財經報道,比特幣礦企Marathon Digital取消了定于周二在美國收盤后召開的第四季度財報電話會議。根據周二提交的一份文件,在收到美國證券交易委員會(SEC)關于“會計錯誤”的通知后,該礦業公司推遲了第四季度和2022年全年業績的發布。這些錯誤與數字資產的減值有關,并影響了最早可追溯到2021年的公布業績。Marathon表示,它打算更正這些錯誤并重述受影響的財務報表。備案文件稱,該公司應該將其MARA礦池的收入記錄為毛收入,而不是凈收入。

該文件稱,“據Marathon估計,由于其財務報表中收入的‘凈’與‘毛’收入列報方式不同,其截至2021年12月31日止的收入和收入成本都被低估了。因此,在完成2021年的重述后,收入、能源、托管和其他方面的收入預計將增加。”但是,文件補充說,這次重述不應對2021年或2022年的任何中期的總利潤率、營業收入或凈收入產生任何影響。[2023/3/1 12:35:16]

PriceOracle主要可分為鏈下預言機和鏈上預言機兩大類。

鏈下預言機以Chainlink為代表,其基本原理是將多個交易所的數據源進行多層面的聚合后再將最終的價格數據更新到鏈上智能合約,DeFi應用就可以直接讀取鏈上智能合約的價格信息。

鏈上預言機則以Uniswap的TWAP為主流,其原理我在之前的文章《剖析DeFi交易產品之Uniswap:V2下篇》已經聊過,就不再重復了。

報告:疑似朝鮮黑客從1055個被盜的NFT中賺取36.5萬美元:金色財經報道,根據區塊鏈安全公司SlowMist的一份報告,一個與疑似朝鮮APT集團有關的錢包地址從網絡釣魚攻擊的受害者那里偷了1055個NFT,并通過出售這些NFT賺了300個ETH(36.5萬美元)。

APT是高級持續性威脅的縮寫,是指進入互聯網網絡并能長期不被發現以竊取數據的網絡犯罪分子。這些實體使用各種攻擊載體,如網絡釣魚,其中有一些是由朝鮮政府贊助的。[2022/12/25 22:05:53]

另外,智能合約存儲的數據和傳統Web2的數據庫完全不同,沒法像MySQL、MongoDB這些數據庫一樣對數據進行索引查詢,也沒法做到對數據進行分組、排序或組合。而這種需求也屬于剛需,為了滿足這種需求,就出現了TheGraph,區塊鏈數據索引協議。Subgraph就是該協議的核心組成,GraphNode則是其運行環境。

最后,WebUI和SDK本來是可以合在一起的,但因為很多前端開發人員并不熟悉Web3,因此就將Web3相關的操作抽離出來組裝成了SDK。如此分離之后,WebUI就只需要專注于前端的展示層,而SDK則承接了前端的數據層。

具體到每個不同的DeFi應用,實際的架構可能稍微有些許差異,比如Uniswap就不需要KeeperServices,也不需要PriceOracle。但大部分稍微復雜些的DeFi應用基本都需要這些組成,也因此,這種架構也已經成為大部分DeFi應用的通用架構。

安全性也至關重要,所以,智能合約的設計也自然是非常關鍵的一環。

雖然,具體的設計因具體產品而異,但依然有一些通用的設計原則,有助于我們設計出相對優雅的智能合約產品。所謂的相對優雅,在我看來,最主要的就是滿足幾個特性:安全性、功能性、擴展性。

因為智能合約需要全部開源,所以安全性肯定是排在第一位的,避免遺留各種安全漏洞,尤其要防止閃電貸攻擊、重入攻擊、權限漏洞等。正式上線主網之前,應該充分進行內部的安全審計和外部審計機構的安全審計,以及充分地測試,包括內部測試和對外的開放測試,甚至公開掛出懸賞,讓更多專業人士一起來尋找隱藏的漏洞。

滿足功能性是一個基本需求,比如,一個借貸產品,能存取借還就是必須滿足的基本需求;一個衍生品DEX,能放大杠杠交易也是必須滿足的基本需求。但要滿足到何種程度,就可能受其它約束條件限制了。比如,衍生品DEX為了防止閃電貸攻擊,可能會禁止同個賬戶在同個區塊內既開倉又平倉。

擴展性也是非常重要的一個特性,畢竟,一個應用系統并不是只發布一個版本就足夠了,總需要持續迭代添加新功能。比如,衍生品DEX,第一版可能只實現市價交易功能,第二版需要增加限價交易功能,第三版再增加止盈止損功能。

這幾個特性也不是全正相關的,比如,進一步提高安全性,就可能會減低功能性和擴展性,因此,要追求的并不是三種特性全都越高越好,而是要根據情況有所取舍,達到一種平衡狀態即可。

而要達成目標,所需要遵循的設計原則和背后本質的設計思想,其實還是架構師們所熟知的那些,比如,單一職責原則、開閉原則、依賴倒置原則、接口隔離原則等,以及關注點分離、低耦合高內聚、適度設計等架構思想。

Uniswap就是一個很好的典范,就以v2為例,所有智能合約根據模塊化拆分為了幾個小項目:v2-core、v2-periphery、solidity-lib、liquidity-staker。不同模塊之間只依賴于接口,而且只是上層模塊依賴于下層模塊的接口,下層則不依賴上層,這也符合分層架構思想。而且,整個協議,基本是全自動化的,交易對可以自由創建,手續費率是硬編碼的,也幾乎沒有任何需要運營配置管理的參數,所以,治理成本也非常低。綜上所述,Uniswap就變得簡單化了,簡單就是美,因為簡單,測試容易,不容易出BUG,擴展性也好,這就是優雅的設計。

做架構設計,最核心的就是要將復雜問題簡單化,這應用到開源的智能合約中,顯得更加重要。

設計實踐

下面以我目前負責的DeFi應用為例,聊聊我的一些實踐總結。

先簡單介紹下背景,小部分朋友知道我最近加入了新團隊,在負責一個DeFi產品,確切地說,是一個衍生品DEX。交易模式主要采用AMM模式,但不是Uniswap那樣提供雙幣流動性的AMM,而是提供單幣流動性的AMM,我們稱為ElasticAMM。具體業務就不展開了,以后再另外細聊,這次我主要還是講講架構設計方面的考量。

整個應用系統的整體架構和上面所說的大致相同,所以我不打算再贅述整體架構,而主要想聊聊智能合約方面的設計。

智能合約層面,其實還分為了主協議和**外圍協議。**而我主要想聊的是主協議的設計,下圖就是主協議的架構:

綠色的只表示參與到系統中的幾種角色,其它顏色的則都是智能合約里的子模塊了。

首先,我采用了分層架構思想,將系統進行了層次劃分,上層依賴于下層,但下層卻不能依賴上層。其次,模塊之間只依賴于接口,而不依賴于具體實現。這樣,模塊之間才能實現低耦合。

作為Trader和LP的用戶,都統一跟Router交互,Router在其中就相當于起到了路由網關的作用。而且,因為底層對它沒有依賴,所以就很容易升級替換。

每個交易對分別有一個Amm合約和一個Margin合約,且Amm和Margin是相互綁定的。因此,自然而然地,就想到了用工廠模式來創建不同的交易對。原本的設計中,其實只有一個工廠合約,但在具體實現中,最終發現工廠合約超過了**智能合約最大字節數,**于是就將工廠合約拆分成了三個。

Amm的職責是負責底層的兌換交易,而Margin的職責則是管理用戶的倉位。LiquidityERC20是流動性代幣合約,由Amm繼承。Vault管理著主協議中的實際資產,由Margin繼承。該模塊是整個協議的核心,只實現底層基本的功能,比如加減保證金、開平倉、添加和移除流動性等。擴展性的功能則可由上層模塊實現,比如由Router實現ETH和WETH的兌換支持,再比如后續再添加上層合約支持限價單、止盈止損等。

Config合約則管理了所有可配置的參數,PriceOracle即封裝了一些讀取價格的接口。

一旦理解了這個架構,就會發現其實很簡單也很清晰。當然,做架構設計難的地方就在于,并非總能想到這么簡單的方案。

總結

DeFi應用系統的整體復雜度其實還遠遠比不上Web2應用系統的,但因為技術棧幾乎完全不同,而且產品思維上也有較大差異,而且DeFi應用還都是開源的,這些都變成了這個行業的門檻。所以,缺乏經驗的人現在進入其實并不太容易上手了,就算是Web2的高端人才,進了Web3依然需要些時日進行學習和沉淀。

這次我主要分享了下目前DeFi應用的整體架構,以及智能合約層面的架構設計的一些經驗總結。雖然和Web2相比,技術棧不同,還需要具備區塊鏈思維,但本質上的架構思想其實還是通用的。

Tags:EFIDEFIDEFWEBDeFinomicsRestaurant DeFiDEFI SWEB69

PEPE
一文了解Polygon新擴容技術Plonky2,為何它比現有替代方案快100倍?_以太坊:poloniex是什么交易所

原文:Polygon PolygonZero的任務很簡單:使用零知識證明將以太坊擴展到十億用戶,同時不影響去中心化或安全性。實現這一點就需要一種快速有效的證明系統.

1900/1/1 0:00:00
關於合約系統升級維護完成的通知_MEXC:EXC

尊敬的MEXC用戶: MEXC合約系統升級已完成。該系統升級完成後15分鐘內只可進行撤單和轉入(web端以及app端),其他合約功能將於15分鐘後全部開放.

1900/1/1 0:00:00
Gate.io 已開啓APT/USDT、APT/ETH(自動做市商AMM模式)新版流動性礦池獎勵,並各新增額外限時獎勵68,700 APT_GATE:VEN

Gate.io今日已正式上線APT/USDT、APT/ETH新版流動性礦池,並於10:00就APT/USDT、APT/ETH交易礦池各新增額外68,700APT.

1900/1/1 0:00:00
Gate Union - Youtuber Recruitment For Alternative Language Regions_GATE:Gate.io

Thecryptocurrencymarketisgrowingdaybyday.However.

1900/1/1 0:00:00
Gate.io Startup非首發上線Galaxy Heroes Coin (GHC)及免費分發規則公告(免費瓜分9,137,426,900,585個GHC)_GAT:STA

關於Gate.ioStartup免費空投計劃爲回饋平臺用戶,Gate.io上線“免費空投計劃”,在Startup區不定期進行區塊鏈項目的免費空投計劃.

1900/1/1 0:00:00
Gate.io 已開啓LIFE/USDT、LIFE/ETH新版流動性礦池獎勵(自動做市商AMM模式),各新增額外限時獎勵3,050,600 LIFE_GATE:gate.io交易平臺登錄不上去

LIFE/USDT、LIFE/ETH新版流動性礦池模式)已正式上線,交易市場50%手續費收益將新增投入到流動獎金池中;Taker和Maker手續費即日起調整至0.3%.

1900/1/1 0:00:00
ads