Cosmos-SDK: A Better Blockchain Framework

This Cosmos-SDK’s is designed with distinct advantages over existing developer tools out there for building decentralized applications. Either you 1) must learn another language to write smart contracts (i.e. Solidity/Plutus), or 2) fork the Bitcoin reference client. With the SDK, you now have a basic framework for quickly and relatively easily spinning up blockchains (aka zones) that are built entirely out of modules, custom-made or batteries-included. The Cosmos-SDK is designed with composability and capabilities in mind.

Design Philosophy

Composability

When you’re building your zone, you’re thinking about a set of features you’ll want to include to satisfy your specific user requirements. To do this using the Cosmos-SDK, you would plug in the modules — such as IBC, staking, accounts, governance, etc. — that fulfill your required feature set.

If, say, a module does not yet exist, like a Zcash protocol module that adds support for SNARKs into Tendermint, you could create one via the SDK framework to implement your module. The takeaway is that you could implement any feature you’d want in a blockchain as a Cosmos-SDK module and share it readily upstream with the greater technical community.

Object Capabilities

We have chosen to derive our systems design out of object-capabilities (ocaps) based principles. Based on a threat assumption that some modules are malicious, we chose this security model as superior to that of an Access Control List (ACL) for the following reasons:

It allows us to compose independent untrusted programs into coherent workflows. Implemented in the execution environment, ocaps by design gives granular control over read/write permissions. An ocaps-based system sandboxes any given malicious module and contains the malware within that compartment.

Cosmos-SDK design principles here : (Design philosophy)

: (Design philosophy) For an introduction to ocaps-based principles, read: (What Are Capabilities?)

We will further expand on how we apply these principles in the Cosmos-SDK on a future blog post.

Over and out,