古千峰:合约开发者不能信任用户提供的数据
昨日,降维安全实验室监测到,娱乐系统spankchain支付通道(payment channel)关联的智能合约LEDgerChannel遭到了重入攻击,DAO损失1.2亿美金的“重入漏洞” 重现江湖。
对此BTCMedia亚太区CTO古千峰给出两点提示:
1.合约开发者不能信任任何用户提供的数据,包括但不限于public/external函数的入参,回调合约的地址等。
2.关键操作必须原子化, 譬如在以太币/代币转账成功后,对应账户的余额修改必须立即执行,假如转账失败,必须通过 revert()等操作抛出异常,回滚状态。