Interacting with smart contracts