While showing great promise, smart contracts are difficult to program
correctly, as they need a deep understanding of cryptography and distributed
algorithms, and offer limited functionality, as they have to be deterministic
and cannot operate on secret data. In this paper we present Protean, a
general-purpose decentralized computing platform that addresses these
limitations by moving from a monolithic execution model, where all
participating nodes store all the state and execute every computation, to a
modular execution model. Protean employs secure specialized modules, called
functional units, for building decentralized applications that are currently
insecure or impossible to implement with smart contracts. Each functional unit
is a distributed system that provides a special-purpose functionality by
exposing atomic transactions to the smart-contract developer. Combining these
transactions into arbitrarily-defined workflows, developers can build a
larger class of decentralized applications, such as provably-secure and fair
lotteries or e-voting.