付费视频,请购买课程( ¥2,000.00 )后再观看

Solidity ABI 底层调用:call, delegatecall

46次播放
2025-07-16

视频 AI 总结: 该视频主要讲解了 Solidity 中 ABI 底层调用的相关知识,并对 calldelegatecall 底层调用方式进行了详细对比。核心内容是解释了这些底层调用与高级函数调用之间的区别,以及它们在处理 gas 限制、上下文切换和错误处理方面的不同行为。理解这些底层调用对于进行更高级的合约交互和优化至关重要。

关键信息:

  • ABI 编码:任何合约调用都会转换为 ABI 编码,包含函数选择器和参数编码。
  • call 调用:底层调用,需手动检查返回值,不受 gas 限制,可以向合约转账,会切换上下文。
  • delegatecall 调用:保持上下文的底层调用,相当于借用目标合约的代码在当前合约上下文中执行。
  • staticcall 调用:模拟调用,不会修改状态变量,用于只读操作,会切换上下文。
  • 错误处理:底层调用失败不会抛出异常,而是通过返回值表示。
  • 转账建议:推荐使用 OpenZeppelin 的 sendValue 方法进行转账,避免 gas 限制问题。