譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
背景介紹
有時,從區塊鏈獲取數據的成本可能會非常高,不管是從請求花費的時間還是從發送的請求數量上來說,都是這樣。如果我們想同時獲取大量數據,用來在儀表板上顯示或進行分析,我們必須調用合約的不同函數或者用不同參數調用相同函數,這些都可能會導致查詢時間很長。另外,當我們使用像Infura這樣的節點提供商,也很容易達到發送請求數量的限額。
什么是Multicall?
Multicall是一個npm軟件包,可將多個HTTP調用分為一個組。用這個方式,之前想從_n_個不同的請求中獲取的數據,現在可以在發送HTTP請求之前對它們進行分組,然后進發送一個請求,從而縮短了請求響應時間,并降低了eth_call調用的次數。
用測試了解運作方式
美SEC主席:如果被廣泛使用 加密貨幣需要相應規則:美國證券交易委員會(SEC)主席Gary Gensler表示,如果加密貨幣被廣泛使用,需要相應規則進行規范。(金十)[2021/8/4 1:32:31]
為了了解這種機制的工作原理以及相對于傳統方法是否確實有所改進,我們將通過一個對比測試來驗證。分別在不使用Multicall和使用Multicall的情況下,對每個函數調用_n_次,然后分析結果。為此,我們通過調用函數getAccountLiquidity來查詢Compound協議。我們將使用1,000個不同的地址來獲取所有地址的信息。
創建項目
安裝依賴
為了進行測試,先創建一個Node項目,并將安裝依賴項:ethers
calculatetime.js
調用合約
常規循環調用
動態 | 以太坊網站被大量使用 FairWin合同具有嚴重風險:據以太坊國際新聞消息,最近幾周,Ethereum網站被大量使用,以至于ETH的礦商決定將區塊的容量提高25%來允許更多的交易發生。調查顯示,一份名為“FairWin”的有問題的智能合同受到了廣泛的歡迎,消耗了以太坊所有天然氣的50%。區塊鏈游戲工作室Horizo??n Games的研發人員Philippe Castonguay最近在Twitter上寫道,FairWin合同具有“嚴重風險,使所有資金都處于風險中”,然后要求其追隨者傳播這一知識。[2019/9/29]
先使用傳統方法進行測試,我們將遍歷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})。
聲音 | BM:目前還沒決定是否要禁止美國用戶使用 Voice,希望上線時能通過合規批準:BM 剛剛繼續在電報群中解答社區關于 Voice 的疑問,要點如下: 1.為什么 Voice 禁止美國用戶使用?BM 回復:目前我們還沒決定是否要禁止美國用戶使用 Voice,你看到的法律文檔只是我們最保守的一種選項,還沒做出最后決定。我們希望 Voice 上線時能通過合規批準; 2.有人提問 Voice 是去中心化的,美國政府是無法阻止或審查它的。BM 回復:(審查方面)他們可能會面臨技術上的挑戰,但他們可以處罰創造這個產品的人(指 B1)。身份驗證系統都會有一些中心化驗證的因素,我們最好的期待就是信任,但是用透明的方式來驗證; 3.關于如何進行 KYC,有什么能透露的嗎?BM:我們正在開展幾項技術,并在與不同司法管轄區的第三方 KYC 供應商磋商。在完成所有工作之前,我不能透露任何信息; 4.Voice 大概會在什么時候推出呢?BM 回復:它會在今年夏天開始分階段推出。[2019/6/4]
上面實例化compoundcomptroller合約,并在每個地址上調用流動性函數。
聲音 | Bitfury Russia總經理:加密貨幣有助于監控國有資產使用 避免公款盜用:據俄羅斯衛星通訊社消息,礦業巨頭Bitfury Group俄羅斯分公司總經理德米特里·烏法耶夫在東方經濟論壇期間對媒體表示,加密貨幣有助于監控國有資產使用,避免公款盜用。他指出,\"有別于無現金支付,使用加密貨幣能跟蹤觀察各種代幣,相應地你可以清楚地判斷,如果撥了一筆資金,這筆錢具體花在了哪。在這方面加密貨幣的主要優點是可以用來監管資金的分配。\"[2018/9/13]
使用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}
點點幣軟分叉已激活 激活后將使用 v0.6版協議:點點幣(PPC)軟分叉已激活,激活后將使用 v0.6版協議。[2017/12/20]
利用Multicall包中的Provider和Contract類。首先,初始化provider,并傳遞web3、合約地址及其合約ABI。
創建完成后,執行則和之前類似。在map里,調用帳戶流動性函數。但是現在它不會發送到網絡,而是將它們分組到一個數組中。創建此數組后,將調用創建好的MulticallProvider的all函數,并進行網絡調用。
對比分析結果
要查看是否確實有重大改進,只需要對比兩個調用消耗的時間。
傳統循環方法消耗的時間:
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意味著什么?
尊敬的用戶: HuobiGlobal“全球觀察區”定于2021年1月13日上線BAGS(BasisGoldShare)。BAGS最大持倉量為50000USDT等值代幣.
1900/1/1 0:00:001111 BTC凌晨持續上漲,最高漲至35545.46USDT,后小幅回落,現于33000USDT附近震蕩。BTC在LOEx現報32600.60USDT,24H跌幅3.59%.
1900/1/1 0:00:00新年第一周,除了給予BTC、ETH走勢分析的同時,幣姥爺繼續帶領圈友捕獲幾段行情,LRC、BSV、ZEC。幣姥爺項目分析圈友已突破300人,近一個月增長率超過100%,感謝大家的支持.
1900/1/1 0:00:00尊敬的UBIEX用戶: UBIEX將上線XWBB交易,并開通XWBB/WBB交易對,具體時間如下:XWBB交易:01月12日19:00(UTC8)XWBB充提:01月12日18:00(UTC8).
1900/1/1 0:00:00尊敬的中幣用戶: 根據FOMP官方信息,“持倉FOMP,空投QFIL”的空投時間調整為每周一,平臺將按照FOMP官方的規則在空投當天的17:00對用戶在中幣賬戶的FOMP資產進行快照.
1900/1/1 0:00:00親愛的安銀小伙伴, AEX安銀將于2021年01月15日17:00正式上線NodeRunners并同步開通NDR-ETHASwap流動池.
1900/1/1 0:00:00