译文出自:登链翻译计划
译者:翻译小组
校对: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个不同的地址来获取所有地址的信息。
派盾: OpenSea 网络钓鱼攻击事件攻击者使用 Tornado.cash混币1,100 ETH:2月20日消息,派盾(PeckShield)在社交媒体发布相关交易记录表示,OpenSea漏洞事件攻击者已将攻击所得部分NFT出售获利后,使用以太坊隐私交易平台Tornado.cash混币1,100ETH,价值约290万美元。
此前报道,OpenSea 疑似遭到网络钓鱼攻击,大量NFT被窃取并卖出套利。本次攻击中共有32位用户签署了来自攻击者的恶意交易,导致用户部分NFT被盗。据统计已经有包括3只Bored Ape、25个NFTWorlds、37个Azuki等近百个NFT遭到被盗, 按照主流资产的地板价计算,黑客至少获取了416.6 万美元。[2022/2/21 10:04:35]
创建项目
安装依赖
为了进行测试,先创建一个Node项目,并将安装依赖项:ethers
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]
calculatetime.js
调用合约
常规循环调用
先使用传统方法进行测试,我们将遍历1,000个的地址数组(在map循环中),逐个获取每个查询的结果,执行方法如下:
动态 | 使用 Facebook 的加密货币 Libra 可能被征收两类税:Facebook 向科技媒体 TechCrunch 提供了有关其 Libra 加密货币将如何保持合法的信息,以反击特朗普总统声称 Libra 可以促进非法行为的指控。在税收上,Facebook 和 Libra 协会预计 Libra 将被征收营业税和资本利得税,其中营业税的产生和如今使用信用卡支付是完全相同的,而由于 Libra 被设计成一种价格相对比较稳定的货币,所以资本利得税可能会非常少。在反反上,Facebook 正在与当地便利店和货币兑换商谈判,以确保当用户用法定货币买卖 Libra 的时候,会进行反检查。[2019/7/14]
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: 正在创造一个允许购买或者出售 30 天授权期内可使用 CPU 的租赁市场:今日早晨 9:48 分起, BM 在 EOS 电报群回应某用户的质疑“将 RAM 和 CPU 这两个资源令牌化(tokenizing)是错误的”时表示,CPU 是可以租赁的,并没有tokenizing。BM 表示, 将会创造一个允许购买或者出售 30 天授权期内可使用 CPU 的租赁市场。 随后有人提问,为什么是 30 天? 对此 BM 指出,到期你可以续租。有人建议租赁可以考虑多周期组合,BM 看到后回应称, 7 天可能是一个不错的考虑。同时他补充道, CPU 和 NET 都可以租赁。[2018/7/31]
上面实例化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意味着什么?
标签:ALLCONCALCOMmathwallet钱包app下载Crab ContractLocal TradersBidCommerce
PolkaWorld专访系列本期邀请要了加密投资机构DFG并针对以下内容进行了精彩分享。DFG是加密行业领先的投资机构,也是Substrate创业营的联合发起方之一.
好友告诉比特傻:熊市阴跌急涨,牛市阴涨急跌。若形势调换,则市场变盘;牛市一旦加速涨,就危险了;熊市一旦加速跌就要抄底。比特傻问:如何定义阴、急、加速?朋友立马呆立,不知所言.
HomiEx已完成"UMA交易送积分轮盘转不停"所有奖励已全部分发,请在“钱包-资产记录”查看分发结果.
去中心化金融项目在2020年11月的总锁定价值达到了136.2亿美元的历史新高。这表明DeFi对广大用户以及机构客户的吸引力正在不断扩大.
据官网公告,ZT创新板即将上线MC,并开启MC/USDT交易对。具体上线时间请关注官网公告。MC为全球用户提供数字资产价值流动、用户体验并为用户建造最透明、共享、民主的生态交易,解决数字资产和商.
在过去的几周中,行情图表中的比特币崛起使该行业的其他发展蒙上了阴影。从去年11月26日到截至发稿时间,比特币增长了123%,我们将在稍后讨论稳定币这一主题时,阐述该时间表的特殊重要性.