hypersign-protocol / whitepaper

2 stars 0 forks source link

Research on Cosmos SDK #9

Open Vishwas1 opened 2 years ago

Vishwas1 commented 2 years ago
Vishwas1 commented 2 years ago

Cosmos SDK

The Cosmos SDK is a framework that facilitates the development of secure state-machines on top of Tendermint.

At its core, the Cosmos SDK is a boilerplate implementation of the ABCI in Golang. It comes with a multistore to persist data and a router to handle transactions.

The Cosmos SDK (opens new window) is an open-source framework for building multi-asset public Proof-of-Stake (PoS) , like the Cosmos Hub, as well as permissioned Proof-of-Authority (PoA) blockchains. Blockchains built with the Cosmos SDK are generally referred to as application-specific blockchains.

The goal of the Cosmos SDK is to allow developers to easily create custom blockchains from scratch that can natively interoperate with other blockchains.

envision the Cosmos SDK as the npm-like framework to build secure blockchain applications on top of Tendermint

Application-Specific Blockchains

While smart contracts can be very good for some use cases like single-use applications (e.g. ICOs), they often fall short for building complex decentralised platforms. More generally, smart contracts can be limiting in terms of flexibility, sovereignty and performance.

Application-specific blockchains offer a radically different development paradigm than virtual-machine blockchains. An application-specific blockchain is a blockchain customized to operate a single application: developers have all the freedom to make the design decisions required for the application to run optimally. They can also provide better sovereignty, security and performance.

Application-specific blockchains are blockchains customized to operate a single application.

Instead of building a decentralised application on top of an underlying blockchain like Ethereum, developers build their own blockchain from the ground up. This means building a full-node client, a light-client, and all the necessary interfaces (CLI, REST, ...) to interact with the nodes

Why to user Cosmos SDK?

Thanks to the Cosmos SDK, developers just have to define the state machine, and Tendermint (opens new window) will handle replication over the network for them.

                ^  +-------------------------------+  ^
                |  |                               |  |   Built with Cosmos SDK
                |  |  State-machine = Application  |  |
                |  |                               |  v
                |  +-------------------------------+
                |  |                               |  ^
Blockchain node |  |           Consensus           |  |
                |  |                               |  |
                |  +-------------------------------+  |   Tendermint Core
                |  |                               |  |
                |  |           Networking          |  |
                |  |                               |  |
                v  +-------------------------------+  v

Any application built on Tendermint needs to implement the ABCI interface in order to communicate with the underlying local Tendermint engine. Fortunately, you do not have to implement the ABCI interface. The Cosmos SDK provides a boilerplate implementation of it in the form of baseapp.