The adoption of blockchain-based distributed computation platforms is growing\nfast. Some of these platforms, such as Ethereum, provide support for\nimplementing smart contracts, which are envisioned to have novel applications\nin a broad range of areas, including finance and Internet-of-Things. However, a\nsignificant number of smart contracts deployed in practice suffer from security\nvulnerabilities, which enable malicious users to steal assets from a contract\nor to cause damage. Vulnerabilities present a serious issue since contracts may\nhandle financial assets of considerable value, and contract bugs are\nnon-fixable by design. To help developers create more secure smart contracts,\nwe introduce FSolidM, a framework rooted in rigorous semantics for designing\ncon- tracts as Finite State Machines (FSM). We present a tool for creating FSM\non an easy-to-use graphical interface and for automatically generating Ethereum\ncontracts. Further, we introduce a set of design patterns, which we implement\nas plugins that developers can easily add to their contracts to enhance\nsecurity and functionality.\n