Decentralized computation enables secure, censorship-resistant computation, and creates a network effect for users and apps. These two properties allow developers to build a rich and interconnected landscape of apps that provide essential and beloved services to billions of users.
The network consists of a large number of nodes run by independent entities who validate transactions and assemble transactions into a canonical order; these entities must stake valuable assets in order to participate, and risk losing part of their stake if they misbehave. Independence and threat of punishment ensure that node operators never act to suppress computation or to commit incorrect computational results. As a result, anyone can deploy a dApp to the network, and anyone can make a function call against existing dApps. Permissionlessness and decentralization are crucial to user trust.
Decentralized apps (dApps) are programs uploaded to the network of servers maintaining the blockchain. Each program’s code and full state are duplicated onto each participating server. Users can interact with these programs by making function calls. Statefulness allows programs to deliver appropriate interactions for each user.
Because all dApp code and state live on the same server (which is then replicated), dApps can also call functions ofdApps as subroutines. The virtual machine simply switches contexts. Execution is done atomically; if any check fails inside the function (or inside a subroutine), the execution rolls back. This composability enables developers to build increasingly more complex apps, leveraging existing infrastructure.
Composability is crucial to establishing a network effect, because it is easy for other developers to deploy new apps that can leverage functionality and state from existing apps. Instead of relying on third-party infrastructure bridging assets and functionality from various disparate environments (Google, Amazon, Stripe, and myriad other service providers), all functionality and state lives in a unified environment that your new app can interact with.
Decentralized computation against a shared global state is incredibly powerful, but it’s also challenging, because computation throughput is limited to the computational capacity of a single server. In particular, the computational capacity is limited by the capacity of the server to respond to arbitrary transactions involving a variety of previously uploaded programs, which for each transaction requires loading some or all of the state associated with that program, as well as committing any state changes upon completion. Monad is addressing severe bottlenecks in state access and computational throughput by building hyper-optimized methods for accessing and storing state, and by building a system that properly pipelines transactions, taking into account state access and computation costs to maximize the system’s output.