付费视频,请购买课程( ¥2,000.00 )后再观看
Solidity ABI 底层调用:call, delegatecall
46次播放
2025-07-16
视频 AI 总结:
该视频主要讲解了 Solidity 中 ABI 底层调用的相关知识,并对 call
、delegatecall
底层调用方式进行了详细对比。核心内容是解释了这些底层调用与高级函数调用之间的区别,以及它们在处理 gas 限制、上下文切换和错误处理方面的不同行为。理解这些底层调用对于进行更高级的合约交互和优化至关重要。
关键信息:
- ABI 编码:任何合约调用都会转换为 ABI 编码,包含函数选择器和参数编码。
call
调用:底层调用,需手动检查返回值,不受 gas 限制,可以向合约转账,会切换上下文。delegatecall
调用:保持上下文的底层调用,相当于借用目标合约的代码在当前合约上下文中执行。staticcall
调用:模拟调用,不会修改状态变量,用于只读操作,会切换上下文。- 错误处理:底层调用失败不会抛出异常,而是通过返回值表示。
- 转账建议:推荐使用 OpenZeppelin 的
sendValue
方法进行转账,避免 gas 限制问题。