译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
背景介绍
有时,从区块链获取数据的成本可能会非常高,不管是从请求花费的时间还是从发送的请求数量上来说,都是这样。如果我们想同时获取大量数据,用来在仪表板上显示或进行分析,我们必须调用合约的不同函数或者用不同参数调用相同函数,这些都可能会导致查询时间很长。另外,当我们使用像Infura这样的节点提供商,也很容易达到发送请求数量的限额。
什么是Multicall?
Multicall是一个npm软件包,可将多个HTTP调用分为一个组。用这个方式,之前想从_n_个不同的请求中获取的数据,现在可以在发送HTTP请求之前对它们进行分组,然后进发送一个请求,从而缩短了请求响应时间,并降低了eth_call调用的次数。
用测试了解运作方式
世界经济论坛发起联盟以使用 web3、区块链来采取积极的气候行动:金色财经报道,世界经济论坛正在启动一项新的公私合作伙伴关系,以利用 web3 技术更好地支持积极的气候成果,因为人们对区块链技术对环境的影响的认识正在升温。?这家总部位于瑞士的非政府组织周三在美国举行的一次小组讨论中宣布了加密可持续发展联盟,该联盟由可持续发展与 web3、加密和区块链技术交叉领域的 30 个合作伙伴组成。[2022/9/23 7:17:04]
为了了解这种机制的工作原理以及相对于传统方法是否确实有所改进,我们将通过一个对比测试来验证。分别在不使用Multicall和使用Multicall的情况下,对每个函数调用_n_次,然后分析结果。为此,我们通过调用函数getAccountLiquidity来查询Compound协议。我们将使用1,000个不同的地址来获取所有地址的信息。
创建项目
安装依赖
Augur 将通过使用 DXdao 结构引入 AugurDAO:11月19日消息,去中心化预测市场协议 Augur 宣布将引入 AugurDAO,不过会与管理着预测市场 Omen 的去中心化自治组织 DXdao 合作,并使用 DXdao 结构来构建 AugurDAO,但治理将由 REPv2 持有者推动。Augur 计划于 2021 年 11 月底对支持 DAO 投票的智能合约进行审计,目前还在开发中。
之后,DXdao 论坛将提出一项提案来讨论 DXdao 对 AugurDAO 的支持和合作关系细节。此外,Augur Discord目前已完全由社区志愿者运营。[2021/11/19 6:59:26]
为了进行测试,先创建一个Node项目,并将安装依赖项:ethers
calculatetime.js
调用合约
常规循环调用
先使用传统方法进行测试,我们将遍历1,000个的地址数组(在map循环中),逐个获取每个查询的结果,执行方法如下:
美SEC主席:如果被广泛使用 加密货币需要相应规则:美国证券交易委员会(SEC)主席Gary Gensler表示,如果加密货币被广泛使用,需要相应规则进行规范。(金十)[2021/8/4 1:32:31]
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合约,并在每个地址上调用流动性函数。
声音 | 前摩根大通高管:DApp应该易于使用 用户无需担心技术细节:据CryptoGlobe消息,摩根大通前执行董事Amber Baldet认为,“当人们使用DApp时,应该更多地关注应用程序的功能,而不是它的底层技术。”[2019/4/29]
使用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意味着什么?
1月14日,检察日报发布《从预防犯罪视角对私人数字货币实施刑法规制》。文章指出,为了维护货币的发行和流通秩序,世界上大多数国家都通过刑法来规范与货币相关的行为,同时用刑罚来惩罚涉及货币的犯罪行为.
1900/1/1 0:00:00最近几周,比特币、以太坊的价格一路突飞猛进,但美国监管机构SEC对币圈却是频频发。12月22日,SEC起诉瑞波,认为XRP是未登记的证券。XRP因此一路暴跌60%,给投资者带来了巨大损失.
1900/1/1 0:00:00概要去中心化自治组织是建立在去中心化资金管理的理念上的。尽管去中心化自治组织有种种好处,但它们可能是监管的噩梦。去中心化自治组织通过决策过程的民主化和分散化,消除了单一的失败点.
1900/1/1 0:00:00尊敬的用户:为提升合约保险的使用体验,CoinBene将于2021年1月13日17:00升级合约保险产品规则,以下是升级详情:升级完成后.
1900/1/1 0:00:00大家好,诚信立本,德行天下,用心研判趋势和分析,传递有价值的投资理念!解读超前投资趋势,特约观点每日为您推送即时交易机会!美东时间01月13日.
1900/1/1 0:00:00大家好,我是你们的朋友老崔说币lcsb18888,老崔说币公众号同步专注数字货币行情分析,争取为广大币友传递最有价值的币市信息,欢迎广大币友的关注与点赞.
1900/1/1 0:00:00