对call调用的一点猜测

本文解析了call调用为何会消耗gas,以及为何直接通过函数名调用view函数不消耗。核心观点在于call的不确定性导致gas准备,而预知函数特性的外部调用则可避免。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

call调用是会消耗gas的,所以如果合约A利用call去调用B合约的任何函数(包括view和prue),合约A都不能声明为view。相反如果是通过函数名直接调用另外一个合约的view函数,则该调用过程不会消耗gas。猜测原因为:call调用是在不知道合约abi的情况下进行调用,无法知晓被调用者是否为view函数,所以必须做好修改合约状态(简单的说就是消耗gas)的准备;而通过函数名去进行合约外部调用,也就意味着事先已知晓被调用合约函数的情况(已知ABI),例如是否为view函数,可根据情况对函数进行说明设定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值