使用重入锁并不能解决所有问题

jackson 发布于 2022-02-23 阅读 5061

使用重入锁并不能解决所有问题,可以考虑使用checks-effects-interactions模式,另外,转账最好放在一个完整逻辑的最开始或者最结尾,避免状态不一致。

应用

这种表示方法能够表示超大的数据范围,同时提供极高的精度,具体精度可以通过调整fraction占用的位数来按需调整。这是一种通用方法,当目标数据符合此特征时,可以采用此方法表示,从而大大节省存储空间,优化gas消耗。

总结

  1. 使用重入锁并不能解决所有问题,可以考虑使用checks-effects-interactions模式,另外,转账最好放在一个完整逻辑的最开始或者最结尾,避免状态不一致。
  2. 这个取名safeTransferETH()的函数,并不会给大家带来安全,相反留下了被攻击的可能。因此,应该慎用TransferHelper.safeTransferETH()方法,另外,也建议在safeTransferETH()的实现里面,将gas限制为5000,这样既可以解决往代理合约转账的问题,也会让攻击难以发生。

相关文章

0 条评论