对于以“Solidity Multiple files format”编写的合同,ABI 是不完整的,例如0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed
Posted
技术标签:
【中文标题】对于以“Solidity Multiple files format”编写的合同,ABI 是不完整的,例如0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed【英文标题】:ABI is incomplete for contract written in "Solidity Multiple files format", e.g. 0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed 【发布时间】:2021-12-28 17:17:48 【问题描述】:对于这个合同https://bscscan.com/address/0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed#code 有八个源文件被称为“Solidity Multiple files format”
但是,bscscan 网站都没有: https://bscscan.com/address/0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed#code 也不是 bscscan API: https://api.bscscan.com/api?module=contract&action=getabi&address=0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed 可以获得完整的 ABI。
它们只为第一个源文件提供 ABI。
如何获得完整的功能性 ABI 以与之交互?
【问题讨论】:
【参考方案1】:它们只为第一个源文件提供 ABI。
这是预期的结果。 ABI JSON 仅针对 public
和 external
函数以及从 主合约及其父项的 public
属性自动生成的函数生成。
导入的合约通常被主合约调用或继承,但理论上它们也可以不被使用。
注意:它不需要是订单中的第一个合约,您将主合约名称作为编译选项之一传递。
在您的示例中,AdminUpgradeabilityProxy
是主合约,派生自 UpgradeabilityProxy
,而 UpgradeabilityProxy
派生自 Proxy
。所以 ABI json 包含来自这三个合约的所有 public
和 external
函数和事件。
【讨论】:
以上是关于对于以“Solidity Multiple files format”编写的合同,ABI 是不完整的,例如0xedfcb78e73f7ba6ad2d829bf5d462a0924da28ed的主要内容,如果未能解决你的问题,请参考以下文章
以独立于文化的方式进行 Powershell 格式化?!对于数字
对于 iOS,我可以混合和匹配以编程方式添加视图并同时使用情节提要吗?
对于 django 模型,如何获取 django 管理 URL 以添加另一个或列出对象等?