火星链 火星链
Ctrl+D收藏火星链
首页 > MANA > 正文

COM:使用 Multicall 加速 DeFi 查询调用

作者:

时间:1900/1/1 0:00:00

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

背景介绍

有时,从区块链获取数据的成本可能会非常高,不管是从请求花费的时间还是从发送的请求数量上来说,都是这样。如果我们想同时获取大量数据,用来在仪表板上显示或进行分析,我们必须调用合约的不同函数或者用不同参数调用相同函数,这些都可能会导致查询时间很长。另外,当我们使用像Infura这样的节点提供商,也很容易达到发送请求数量的限额。

什么是Multicall?

Multicall是一个npm软件包,可将多个HTTP调用分为一个组。用这个方式,之前想从_n_个不同的请求中获取的数据,现在可以在发送HTTP请求之前对它们进行分组,然后进发送一个请求,从而缩短了请求响应时间,并降低了eth_call调用的次数。

用测试了解运作方式

知名导演 Spike Lee:使用 NFT 资助电影将“为电影制作带来更多民主”:6月22日消息,知名导演Spike Lee在NFT NYC大会上发言表示,使用NFT资助电影将“为电影制作带来更多民主”。然而,Lee也承认NFT投资的风险性,称“无论你做什么,你都必须做研究。”此外,Lee还暗示将“很快”推出一个新的NFT项目。不过,当一位听众问到他是否会用NFT销售来资助自己的项目时,Lee回答道:“也许在未来,但不是现在。”斯派克·李(Spike Lee)是美国电影制作人、导演、编剧兼演员。2015年8月,他获得了第88届奥斯卡终身成就奖。2019年2月25日,又凭借《黑色党徒》获得第91届美国奥斯卡金像奖最佳改编剧本。(The Block)[2022/6/22 4:44:18]

为了了解这种机制的工作原理以及相对于传统方法是否确实有所改进,我们将通过一个对比测试来验证。分别在不使用Multicall和使用Multicall的情况下,对每个函数调用_n_次,然后分析结果。为此,我们通过调用函数getAccountLiquidity来查询Compound协议。我们将使用1,000个不同的地址来获取所有地址的信息。

萨尔瓦多总统:使用 Chivo 钱包支付汽油费用的公民将获得折扣:金色财经报道,继萨尔瓦多总统 Nayib Bukele上周在本周五透露了这座火山驱动的比特币采矿设施之后,Bukele向他的 Twitter粉丝介绍了政府已颁布的两项积极实施措施。首先,Bukele 解释说,他签署了一项法令,授权设立一个基金来稳定萨尔瓦多的天然气价格。他指出,天然气价格预计会上涨,但他的法令阻止了上涨。在这些声明之后,Bukele 然后详细说明 Chivo 比特币钱包用户在加满油时将能够获得每加仑汽油折扣。这个新折扣的指导方针不是很明确,但 Bukele 表示,如果客户使用 Chivo 钱包应用程序支付,该国一些最大的加油站公司将把每加仑汽油的价格降低 0.20 美元。[2021/10/4 17:22:49]

创建项目

安装依赖

为了进行测试,先创建一个Node项目,并将安装依赖项:ethers

声音 | BM:目前还没决定是否要禁止美国用户使用 Voice,希望上线时能通过合规批准:BM 刚刚继续在电报群中解答社区关于 Voice 的疑问,要点如下: 1.为什么 Voice 禁止美国用户使用?BM 回复:目前我们还没决定是否要禁止美国用户使用 Voice,你看到的法律文档只是我们最保守的一种选项,还没做出最后决定。我们希望 Voice 上线时能通过合规批准; 2.有人提问 Voice 是去中心化的,美国政府是无法阻止或审查它的。BM 回复:(审查方面)他们可能会面临技术上的挑战,但他们可以处罚创造这个产品的人(指 B1)。身份验证系统都会有一些中心化验证的因素,我们最好的期待就是信任,但是用透明的方式来验证; 3.关于如何进行 KYC,有什么能透露的吗?BM:我们正在开展几项技术,并在与不同司法管辖区的第三方 KYC 供应商磋商。在完成所有工作之前,我不能透露任何信息; 4.Voice 大概会在什么时候推出呢?BM 回复:它会在今年夏天开始分阶段推出。[2019/6/4]

calculatetime.js

EOS宪法鼓励代币使用 促进活跃度提升:据bitcoinist消息,根据EOS“宪法”第十七条规定:在会员签署的最后一笔交易被纳入区块链3年后,会员将自动解除本组织规定的所有可撤销义务。如果一个账号3年不活跃,则可能会被拍卖,并通过取消发行量来将收益分配给所有会员。据悉,这一规则可能是为了刺激EOS的使用和活跃,但也将长期投资者排除在外。[2018/6/18]

调用合约

常规循环调用

先使用传统方法进行测试,我们将遍历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})。

未能阻止Alibabacoin名称被国外公司使用 阿里称要采取进一步行动:据Caixinglobal消息,在美国法官拒绝禁止Alibabacoin(ABBC)基金会继续使用他们的名称后,阿里称要采取进一步行动。阿里巴巴发言人告诉财新记者,他们将提交一份新的动议,之前的法律裁决仅仅是因为管辖权问题(而败诉)。他们相信能够结束ABBC蓄意的非法活动,并强调ABBC并不属于阿里巴巴。ABBC并没有对此做出回复,但在4月份这家迪拜公司否认侵害阿里巴巴的权益,称Alibaba这个词不属于某个实体,在迪拜有很多公司使用这个名字。[2018/5/2]

上面实例化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}

利用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意味着什么?

标签:ALLCONCALCOMTEN WalletYearn.concubineCalaxyCommunity Token

MANA热门资讯
BNB:趋势解币:灰度继续增持市场重新亮牌 比特币迈向4W指日可待

大家好,诚信立本,德行天下,用心研判趋势和分析,传递有价值的投资理念!解读超前投资趋势,特约观点每日为您推送即时交易机会!美东时间01月13日.

1900/1/1 0:00:00
WIT:Twitter投资人Fred Wilson和V神共同发声:中心化社交平台是时候「协议化」了

近日,关于「漂亮国」总统被包括Facebook、Twitter、Snapchat和Instagram等在内的媒体封号的消息闹得沸沸扬扬.

1900/1/1 0:00:00
KEX:BKEX Global 关于完成KSM(Kusama )升级的公告

亲爱的BKEXer:?BKEXGlobal现已完成KSM维护升级,并已恢复KSM的充值功能和提现功能.

1900/1/1 0:00:00
KET:投资数字资产的机构版图(一):灰度

每年都有行情好的东西,比如前年的白酒、去年的白酒、今年的白酒、明年的白酒——白酒,永远的神;比特币,经常超神。图片来源:新浪微博过去10年,比特币的价格涨幅达到了1200万倍.

1900/1/1 0:00:00
BTC:关于WBF上线AC的公告

尊敬的用户:AC将在WBF创新区上线AC/USDT交易对,具体时间安排如下:充值时间:2021-1-1218:00提币时间:2021-1-1218:00交易时间:2021-1-1218:00项目.

1900/1/1 0:00:00
以太坊:一文详解以太坊2.0流动性质押方案异同

自从以太坊2.0信标链上线仅一个多月,以太坊2.0抵押地址余额突破240万枚以太坊。同时已经有大量的第三方质押平台上线,包括中心化交易平台币安以及RocketPool和Lido等去中心化的DeF.

1900/1/1 0:00:00