众所周知,在更改契约中的内容之前调用外部函数会导致名为“重入漏洞”的安全问题。
通过接口的视图成员调用外部函数是否会导致重入漏洞?
发布于 2021-02-02 08:58:33
通过接口的view成员的调用是通过STATICCALL操作码完成的。正如我的实验所证实的,在这种情况下,Solity0.6.0确实使用了STATICCALL。
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-214.md
为了增强智能契约安全性,此建议添加了一个新的操作码,可用于调用另一个契约(或其本身),同时不允许在调用期间对状态进行任何修改(如果存在,则禁止对其子调用进行任何修改)。
因此,在当前版本的Solidity中没有这样的漏洞。
然而,旧版本的坚固是脆弱的。有关过去所做的更改,请参见这个以太拉请求。
发布于 2021-01-22 22:20:51
有趣的是,我只是亲自来找答案。据我所知,不存在常规意义上的重入漏洞,因为视图成员不能修改状态。
发布于 2021-01-22 23:43:51
视图函数不能像指定的这里那样修改状态。这意味着它们不能对区块链进行任何永久的更改,例如更改以太或令牌余额。因此,对于View函数来说,重入并不是一个问题。
https://ethereum.stackexchange.com/questions/92656
复制相似问题