当一个普通的用户账户调用执行退款时, 另一个智能合约同时来调用, 就会有严重的隐患.
由于Gas的限制的限制, 我们不需要担心死循环的问题....此外, 在使用多重组合的合约时, 被调用的合约也可能修改调用合约所依赖的另一个合约的状态.
Gas限制和循环
在以太坊智能合约中, 每一步操作是要求用户以Gas的形式付出相应的代价....比如智能合约A调用了智能合约B, 有一个用户P给智能合约A发Transaction, 调用A调用了B....也可以用下面的工具进行检查:
Oyente: 一个Python语言编写的工具, 判断代码中有没有常见的安全漏洞, 也会提示出可能有安全隐患的地方....Solgraph: 一个Node.js工具, 可以将一个智能合约作为输入, 输出一个DOT图文件, 能将智能合约的功能控制流程画成一个流程图, 也可以标注出潜在的安全漏洞.