Understanding smart contract limitations