比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

使用 Multicall 加速 DeFi 查詢調用_CON

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

背景介紹

有時,從區塊鏈獲取數據的成本可能會非常高,不管是從請求花費的時間還是從發送的請求數量上來說,都是這樣。如果我們想同時獲取大量數據,用來在儀表板上顯示或進行分析,我們必須調用合約的不同函數或者用不同參數調用相同函數,這些都可能會導致查詢時間很長。另外,當我們使用像Infura這樣的節點提供商,也很容易達到發送請求數量的限額。

什么是Multicall?

Multicall是一個npm軟件包,可將多個HTTP調用分為一個組。用這個方式,之前想從_n_個不同的請求中獲取的數據,現在可以在發送HTTP請求之前對它們進行分組,然后進發送一個請求,從而縮短了請求響應時間,并降低了eth_call調用的次數。

用測試了解運作方式

報告:薩爾瓦多僅有 20% 的受訪者在使用完獎金后繼續使用 Chivo 錢包:5月4日消息,美國國家經濟研究局在發布的一份報告中表示,在對 1800 個薩爾瓦多家庭進行采訪之后,其中僅有 20% 在使用完政府獎勵的 30 美元比特幣后還在繼續使用 Chivo 錢包,而且 40% 的下載發生在去年 9 月 Chivo 錢包推出時,今年幾乎沒有人下載。

對于商家而言,只有 20% 的受訪者表示愿意接受比特幣,但 88% 都表示會將其交易為美元而不是保留。該報告表示,薩爾瓦多的經驗證明了要求所有企業接受比特幣,提供大量激勵措施以增加其采用率,并接受它作為支付稅款的手段可能不足以實現讓比特幣成為交易媒介。(nber.org)[2022/5/4 2:48:59]

為了了解這種機制的工作原理以及相對于傳統方法是否確實有所改進,我們將通過一個對比測試來驗證。分別在不使用Multicall和使用Multicall的情況下,對每個函數調用_n_次,然后分析結果。為此,我們通過調用函數getAccountLiquidity來查詢Compound協議。我們將使用1,000個不同的地址來獲取所有地址的信息。

聲音 | 前摩根大通高管:DApp應該易于使用 用戶無需擔心技術細節:據CryptoGlobe消息,摩根大通前執行董事Amber Baldet認為,“當人們使用DApp時,應該更多地關注應用程序的功能,而不是它的底層技術。”[2019/4/29]

創建項目

安裝依賴

為了進行測試,先創建一個Node項目,并將安裝依賴項:ethers

calculatetime.js

調用合約

常規循環調用

先使用傳統方法進行測試,我們將遍歷1,000個的地址數組(在map循環中),逐個獲取每個查詢的結果,執行方法如下:

constgetLiquidity=()=>{constcompoundContract=newethers.Contract(compound.comptroller.address,compound.comptroller.abi,provider)returnPromise.all(accounts.map(account=>{letdatatry{data=compoundContract.getAccountLiquidity(account.id。catch(error){console.log(`Errorgettingthedata${error}`。returndata})。

聲音 | Bitfury Russia總經理:加密貨幣有助于監控國有資產使用 避免公款盜用:據俄羅斯衛星通訊社消息,礦業巨頭Bitfury Group俄羅斯分公司總經理德米特里·烏法耶夫在東方經濟論壇期間對媒體表示,加密貨幣有助于監控國有資產使用,避免公款盜用。他指出,\"有別于無現金支付,使用加密貨幣能跟蹤觀察各種代幣,相應地你可以清楚地判斷,如果撥了一筆資金,這筆錢具體花在了哪。在這方面加密貨幣的主要優點是可以用來監管資金的分配。\"[2018/9/13]

上面實例化compoundcomptroller合約,并在每個地址上調用流動性函數。

使用Multicall調用

使用Multicall調用時,調用函數必須稍作更改,形式如下:

constgetLiquidity=async()=>{constethcallProvider=newProvider(provider);awaitethcallProvider.init();constcompoundContract=newContract(compound.comptroller.address,compound.comptroller.abi,)constcontractCalls=accounts.map(account=>compoundContract.getAccountLiquidity(account.id))constresults=awaitethcallProvider.all(contractCalls);returnresults}

未能阻止Alibabacoin名稱被國外公司使用 阿里稱要采取進一步行動:據Caixinglobal消息,在美國法官拒絕禁止Alibabacoin(ABBC)基金會繼續使用他們的名稱后,阿里稱要采取進一步行動。阿里巴巴發言人告訴財新記者,他們將提交一份新的動議,之前的法律裁決僅僅是因為管轄權問題(而敗訴)。他們相信能夠結束ABBC蓄意的非法活動,并強調ABBC并不屬于阿里巴巴。ABBC并沒有對此做出回復,但在4月份這家迪拜公司否認侵害阿里巴巴的權益,稱Alibaba這個詞不屬于某個實體,在迪拜有很多公司使用這個名字。[2018/5/2]

利用Multicall包中的Provider和Contract類。首先,初始化provider,并傳遞web3、合約地址及其合約ABI。

創建完成后,執行則和之前類似。在map里,調用帳戶流動性函數。但是現在它不會發送到網絡,而是將它們分組到一個數組中。創建此數組后,將調用創建好的MulticallProvider的all函數,并進行網絡調用。

點點幣軟分叉已激活 激活后將使用 v0.6版協議:點點幣(PPC)軟分叉已激活,激活后將使用 v0.6版協議。[2017/12/20]

對比分析結果

要查看是否確實有重大改進,只需要對比兩個調用消耗的時間。

傳統循環方法消耗的時間:

Timetoprocessinmilliseconds:124653Timetoprocessinseconds:124.653Numberofentriesintheresult:1000

使用Multicall調用

Timetoprocessinmilliseconds:9591Timetoprocessinseconds:9.591Numberofentriesintheresult:1000

結論

通過結果對比,發現使用Multicall調用時間的減少是非常可觀的,從124秒減少到9.5,花費的時間減少大約十倍。

另外,如果比較eth_callRPC調用的數量,同樣是非常明顯的減少,從一千個減少到只有一個。

因此,如果我們依賴第三方的節點提供商,而在該提供商中對API的調用是有限額,則這一點也同樣重要。

本翻譯由CellNetwork贊助支持。

來源:https://medium.com/better-programming/speed-up-your-defi-queries-using-multicall-d4cf652d8ab6

參考資料

登鏈翻譯計劃:https://github.com/lbc-team/Pioneer

翻譯小組:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

Infura:https://infura.io/

Multicall:https://github.com/cavanmflynn/ethers-multicall#readme

ethers.js:https://docs.ethers.io/v5/

money-legos:https://money-legos.studydefi.com/#/

CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/9579148.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

幣安為何推出第三條鏈?這對BNB意味著什么?

Tags:ALLCONCALCOMgrey-walletBaconDAOethical詞根Compound Basic Attention Token

歐易交易所app官網下載
聚幣Moonshot第三期LHB一鍵挖礦今日上線_Jubi

聚幣JubiMoonShot登月區第三期LHB(LENDHUB)創世挖礦來襲!聚幣JubiDeFi板塊將于2021年1月14日16:00上線聚幣MoonShot登月區第三期項目LHB的一鍵挖礦.

1900/1/1 0:00:00
關于GRIN硬分叉及網絡升級公告_INO

親愛的AEX安銀小伙伴:由于GRIN硬分叉升級,AEX安銀于2021年01月14日17:00關閉GRIN充提功能,期間交易不受影響.

1900/1/1 0:00:00
虎符將于1月12日23:15正式上線COMBO(Furucombo)

尊敬的虎符用戶, 虎符將于2021年01月12日23:15(UTC8)重磅上線COMBO/USDT交易對。充值已開啟,提現將于2021年01月13日10:00(UTC8)開啟.

1900/1/1 0:00:00
UST交易狂歡節:享最高70%手續費補貼 20,000 UST獎池!_JUST

為了慶祝TerraUSD(UST)創新交易市場新增6個新交易對,并回饋所有用戶UST忠實交易者的熱情參與,庫幣和Terra團隊將推出新一輪UST交易競賽活動并送出20,000UST的獎池.

1900/1/1 0:00:00
OKEx關于發放12月份可領取的糖果ALGO、GAS的公告_INF

尊敬的OKEx用戶: OKEx將于2021年1月12日19:00(HKT)發放12月份可領取的糖果ALGO、GAS,屆時您可以在OKEx"資產管理--資金賬戶--選擇領取".

1900/1/1 0:00:00
談喻凱:比特幣以太坊處于調整 多空交易利潤雙邊豐收_MOX

本周初比特幣連續下跌,從最高42000美元下跌至最低30416美元,跌幅一度達27.78%,短短兩天之內,加密貨幣的總市值消失了1000億美元左右.

1900/1/1 0:00:00
ads