我目前遇到了一个问题,我无法在我的智能合约中调用外部函数。
例如,我有我的函数f(),包括我想调用函数g()的内联汇编代码,它也在智能合约中。
这可能吗?如果是,是否也可以在汇编中使用接口?
感谢您的宝贵时间。
不,目前不可能从内联程序集调用Solidity函数。您只能调用在同一个assembly
块中声明的Yul函数。计划允许调用在其他汇编块中定义的函数,但这些函数仍然是Yul函数,而不是Solidity函数。
至于接口,从内联汇编的角度来看,接口只是一个地址。您可以从汇编块中进行低级调用,因此从技术上讲,您可以使用接口,但这与使用地址变量没有什么不同,并且您不会获得在Solidity级别上拥有的任何高级语法。例如,您必须手动编码函数选择器和参数,然后处理结果。