interface - 强制转换为接口(interface)和契约(Contract)实例之间有区别吗?

标签 interface blockchain ethereum solidity smartcontracts

在 solidity 中,大多数智能合约将外部合约调用转换为接口(interface)(IERC20 与 ERC20)。两者在类型转换上有什么区别吗?

例如,如果我写

IERC20 Token = IERC20(tokenContractAddress);

有什么功能上的区别吗

ERC20 Token = ERC20(tokenContractAddress);?

只是想知道在 gas 成本、兼容性问题等方面是否有需要考虑的因素。谢谢!

最佳答案

如果您只想访问这些功能,您可以使用其中任何一个。但是在接口(interface)中你不能有状态变量,所以如果你需要一些状态变量,你可以转换为契约。

此外,接口(interface)不能继承其他契约或接口(interface)。也许契约(Contract)是从 contractB 继承的,并且在您的契约(Contract)中您想访问 contractB。

关于interface - 强制转换为接口(interface)和契约(Contract)实例之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71041850/

相关文章:

objective-c - 没有可见的@interface

security - 我们可以认为基于网络的非插件加密钱包是安全的吗?

blockchain - 在 Hyperledger 结构中动态添加 Org 或 peer

compiler-errors - 无法编译多个 Solidity 版本

c# - 通用接口(interface)库 : Could not load type from assembly

spring - 为什么要使用 Spring ?

c# - 根据接口(interface)字符串名称实例化类

blockchain - 区 block 链如何安全?

python - 解析器错误 : Source file requires different compiler version

linux - 使用 Docker (NVIDIA Xavier Jetson) 在 ARM64 上安装 Parity