Contractvm is a general-purpose decentralized framework based on blockchain. The framework allows to implement arbitrary decentralized applications in an easy way, providing the necessary abstraction layer. Contractvm dapps are executed in an open network of nodes that perform computations by processing dapp interactions stored in messages. All messages are securely stored in an decentralized data structure that combines an existing blockchain with a distributed hash table.
Write your decentralized service using the contractvm frameworks. The framework provides the necessary abstraction for decentralization.
Deploy your decentralized application in the contractvm network. Distribuite and promote the adoption of your application.
Use your dapp by writing a client applications using your decentralized through the contractvm client library.
Dapps are executed in a network of contractvm nodes where every node process dapp interactions, updating and keeping a local computation state of each dapp. A node is like an oracle, that can be queried by clients for retrieving the state of running dapps.
Dapp interactions (called messages) are stored using a data structure that combines a blockchain with a distributed hash table; message data are saved inside the DHT, exploiting the blockchain only for cryptographic proof. Contractvm can use any of the existing blockchains that follow the bitcoin-core protocol (bitcoin, litecoin, dogecoin and more than 500 other).
Correctness of computations is guaranteed by a client-side consensus mechanism: when a client queries a dapp, the query is replicated and sent to a set of distinct nodes in a trasparent manner; the actual result is obtained by taking the majority of the received answers. Moreover, this design choice gives to nodes the ability to choose which dapps handle.
Contractvm does not impose any constraint on the programming language used to write dapps: developers can also invoke legacy applications or external services whenever they need to.
Contractvm is still in development phase, but you can start to learn how the framework works by reading the documentation or you can contribute to the framework development.