  Smart contracts on a blockchain behave precisely as specified by their code.
A vulnerability in this code can lead to unexpected behaviour, which is hard to
fix because a blockchain does not allow to change smart contract code after its
deployment. Such vulnerabilities have led to several incidents. In the
aftermath of such an event, a hard-fork between Ethereum and Ethereum classic
was the result. This thesis proposes to develop a new smart contract
programming language with the primary focus on safety, auditability, and the
intention to prevent as many of the known categories of vulnerabilities by
design as possible. The programming language's code is validated during
deployment and afterwards isolated from other smart contracts running on the
same blockchain to enforce compile-time guarantees during runtime. The designed
programming language does evaluate new concepts and paradigms rarely used in
non-smart contract environments for their potential benefit in a smart contract
environment.
