Interacting with Smart Contracts