Towards securing smart contracts systematically