通常出于安全原因,我希望将某些地址参数限制为合同中某些函数的非合同地址,即。在作为函数参数或作为msg.sender传入的地址上没有存储代码,因此为了确保地址不是一些攻击契约,这些攻击契约可能试图利用某些重入漏洞或有条件地阻塞以太网络等等。
考虑到可靠性,目前的标准方法似乎是使用内联程序集来检查地址上是否存储了代码。由于Vyper没有内联程序集,Vyper合同是否可以检查某些地址参数和/或事务发送方是否为契约?
发布于 2019-08-09 03:54:18
是的,您可以只做_address.is_contract,如果它是一个契约,它将返回true,如果不是,您可以从vyper:https://vyper.readthedocs.io/en/v0.1.0-beta.11/types.html读取更多的地址类型。
发布于 2019-08-09 03:49:12
在发布这个问题之后,我发现在vyper中,地址类型有一个名为“码大小”的成员,我猜这个成员可以用来检查一个地址是否是一个活动的契约,而在最新的vyper版本中,它似乎甚至有一个名为"is_contract“的新成员。
https://ethereum.stackexchange.com/questions/73759
复制相似问题