On Refining Design Patterns for Smart Contracts