Understanding Smart Contracts: Capabilities and Limitations