Ethereum客户端升级问题导致损失1400万美元

https://www.reddit.com/r/ethereum/comments/6ettq5/statement_on_quadrigacx_ether_contract_error/

从 reddit 上的讨论来看, 具体的问题出在 Geth v1.5.6 以前,调用web3 SHA3函数时,所有 hex 十六进制的输入都是字符串,0x 前缀是可选的,但是 v1.5.6 以后,0x 前缀是强制的,导致 升级后 所有 SHA3 调用都失败了,导致无法生成有效的函数签名,因此合约调用也失效了。

reddit 讨论版块里有人疑问,为什么这种改变接口的非兼容性更新不遵守 semantic versioning,版本应该是更新到2,而不是停留在1.x.x。

毕竟涉及到钱,也有人建议所以函数都要经过严格测试,包括输入输出的格式,必须严格检查,否则类似的问题还会出现。

大家怎么看?