稳定性内联组装:调用一个契约内的其他函数并使用接口



我目前遇到了一个问题,我无法在我的智能合约中调用外部函数。

例如,我有我的函数f(),包括我想调用函数g()的内联汇编代码,它也在智能合约中。

这可能吗?如果是,是否也可以在汇编中使用接口?

感谢您的宝贵时间。

不,目前不可能从内联程序集调用Solidity函数。您只能调用在同一个assembly块中声明的Yul函数。计划允许调用在其他汇编块中定义的函数,但这些函数仍然是Yul函数,而不是Solidity函数。

至于接口,从内联汇编的角度来看,接口只是一个地址。您可以从汇编块中进行低级调用,因此从技术上讲,您可以使用接口,但这与使用地址变量没有什么不同,并且您不会获得在Solidity级别上拥有的任何高级语法。例如,您必须手动编码函数选择器和参数,然后处理结果。