这是合约编译的版本与以太坊的一次硬分叉后的版本不对应导致的。可以参看Chriseth的解释:
https://ethereum.stackexchange.com/questions/44028/ecrecover-throwing-out-of-gas-error-on-ropsten
解决的方法是:
编译合约的时候,增加编译参数:--evm-version homestead。该参数在solidity 0.4.21版本起,获得支持。
因此,建议修改tool/deploy.js,在合约编译的时候,增加如上参数。如:
execSync("~/github/solidity/build/solc/solc --evm-version homestead --abi --bin --overwrite -o "+config.Ouputpath+" "+filename+".sol");