Cosmos
Strictly speaking, Cosmos is a decentralized network of independent parallel blockchains, each powered by
BFT consensus algorithms like Tendermint consensus.
In other words, Cosmos is an ecosystem of blockchains that can scale and interoperate with each other. Before Cosmos, blockchains were siloed and unable to communicate with each other. They were hard to build and could only handle a small amount of transactions per second. Cosmos solves these problems with a new technical vision. In order to understand this vision we need to go back to the fundamentals of blockchain technology.
Introduction
Strikt genomen is Cosmos een gedecentraliseerd netwerk van onafhankelijke parallelle blockchains, elk aangedreven door BFT consensus algoritmes zoals Tendermint consensus.
Met andere woorden, Cosmos is een ecosysteem van blockchains die kunnen schalen en met elkaar kunnen samenwerken. Vóór Cosmos waren blockchains silo’s die niet met elkaar konden communiceren. Ze waren moeilijk te bouwen en konden slechts een klein aantal transacties per seconde aan. Cosmos lost deze problemen op met een nieuwe technische visie. Om deze visie te begrijpen moeten we terug naar de basis van blockchaintechnologie.
What is a Blockchain?
A blockchain can be described as a digital ledger maintained by a set of validators that remains correct even if some of the validators (less than a third) are malicious. Each party stores a copy of the ledger on their computer and updates it according to the rules defined by the protocol when they receive blocks of transactions. The goal of blockchain technology is to make sure the ledger is correctly replicated, meaning that each honest party sees the same version of the ledger at any given moment.
The main benefit of blockchain technology is the ability for parties to share a ledger without having to rely on a central authority. Blockchains are decentralized. The first and most famous application of blockchain technology today is Bitcoin, a decentralized currency.
Now that we have a better understanding of what a blockchain is from a high-level perspective, let us look at the definition of blockchain with a more technical angle. A blockchain is a deterministic state machine replicated on full-nodes that retains consensus safety as long as less than a third of its maintainers are Byzantine. Let’s break this down.
- A state machine is just a fancy word for a program that holds a state and modifies it when it receives inputs. There is a state, which can represent different things depending on the application (e.g. token balances for a cryptocurrency), and transactions, that modify the state (e.g. by subtracting balances from one account and adding them to another).
- Deterministic means that if you replay the same transactions from the same genesis state, you will always end up with the same resultant state.
- Consensus safety refers to the fact that every honest node on which the state machine is replicated should see the same state at the same time. When nodes receive blocks of transactions, they verify that it is valid, meaning that each transaction is valid and that the block itself was validated by more than two thirds of the maintainers, called validators. Safety will be guaranteed as long as less than a third of validators are Byzantine, i.e. malicious.
From an architecture standpoint, blockchains can be divided into three conceptual layers:
- Application: Responsible for updating the state given a set of transactions, i.e. processing transactions.
- Networking: Responsible for the propagation of transactions and consensus-related messages.
- Consensus: Enables nodes to agree on the current state of the system.
The state machine is the same as the application layer. It defines the state of the application and the state-transition functions. The other layers are responsible for replicating the state machine on all the nodes that connect to the network.
What is a Blockchain?
Een blockchain kan worden omschreven als een digitaal grootboek dat wordt bijgehouden door een reeks validators en dat correct blijft, zelfs indien sommige validators (minder dan een derde) kwaadwillend zijn. Elke partij bewaart een kopie van het grootboek op haar computer en werkt het bij volgens de regels van het protocol wanneer zij transactieblokken ontvangt. Het doel van blockchaintechnologie is ervoor te zorgen dat het grootboek correct wordt gerepliceerd, wat betekent dat elke eerlijke partij op elk moment dezelfde versie van het grootboek ziet.
Het belangrijkste voordeel van blockchaintechnologie is de mogelijkheid voor partijen om een grootboek te delen zonder afhankelijk te zijn van een centrale autoriteit. Blockchains zijn gedecentraliseerd. De eerste en meest bekende toepassing van blockchaintechnologie is Bitcoin, een gedecentraliseerde valuta.
- Een toestandsmachine is gewoon een mooi woord voor een programma dat een toestand vasthoudt en die wijzigt wanneer het inputs ontvangt. Er is een toestand, die afhankelijk van de toepassing verschillende dingen kan voorstellen (bv. tokensaldi voor een cryptocurrency), en transacties, die de toestand wijzigen (bv. door saldi van een rekening af te trekken en aan een andere toe te voegen).
- Deterministisch betekent dat als je dezelfde transacties vanuit dezelfde ontstaansstatus herhaalt, je altijd op dezelfde resulterende status uitkomt.
- Consensusveiligheid verwijst naar het feit dat elk eerlijk knooppunt waarop de toestandsmachine wordt gerepliceerd, op hetzelfde moment dezelfde toestand te zien krijgt. Wanneer knooppunten blokken met transacties ontvangen, controleren zij of deze geldig zijn, wat betekent dat elke transactie geldig is en dat het blok zelf is gevalideerd door meer dan twee derde van de maintainers, validators genaamd. De veiligheid wordt gegarandeerd zolang minder dan een derde van de validators Byzantijns is, d.w.z. kwaadwillend.
Vanuit een architectuurstandpunt kunnen blockchains worden onderverdeeld in drie conceptuele lagen:
- Toepassing: Verantwoordelijk voor het bijwerken van de toestand gegeven een reeks transacties, d.w.z. het verwerken van transacties.
- Netwerken: Verantwoordelijk voor de verspreiding van transacties en consensus-gerelateerde berichten.
- Consensus: Stelt knooppunten in staat het eens te worden over de huidige toestand van het systeem.
De toestandsmachine is dezelfde als de toepassingslaag. Hij definieert de toestand van de applicatie en de toestandsovergangsfuncties. De andere lagen zijn verantwoordelijk voor het repliceren van de toestandsmachine op alle knooppunten die op het netwerk zijn aangesloten.
How does Cosmos fit in the broader blockchain ecosystem?
THE BITCOIN STORY (BLOCKCHAIN 1.0)
To understand how Cosmos fits in the blockchain ecosystem, we need to go back to the beginning of the blockchain story. The first blockchain was Bitcoin, a peer-to-peer digital currency created in 2008 that used a novel consensus mechanism known as Proof-of-Work (PoW). It was the first decentralized application on a blockchain. Soon, people started to realize the potential of decentralized applications and the desire to build new ones emerged in the community.
At the time, there were two options to develop decentralized applications: either fork the bitcoin codebase or build on top of it. However, the bitcoin codebase was very monolithic; all three layers—networking, consensus and application — were mixed together. Additionally, the Bitcoin scripting language was limited and not user-friendly. There was a need for better tools.
THE ETHEREUM STORY (BLOCKCHAIN 2.0)
In 2014, Ethereum came in with a new proposition for building decentralized applications. There would be a single blockchain where people would be able to deploy any kind of program. Ethereum achieved this by turning the Application layer into a virtual machine called the Ethereum Virtual Machine (EVM). This virtual machine was able to process programs called smart contracts that any developer could deploy to the Ethereum blockchain in a permissionless fashion. This new approach allowed thousands of developers to start building decentralized applications (dApps). However, limitations to this approach soon became apparent and still persist to this day.
Limitation #1: Scalability
The first limitation is scaling – decentralized applications built on top of Ethereum are inhibited by a shared rate of 15 transactions per second. This is due to the fact that Ethereum still uses Proof-of-Work and that Ethereum dApps compete for the limited resources of a single blockchain.
Limitation #2: Usability
The second limitation is the relatively low flexibility granted to developers. Because the EVM is a sandbox that needs to accommodate all use cases, it optimizes for the average use case. This means that developers have to make compromises on the design and efficiency of their application (for example, requiring use of the account model in a payments platform where a UTXO model may be preferred). Among other things, they are limited to a few programming languages and cannot implement automatic execution of code.
Mouse over voor meer informatie UTXO model De verwijzing naar het vereisen van het account model in een betalingsplatform waar een UTXO-model het voorkeur heeft, verwijst naar een ontwerpbeslissing in het ontwerp van een blockchain-gebaseerd betalingsplatform. Er zijn twee belangrijke modellen die worden gebruikt voor het bijhouden van de balans van gebruikers in een blockchain: het account model en het UTXO (Unspent Transaction Output) model. Het account model houdt bij hoeveel geld elke gebruiker heeft door een aparte rekening voor elke gebruiker te houden en de balans van elke rekening bij te werken bij elke transactie. Het UTXO-model houdt in plaats daarvan bij welke stukken geld (UTXOs) zijn uitgegeven en nog niet zijn uitgegeven in transacties. Elke transactie verzamelt UTXOs en gebruikt ze om nieuwe UTXOs te creëren. Sommige ontwikkelaars geven de voorkeur aan het UTXO-model omdat ze vinden dat het een eenvoudiger en efficiënter systeem is, terwijl andere ontwikkelaars de voorkeur geven aan het account model omdat ze vinden dat het meer flexibel is en eenvoudiger te implementeren. Als een ontwerper beslist om het account model te vereisen in een betalingsplatform waar het UTXO-model het voorkeur heeft, betekent dit dat ze ervoor hebben gekozen om het account model te gebruiken in plaats van het UTXO-model, ondanks de mogelijke voordelen van het UTXO-model. Dit is een afweging die ze hebben gemaakt tussen verschillende factoren, zoals de vereisten van het platform, de technische uitvoerbaarheid en de voorkeur van de gebruikers.Limitation #3: Sovereignty
The third limitation is that each application is limited in sovereignty, because they all share the same underlying environment. Essentially, this creates two layers of governance: that of the application, and that of the underlying environment. The former is limited by the latter. If there is a bug in the application, nothing can be done about it without the approval of the governance of the Ethereum platform itself. If the application requires a new feature in the EVM, it again has to rely entirely on the governance of the Ethereum platform to accept it.
These limitations are not specific to Ethereum but to all blockchains trying to create a single platform that would fit all use cases. This is where Cosmos comes into play.
THE VISION OF COSMOS (BLOCKCHAIN 3.0)
The vision of Cosmos is to make it easy for developers to build blockchains and break the barriers between blockchains by allowing them to transact with each other. The end goal is to create an Internet of Blockchains, a network of blockchains able to communicate with each other in a decentralized way. With Cosmos, blockchains can maintain sovereignty, process transactions quickly and communicate with other blockchains in the ecosystem, making it optimal for a variety of use cases.
This vision is achieved through a set of open source tools like Tendermint, the Cosmos SDK and IBC designed to let people build custom, secure, scalable and interoperable blockchain applications quickly. Let us take a closer look at some of the most important tools in the ecosystem as well as the technical architecture of the Cosmos network. Note that Cosmos is an open source community project initially built by the Tendermint team. Everyone is welcome to build additional tools to enrich the greater developer ecosystem.
How does Cosmos fit in the broader blockchain ecosystem?
THE BITCOIN STORY (BLOCKCHAIN 1.0)
Om te begrijpen hoe Cosmos in het blockchain-ecosysteem past, moeten we terug naar het begin van het blockchain-verhaal. De eerste blockchain was Bitcoin, een peer-to-peer digitale munt die in 2008 werd gecreëerd en gebruik maakte van een nieuw consensusmechanisme dat bekend staat als Proof-of-Work (PoW). Het was de eerste gedecentraliseerde toepassing op een blockchain. Al snel begonnen mensen zich het potentieel van gedecentraliseerde toepassingen te realiseren en ontstond in de gemeenschap de wens om nieuwe toepassingen te bouwen.
Destijds waren er twee mogelijkheden om gedecentraliseerde toepassingen te ontwikkelen: de bitcoin-codebase forken of er bovenop bouwen. De bitcoin-codebase was echter erg monolithisch; alle drie de lagen – netwerken, consensus en toepassingen – waren door elkaar heen gemixt. Bovendien was de scripttaal van Bitcoin beperkt en niet gebruiksvriendelijk. Er was behoefte aan betere tools.
THE ETHEREUM STORY (BLOCKCHAIN 2.0)
In 2014 kwam Ethereum met een nieuw voorstel voor het bouwen van gedecentraliseerde toepassingen. Er zou een enkele blockchain komen waar mensen elk soort programma zouden kunnen inzetten. Ethereum bereikte dit door de toepassingslaag te veranderen in een virtuele machine genaamd de Ethereum Virtual Machine (EVM). Deze virtuele machine kon programma’s verwerken die slimme contracten werden genoemd en die elke ontwikkelaar zonder toestemming op de Ethereum-blockchain kon plaatsen. Dankzij deze nieuwe aanpak konden duizenden ontwikkelaars beginnen met het bouwen van gedecentraliseerde toepassingen (dApps). De beperkingen van deze aanpak werden echter al snel duidelijk en bestaan nog steeds.
Limitation #1: Scalability
De eerste beperking is schaalbaarheid – gedecentraliseerde toepassingen die bovenop Ethereum worden gebouwd, worden geremd door een gedeelde snelheid van 15 transacties per seconde. Dit is te wijten aan het feit dat Ethereum nog steeds Proof-of-Work gebruikt en dat Ethereum dApps concurreren om de beperkte middelen van een enkele blockchain.
Limitation #2: Usability
De tweede beperking is de relatief geringe flexibiliteit die aan ontwikkelaars wordt geboden. Omdat het EVM een zandbak is die alle use cases moet accommoderen, optimaliseert het voor de gemiddelde use case. Dit betekent dat ontwikkelaars compromissen moeten sluiten over het ontwerp en de efficiëntie van hun toepassing (bijvoorbeeld door het gebruik van het rekeningmodel te eisen in een betalingsplatform waar een UTXO-model de voorkeur kan hebben). Zij zijn onder meer beperkt tot enkele programmeertalen en kunnen geen automatische uitvoering van code implementeren.
Mouse over voor meer informatie UTXO model De verwijzing naar het vereisen van het account model in een betalingsplatform waar een UTXO-model het voorkeur heeft, verwijst naar een ontwerpbeslissing in het ontwerp van een blockchain-gebaseerd betalingsplatform. Er zijn twee belangrijke modellen die worden gebruikt voor het bijhouden van de balans van gebruikers in een blockchain: het account model en het UTXO (Unspent Transaction Output) model. Het account model houdt bij hoeveel geld elke gebruiker heeft door een aparte rekening voor elke gebruiker te houden en de balans van elke rekening bij te werken bij elke transactie. Het UTXO-model houdt in plaats daarvan bij welke stukken geld (UTXOs) zijn uitgegeven en nog niet zijn uitgegeven in transacties. Elke transactie verzamelt UTXOs en gebruikt ze om nieuwe UTXOs te creëren. Sommige ontwikkelaars geven de voorkeur aan het UTXO-model omdat ze vinden dat het een eenvoudiger en efficiënter systeem is, terwijl andere ontwikkelaars de voorkeur geven aan het account model omdat ze vinden dat het meer flexibel is en eenvoudiger te implementeren. Als een ontwerper beslist om het account model te vereisen in een betalingsplatform waar het UTXO-model het voorkeur heeft, betekent dit dat ze ervoor hebben gekozen om het account model te gebruiken in plaats van het UTXO-model, ondanks de mogelijke voordelen van het UTXO-model. Dit is een afweging die ze hebben gemaakt tussen verschillende factoren, zoals de vereisten van het platform, de technische uitvoerbaarheid en de voorkeur van de gebruikers.Limitation #3: Sovereignty
De derde beperking is dat elke toepassing beperkt is in soevereiniteit, omdat ze allemaal dezelfde onderliggende omgeving delen. In wezen ontstaan hierdoor twee bestuurslagen: die van de toepassing en die van de onderliggende omgeving. De eerste wordt beperkt door de tweede. Als er een bug in de toepassing zit, kan daaraan niets worden gedaan zonder de goedkeuring van het bestuur van het Ethereum-platform zelf. Als de toepassing een nieuwe functie in de EVM vereist, moet zij opnieuw volledig vertrouwen op de goedkeuring van de governance van het Ethereum-platform.
Deze beperkingen zijn niet specifiek voor Ethereum, maar voor alle blockchains die proberen een enkel platform te creëren dat geschikt is voor alle use cases. Dit is waar Cosmos om de hoek komt kijken.
THE VISION OF COSMOS (BLOCKCHAIN 3.0)
De visie van Cosmos is om het ontwikkelaars gemakkelijk te maken om blockchains te bouwen en de barrières tussen blockchains te doorbreken door ze met elkaar te laten handelen. Het einddoel is het creëren van een Internet of Blockchains, een netwerk van blockchains die op een gedecentraliseerde manier met elkaar kunnen communiceren. Met Cosmos kunnen blockchains soevereiniteit behouden, transacties snel verwerken en communiceren met andere blockchains in het ecosysteem, waardoor het optimaal is voor uiteenlopende use cases.
Deze visie wordt bereikt met een reeks open source tools zoals Tendermint, de Cosmos SDK en IBC die zijn ontworpen om mensen snel aangepaste, veilige, schaalbare en interoperabele blockchaintoepassingen te laten bouwen. Laten we enkele van de belangrijkste tools in het ecosysteem en de technische architectuur van het Cosmos-netwerk nader bekijken. Merk op dat Cosmos een open source gemeenschapsproject is dat aanvankelijk werd gebouwd door het Tendermint-team. Iedereen is welkom om aanvullende tools te bouwen om het grotere ecosysteem voor ontwikkelaars te verrijken.
What is Tendermint BFT and the ABCI
Until recently, building a blockchain required building all three layers (Networking, Consensus, and Application) from the ground up. Ethereum simplified the development of decentralized applications by providing a Virtual-Machine blockchain on which anyone could deploy custom logic in the form of Smart Contracts. However, it did not simplify the development of blockchains themselves. Much like Bitcoin, Go-Ethereum remains a monolithic tech stack that is difficult to fork from and customize. This is where Tendermint, created by Jae Kwon in 2014, came in.
Tendermint BFT is a solution that packages the networking and consensus layers of a blockchain into a generic engine, allowing developers to focus on application development as opposed to the complex underlying protocol. As a result, Tendermint saves hundreds of hours of development time. Note that Tendermint also designates the name of the byzantine fault tolerant (BFT)consensus algorithm used within the Tendermint BFT engine. For more on the history of consensus protocols and BFT you can check this cool podcast by Tendermint co-founder Ethan Buchman.
The Tendermint BFT engine is connected to the application by a socket protocol called the Application Blockchain Interface (ABCI). This protocol can be wrapped in any programming language, making it possible for developers to choose a language that fits their needs.
But that is not all. Here are the properties that make Tendermint BFT a state-of-the-art blockchain engine:
- Public or private blockchain ready: Tendermint BFT only handles networking and consensus for a blockchain, meaning that it helps nodes propagate transactions and validators agree on a set of transactions to append to the blockchain. It is the role of the application layer to define how the validator set is constituted. Developers can therefore build both public and private blockchains on top of the Tendermint BFT engine. If the application defines that validators are elected based on how many tokens they have at stake, then the blockchain can be characterised as Proof-of-Stake (PoS). If however the application defines that only a restricted set of pre-authorized entities can be validators, then the blockchain can be characterised as permissioned or private. Developers have all the freedom to customize the rules that define how the validator set of their blockchain changes.
- High Performance: Tendermint BFT can have a block time on the order of 1 second and handle up to thousands of transactions per second.
- Instant finality: A property of the Tendermint consensus algorithm is instant finality. This means that forks are never created as long as more than a third of the validators are honest (byzantine). Users can be sure their transactions are finalized as soon as a block is created (which is not the case in Proof-of-Work blockchains like Bitcoin and Ethereum).
- Security: Tendermint consensus is not only fault tolerant, it is also accountable. If the blockchain forks, there is a way to determine liability.
What is Tendermint BFT and the ABCI
Tot voor kort moesten voor het bouwen van een blockchain alle drie de lagen (netwerken, consensus en toepassingen) vanaf de grond worden opgebouwd. Ethereum vereenvoudigde de ontwikkeling van gedecentraliseerde toepassingen door een Virtual-Machine blockchain aan te bieden waarop iedereen aangepaste logica kon implementeren in de vorm van Smart Contracts. Het vereenvoudigde echter niet de ontwikkeling van blockchains zelf. Net als Bitcoin blijft Go-Ethereum een monolithische tech stack die moeilijk te splitsen en aan te passen is. Dit is waar Tendermint, gecreëerd door Jae Kwon in 2014, om de hoek kwam kijken.
Tendermint BFT is een oplossing die de netwerk- en consensuslagen van een blockchain verpakt in een generieke engine, waardoor ontwikkelaars zich kunnen concentreren op de ontwikkeling van toepassingen in plaats van op het complexe onderliggende protocol. Hierdoor bespaart Tendermint honderden uren ontwikkelingstijd. Merk op dat Tendermint ook de naam is van het byzantijnse fouttolerante (BFT) consensusalgoritme dat binnen de Tendermint BFT engine wordt gebruikt. Voor meer over de geschiedenis van consensusprotocollen en BFT kun je deze coole podcast van Tendermint mede-oprichter Ethan Buchman bekijken.
De Tendermint BFT engine is verbonden met de applicatie door een socket protocol genaamd de Application Blockchain Interface (ABCI). Dit protocol kan in elke programmeertaal worden verpakt, zodat ontwikkelaars een taal kunnen kiezen die bij hun behoeften past.
Maar dat is nog niet alles. Hier zijn de eigenschappen die Tendermint BFT tot een state-of-the-art blockchain engine maken:
- Klaar voor publieke of private blockchain: Tendermint BFT handelt alleen netwerken en consensus voor een blockchain af, wat betekent dat het knooppunten helpt transacties te verspreiden en validators het eens worden over een set transacties om toe te voegen aan de blockchain. Het is de rol van de toepassingslaag om te bepalen hoe de validatorset wordt samengesteld. Ontwikkelaars kunnen daarom zowel publieke als private blockchains bouwen bovenop de Tendermint BFT engine. Als de toepassing definieert dat validators worden gekozen op basis van het aantal tokens dat zij op het spel hebben staan, dan kan de blockchain worden gekarakteriseerd als Proof-of-Stake (PoS). Als de toepassing echter bepaalt dat alleen een beperkte reeks vooraf goedgekeurde entiteiten validators kunnen zijn, dan kan de blockchain worden gekarakteriseerd als permissioned of private. Ontwikkelaars hebben alle vrijheid om de regels aan te passen die bepalen hoe de validatorset van hun blockchain verandert.
- Hoge prestaties: Tendermint BFT kan een bloktijd in de orde van 1 seconde hebben en tot duizenden transacties per seconde verwerken.
- Onmiddellijke finaliteit: Een eigenschap van het Tendermint consensus algoritme is instant finaliteit. Dit betekent dat er nooit forks worden gecreëerd zolang meer dan een derde van de validators eerlijk is (byzantijns). Gebruikers kunnen er zeker van zijn dat hun transacties zijn afgerond zodra een blok is aangemaakt (wat niet het geval is in Proof-of-Work blockchains zoals Bitcoin en Ethereum).
- Veiligheid: Tendermint consensus is niet alleen fouttolerant, maar ook verantwoordelijk. Als de blockchain forkt, is er een manier om de aansprakelijkheid vast te stellen.
Cosmos SDK and other application layer frameworks
Tendermint BFT reduces the development time of a blockchain from years to weeks, but building a secure ABCI-app from scratch remains a difficult task. This is why the Cosmos SDK exists.
The Cosmos SDK is a generalized framework that simplifies the process of building secure blockchain applications on top of Tendermint BFT. It is based on two major principles:
- Modularity: The goal of the Cosmos SDK is to create an ecosystem of modules that allows developers to easily spin up application-specific blockchains without having to code each bit of functionality of their application from scratch. Anyone can create a module for the Cosmos SDK, and using ready built modules in your blockchain is as simple as importing them into your application. For example, the Tendermint team is building a set of basic modules that are needed for the Cosmos Hub. These modules can be used by any developer as they build their own application. Additionally, developers can create new modules to customize their application. As the Cosmos network develops, the ecosystem of SDK modules will expand, making it increasingly easier to develop complex blockchain applications.
- Capabilities-based security: Capabilities constrain the security boundaries between modules, enabling developers to better reason about the composability of modules and limit the scope of malicious or unexpected interactions. For a deeper look at capabilities click here.
The Cosmos SDK also comes with a set of useful developer tools for building command line interfaces (CLI), REST servers and a variety of other commonly used utility libraries.
One final remark: the Cosmos SDK, like all Cosmos tools, is designed to be modular. Today, it allows developers to build on top of Tendermint BFT. However, it can be used with any other consensus engines that implements the ABCI. As time goes by, we expect multiple SDKs to emerge, built with different architecture models and compatible with multiple consensus engines – all within a single ecosystem: the Cosmos Network.
To learn how to code applications on top of the SDK you can check out tutorials.
ETHERMINT
The great thing about the Cosmos SDK is that its modularity allows developers to port virtually any existing blockchain codebase already in Golang on top of it.
Mouse over voor meer informatie porten en golang model Met “porten” wordt bedoeld het overzetten of migreren van software van één platform naar een ander. In dit geval betekent het om bestaande blockchain-codebase die geschreven is in de Go-programmeertaal, over te zetten naar de Cosmos SDK. Het doel hiervan is om de functionaliteit van deze codebase te gebruiken in het Cosmos-platform, waarbij de code aangepast wordt aan de specifieke eisen van het platform.For example, Ethermint is a project that ports the Ethereum Virtual Machine into an SDK module. Ethermint works exactly like Ethereum but also benefits from all the properties of Tendermint BFT. All the existing Ethereum tools (Truffle, Metamask, etc.) are compatible with Ethermint and you can port your smart contracts over without additional work.
Why bother creating a blockchain with the Cosmos SDK when I can just deploy my decentralized application on top of a Virtual Machine blockchain?
This question is justified, considering that most decentralized applications today are developed on top of Virtual Machine blockchains like Ethereum. First, it should be stated that the reason for this phenomenon is that up until now blockchains were much more difficult to develop than Smart Contracts. This is not the case anymore, thanks to the Cosmos SDK. Now, developers can easily develop entire application-specific blockchains, which have several advantages. Among others, they give more flexibility, security, performance and sovereignty. To learn more about application-specific blockchains read this post. Of course, if you don’t want to build your own blockchain, you can still make your Smart Contracts compatible with Cosmos by deploying them on Ethermint.
Cosmos SDK and other application layer frameworks
Tendermint BFT brengt de ontwikkelingstijd van een blockchain terug van jaren naar weken, maar het bouwen van een veilige ABCI-app vanaf nul blijft een moeilijke taak. Daarom bestaat de Cosmos SDK.
De Cosmos SDK is een algemeen kader dat het proces van het bouwen van veilige blockchaintoepassingen bovenop Tendermint BFT vereenvoudigt. Het is gebaseerd op twee belangrijke principes:
- Modulariteit: Het doel van de Cosmos SDK is het creëren van een ecosysteem van modules waarmee ontwikkelaars gemakkelijk applicatiespecifieke blockchains kunnen opzetten zonder elk stukje functionaliteit van hun applicatie vanaf nul te hoeven coderen. Iedereen kan een module maken voor de Cosmos SDK, en het gebruik van kant-en-klare modules in uw blockchain is zo eenvoudig als het importeren ervan in uw toepassing. Het Tendermint-team bouwt bijvoorbeeld een reeks basismodules die nodig zijn voor de Cosmos Hub. Deze modules kunnen door elke ontwikkelaar worden gebruikt bij het bouwen van hun eigen applicatie. Daarnaast kunnen ontwikkelaars nieuwe modules maken om hun applicatie aan te passen. Naarmate het Cosmos-netwerk zich verder ontwikkelt, zal het ecosysteem van SDK-modules zich uitbreiden, waardoor het steeds gemakkelijker wordt om complexe blockchaintoepassingen te ontwikkelen.
- Op mogelijkheden gebaseerde beveiliging: Capabilities beperken de beveiligingsgrenzen tussen modules, waardoor ontwikkelaars beter kunnen redeneren over de samenstelbaarheid van modules en de reikwijdte van kwaadaardige of onverwachte interacties kunnen beperken. Voor een diepere kijk op capabilities klik hier.
De Cosmos SDK komt ook met een set handige ontwikkelaarstools voor het bouwen van command line interfaces (CLI), REST servers en een verscheidenheid aan andere veelgebruikte utility libraries.
Een laatste opmerking: de Cosmos SDK, zoals alle Cosmos tools, is ontworpen om modulair te zijn. Vandaag kunnen ontwikkelaars bouwen bovenop Tendermint BFT. Het kan echter worden gebruikt met elke andere consensus-engine die de ABCI implementeert. Naarmate de tijd verstrijkt, verwachten we dat er meerdere SDK’s zullen verschijnen, gebouwd met verschillende architectuurmodellen en compatibel met meerdere consensus engines – allemaal binnen één ecosysteem: het Cosmos Network.
Om te leren hoe u toepassingen kunt coderen bovenop de SDK kunt u tutorials raadplegen.
ETHERMINT
Het mooie van de Cosmos SDK is dat zijn modulariteit ontwikkelaars in staat stelt om vrijwel elke bestaande blockchain-codebase die al in Golang zit, erop te porten.
Ethermint is bijvoorbeeld een project dat de Ethereum Virtual Machine port in een SDK-module. Ethermint werkt precies zoals Ethereum, maar profiteert ook van alle eigenschappen van Tendermint BFT. Alle bestaande Ethereum-tools (Truffle, Metamask, enz.) zijn compatibel met Ethermint en u kunt uw slimme contracten overzetten zonder extra werk.
Waarom de moeite nemen om een blockchain te creëren met de Cosmos SDK als ik mijn gedecentraliseerde toepassing gewoon kan implementeren bovenop een Virtual Machine blockchain?
Deze vraag is gerechtvaardigd, gezien het feit dat de meeste gedecentraliseerde toepassingen tegenwoordig worden ontwikkeld bovenop Virtual Machine blockchains zoals Ethereum. Ten eerste moet worden gesteld dat de reden voor dit fenomeen is dat blockchains tot nu toe veel moeilijker te ontwikkelen waren dan Smart Contracts. Dat is nu niet meer het geval, dankzij de Cosmos SDK. Nu kunnen ontwikkelaars gemakkelijk hele applicatie specifieke blockchains ontwikkelen, die verschillende voordelen hebben. Ze geven onder andere meer flexibiliteit, veiligheid, prestaties en soevereiniteit. Voor meer informatie over toepassingsspecifieke blockchains lees deze post. Natuurlijk, als u niet uw eigen blockchain wilt bouwen, kunt u nog steeds uw Smart Contracts compatibel maken met Cosmos door ze in te zetten op Ethermint.
Connecting Blockchains Together – IBC
Now that developers have a way to quickly build customized blockchains, let us see how to connect these blockchains together. The connection between blockchains is achieved through a protocol called Inter-Blockchain Communication protocol (IBC). IBC leverages the instant finality property of Tendermint consensus (although it can work with any “fast-finality” blockchain engine) to allow heterogeneous chains to transfer value (i.e. tokens) or data to each other.
Mouse over voor meer informatie Instant finality property of Tendermint consensus Met de term “instant finality property of Tendermint consensus” wordt bedoeld de snelle besluitvorming die wordt bereikt door het Tendermint consensus-algoritme. Tendermint is een consensus-algoritme dat wordt gebruikt in het Cosmos-ecosysteem om overeenstemming te bereiken over de volgorde van transacties in de blockchain. De instant finality-eigenschap van Tendermint betekent dat transacties snel worden beschouwd als definitief zodra ze zijn bevestigd door een bepaalde groep validators. In tegenstelling tot andere consensus-algoritmen, zoals Proof of Work (PoW) of Proof of Stake (PoS), waarbij het soms enkele seconden of zelfs minuten kan duren voordat een transactie definitief wordt beschouwd, gebeurt dit bij Tendermint binnen enkele seconden. Dit stelt ontwikkelaars in staat om snel te handelen op transacties en maakt het gebruik van de blockchain voor real-time toepassingen mogelijk. Mouse over voor meer informatie fast-finality blockchain engine Met de term “fast-finality blockchain engine” wordt bedoeld een blockchain-motor die transacties snel definitief maakt. Dit houdt in dat transacties snel worden beschouwd als onomkeerbaar en permanent zodra ze zijn bevestigd door het consensus-algoritme. Dit is een belangrijk kenmerk voor blockchains die real-time toepassingen vereisen, zoals betalingssystemen of financiële markten, waarbij snelle en betrouwbare transactiebevestigingen cruciaal zijn. Een fast-finality blockchain engine is dus ontworpen om snelle en betrouwbare transactiebevestigingen te waarborgen, waardoor deze geschikt is voor toepassingen die snelle actie vereisen. Het biedt ook voordelen voor ontwikkelaars, zoals een efficiëntere manier van werken en de mogelijkheid om snel op transacties te reageren.WHAT ARE HETEROGENEOUS CHAINS?
Essentially it comes down to two things:
- Different layers: Heterogeneous chains have different layers, meaning they can differ in how they implement the networking, consensus and application parts. To be compatible with IBC, a blockchain needs only follow a few requirements, the main one being that the consensus layer must have fast finality. Proof-of-Work chains (like Bitcoin and Ethereum) do not fall in this category, as they have probabilistic finality.
- Sovereignty: Every blockchain is maintained by a set of validators whose job is to agree on the next block to commit to the blockchain. In Proof-of-Work blockchains these validators are called miners. A sovereign blockchain is a blockchain with its own validator set. In many instances it is important for blockchains to be sovereign, as validators are ultimately responsible for modifying the state. In Ethereum, applications are all run by a common set of validators. Because of this, each application only has limited sovereignty.
IBC allows heterogeneous blockchains to transfer tokens and data to each other, meaning that blockchains with different applications and validator sets are interoperable. For example, it allows public and private blockchains to transfer tokens to each other. Currently, no other blockchain framework enables this level of interoperability.
HOW IBC WORKS
The principle behind IBC is fairly simple. Let us take an example where an account on chain A wants to send 10 tokens (let us call them ATOM) to chain B.
Tracking
Continuously, chain B receives the headers of chain A, and vice versa. This allows each chain to track the validator set of the other. In essence, each chain runs a light-client of the other.
Bonding
When the IBC transfer is initiated, the ATOM are locked up (bonded) on chain A.
Proof Relay
Then, a proof that the 10 ATOM are bonded is relayed from chain A to chain B.
Validation
The proof is verified on chain B against chain A’s header and, if it is valid, then 10 ATOM-vouchers are created on chain B.
Note that the ATOM that have been created on chain B are not real ATOM, as ATOM only exist on chain A. They are a representation on B of ATOM from chain A, along with a proof that these ATOM are frozen on chain A.
A similar mechanism is used to unlock ATOM when they come back to their origin chain. For a more comprehensive description of the IBC protocol, you can look at this specification.
Connecting Blockchains Together – IBC
Nu ontwikkelaars een manier hebben om snel aangepaste blockchains te bouwen, laten we eens kijken hoe deze blockchains met elkaar kunnen worden verbonden. De verbinding tussen blockchains wordt tot stand gebracht door een protocol genaamd Inter-Blockchain Communication protocol (IBC). IBC maakt gebruik van de instant finaliteitseigenschap van Tendermint consensus (hoewel het kan werken met elke “fast-finality” blockchain engine) om heterogene ketens in staat te stellen waarde (d.w.z. tokens) of gegevens aan elkaar over te dragen.
Mouse over voor meer informatie Instant finality property of Tendermint consensus Met de term “instant finality property of Tendermint consensus” wordt bedoeld de snelle besluitvorming die wordt bereikt door het Tendermint consensus-algoritme. Tendermint is een consensus-algoritme dat wordt gebruikt in het Cosmos-ecosysteem om overeenstemming te bereiken over de volgorde van transacties in de blockchain. De instant finality-eigenschap van Tendermint betekent dat transacties snel worden beschouwd als definitief zodra ze zijn bevestigd door een bepaalde groep validators. In tegenstelling tot andere consensus-algoritmen, zoals Proof of Work (PoW) of Proof of Stake (PoS), waarbij het soms enkele seconden of zelfs minuten kan duren voordat een transactie definitief wordt beschouwd, gebeurt dit bij Tendermint binnen enkele seconden. Dit stelt ontwikkelaars in staat om snel te handelen op transacties en maakt het gebruik van de blockchain voor real-time toepassingen mogelijk. Mouse over voor meer informatie fast-finality blockchain engine Met de term “fast-finality blockchain engine” wordt bedoeld een blockchain-motor die transacties snel definitief maakt. Dit houdt in dat transacties snel worden beschouwd als onomkeerbaar en permanent zodra ze zijn bevestigd door het consensus-algoritme. Dit is een belangrijk kenmerk voor blockchains die real-time toepassingen vereisen, zoals betalingssystemen of financiële markten, waarbij snelle en betrouwbare transactiebevestigingen cruciaal zijn. Een fast-finality blockchain engine is dus ontworpen om snelle en betrouwbare transactiebevestigingen te waarborgen, waardoor deze geschikt is voor toepassingen die snelle actie vereisen. Het biedt ook voordelen voor ontwikkelaars, zoals een efficiëntere manier van werken en de mogelijkheid om snel op transacties te reageren.WHAT ARE HETEROGENEOUS CHAINS?
In wezen gaat het om twee dingen:
- Verschillende lagen: Heterogene ketens hebben verschillende lagen, wat betekent dat ze kunnen verschillen in hoe ze de netwerk-, consensus- en toepassingsonderdelen implementeren. Om compatibel te zijn met IBC hoeft een blockchain slechts aan een paar eisen te voldoen, waarvan de belangrijkste is dat de consensuslaag een snelle finaliteit moet hebben. Proof-of-Work-ketens (zoals Bitcoin en Ethereum) vallen niet in deze categorie, aangezien zij probabilistische finaliteit hebben.
- Soevereiniteit: Elke blockchain wordt onderhouden door een reeks validators die tot taak hebben overeenstemming te bereiken over het volgende blok dat aan de blockchain wordt toegevoegd. In Proof-of-Work blockchains worden deze validators miners genoemd. Een soevereine blockchain is een blockchain met een eigen validatorset. In veel gevallen is het belangrijk dat blockchains soeverein zijn, omdat de validators uiteindelijk verantwoordelijk zijn voor het wijzigen van de toestand. In Ethereum worden alle toepassingen uitgevoerd door een gemeenschappelijke set van validators. Hierdoor heeft elke toepassing slechts een beperkte soevereiniteit.
Met IBC kunnen heterogene blockchains tokens en gegevens naar elkaar overdragen, wat betekent dat blockchains met verschillende toepassingen en validatorsets interoperabel zijn. Zo kunnen bijvoorbeeld publieke en private blockchains tokens aan elkaar overdragen. Momenteel maakt geen enkel ander blockchainraamwerk dit niveau van interoperabiliteit mogelijk.
HOW IBC WORKS
Het principe achter IBC is vrij eenvoudig. Laten we een voorbeeld nemen waarbij een account op keten A 10 tokens (laten we ze ATOM noemen) naar keten B wil sturen.
Tracking
Continu ontvangt keten B de headers van keten A, en omgekeerd. Hierdoor kan elke keten de validatorset van de andere volgen. In wezen draait elke keten een light-client van de andere.
Bonding
Wanneer de overdracht van de IBC wordt gestart, worden de ATOM op ketting A vergrendeld (gebonden).
Proof Relay
Vervolgens wordt een bewijs dat de 10 ATOM’s gebonden zijn, doorgegeven van keten A aan keten B.
Validation
Het bewijs wordt op keten B geverifieerd aan de hand van de header van keten A en als het geldig is, worden op keten B 10 ATOM-vouchers aangemaakt.
Merk op dat de ATOM die zijn gecreëerd op keten B geen echte ATOM zijn, aangezien ATOM alleen bestaan op keten A. Ze zijn een representatie op B van ATOM van keten A, samen met een bewijs dat deze ATOM bevroren zijn op keten A.
Een soortgelijk mechanisme wordt gebruikt om ATOM te ontgrendelen wanneer zij terugkeren naar hun oorspronkelijke keten. Voor een uitgebreidere beschrijving van het IBC-protocol kunt u deze specificatie raadplegen.
Designing the “Internet of Blockchains”
IBC is a protocol that allows two heterogeneous blockchains to transfer tokens to each other. From there, how do we create a network of blockchains?
One idea is to connect each blockchain in the network with every other via direct IBC connections. The main problem with this approach is that the number of connections in the network grows quadratically with the number of blockchains. If there are 100 blockchains in the network and each needs to maintain an IBC connection with every other, that is 4950 connections. This quickly gets out of hand.
To solve this, Cosmos proposes a modular architecture with two classes of blockchain: Hubs and Zones. Zones are regular heterogenous blockchains and Hubs are blockchains specifically designed to connect Zones together. When a Zone creates an IBC connection with a Hub, it can automatically access (i.e. send to and receive from) every other Zone that is connected to it. As a result, each Zone only needs to establish a limited number of connections with a restricted set of Hubs. Hubs also prevent double spending among Zones. This means that when a Zone receives a token from a Hub, it only needs to trust the origin Zone of this token and the Hub.
The first Hub launched in the Cosmos Network is the Cosmos Hub. The Cosmos Hub is a public Proof-of-Stake blockchain whose native staking token is called the ATOM, and where transactions fees will be payable in multiple tokens. The launch of the Hub also marks the launch of the Cosmos network.
Designing the “Internet of Blockchains”
IBC is een protocol waarmee twee heterogene blockchains tokens aan elkaar kunnen overdragen. Hoe creëren we van daaruit een netwerk van blockchains?
Eén idee is om elke blockchain in het netwerk met elkaar te verbinden via directe IBC-verbindingen. Het grootste probleem met deze aanpak is dat het aantal verbindingen in het netwerk kwadratisch groeit met het aantal blockchains. Als er 100 blockchains in het netwerk zijn en elke blockchain moet een IBC-verbinding met elke andere onderhouden, dan zijn dat 4950 verbindingen. Dit loopt snel uit de hand.
Om dit op te lossen stelt Cosmos een modulaire architectuur voor met twee klassen blockchains: Hubs en Zones. Zones zijn gewone heterogene blockchains en Hubs zijn blockchains die speciaal zijn ontworpen om Zones met elkaar te verbinden. Wanneer een Zone een IBC-verbinding maakt met een Hub, heeft hij automatisch toegang tot (d.w.z. verzenden naar en ontvangen van) elke andere Zone die ermee verbonden is. Daardoor hoeft elke Zone slechts een beperkt aantal verbindingen met een beperkte reeks Hubs tot stand te brengen. Hubs voorkomen ook dubbele uitgaven tussen Zones. Dit betekent dat wanneer een Zone een token ontvangt van een Hub, hij alleen de oorspronkelijke Zone van dit token en de Hub hoeft te vertrouwen.
De eerste Hub in het Cosmos Netwerk is de Cosmos Hub. De Cosmos Hub is een openbare Proof-of-Stake blockchain waarvan het native staking token de ATOM heet, en waar de transactiekosten in meerdere tokens zullen worden betaald. De lancering van de Hub markeert tevens de start van het Cosmos netwerk.
Bridging non-Tendermint chains
So far, the architecture of Cosmos we have presented shows how Tendermint-based chains can interoperate. But Cosmos is not limited to Tendermint chains. In fact, any kind of blockchain can be connected to Cosmos.
We have two cases to distinguish: fast-finality chains and probabilistic-finality chains.
FAST-FINALITY CHAINS
Blockchains that use any fast-finality consensus algorithms can connect with Cosmos by adapting IBC. For example, if Ethereum were to switch to Casper FFG (Friendly Finality Gadget), a direct connection could be established between it and the Cosmos Ecosystem by adapting IBC to work with Casper.
PROBABILISTIC-FINALITY CHAINS
For blockchains that do not have fast-finality, like Proof-of-Work chains, things get a bit trickier. For these chains we use a special kind of proxy-chain called a Peg-Zone.
A Peg-Zone is a blockchain that tracks the state of another blockchain. The Peg-Zone itself has fast-finality and is therefore compatible with IBC. Its role is to establish finality for the blockchain it bridges. Let us look at the following example.
Example: Ethereum Peg-Zone
We want to bridge the Proof-of-Work Ethereum blockchain to make it possible to send tokens back and forth between Ethereum and Cosmos. Because Proof-of-Work Ethereum does not have fast-finality, we need to create a Peg-Zone to act as a bridge between the two.
First, the Peg-Zone needs to decide on a finality threshold for the origin chain. For example, it can consider that a given block of the origin’s chain is final when 100 blocks have been added after it.
Second, a contract is deployed on the main Ethereum blockchain. When users want to send tokens from Ethereum to Cosmos, they start by sending tokens to this contract. Then the contract freezes the assets and after 100 blocks, a representation of these assets is released on the Peg-Zone. A similar mechanism is used to send assets back to the Ethereum chain.
Interestingly enough, the Peg-Zone also allows users to send any token that lives on Cosmos to the Ethereum chain (the Cosmos tokens would be represented as ERC20 on the Ethereum chain). The Tendermint team is currently working on a Peg-Zone implementation for the Ethereum chain called Peggy.
Peg-Zones will need to be customized for the particular chain they bridge. Building an Ethereum Peg-Zone is relatively simple because Ethereum is account-based and has smart-contracts. However, building a Bitcoin Peg-Zone is a bit more challenging. Explaining how to build a Bitcoin-like Peg-Zone is out-of-scope for this intro but know that it is theoretically possible. If you want to learn more about Peg-Zones you can take a look at this spec.
Bridging non-Tendermint chains
Tot nu toe heeft de architectuur van Cosmos laten zien hoe op Tendermint gebaseerde ketens kunnen samenwerken. Maar Cosmos is niet beperkt tot Tendermint-ketens. In feite kan elke soort blockchain op Cosmos worden aangesloten.
We moeten twee gevallen onderscheiden: snelle-finaliteitsketens en probabilistische-finaliteitsketens.
FAST-FINALITY CHAINS
Blockchains die een snelle-finaliteitsconsensusalgoritmen gebruiken, kunnen verbinding maken met Cosmos door IBC aan te passen. Als Ethereum bijvoorbeeld zou overstappen op Casper FFG (Friendly Finality Gadget), kan een directe verbinding tot stand worden gebracht met het Cosmos Ecosysteem door IBC aan te passen om met Casper te werken.
PROBABILISTIC-FINALITY CHAINS
Voor blockchains die geen fast-finality hebben, zoals Proof-of-Work-ketens, wordt het wat lastiger. Voor deze ketens gebruiken we een speciaal soort proxy-ketting, een Peg-Zone genaamd.
Een Peg-Zone is een blockchain die de toestand van een andere blockchain volgt. De Peg-Zone zelf heeft snelle finaliteit en is daarom compatibel met IBC. Zijn rol is het vaststellen van finaliteit voor de blockchain die hij overbrugt. Laten we het volgende voorbeeld bekijken.
Example: Ethereum Peg-Zone
Wij willen de Proof-of-Work Ethereum blockchain overbruggen om het mogelijk te maken tokens heen en weer te sturen tussen Ethereum en Cosmos. Omdat Proof-of-Work Ethereum geen snelle finaliteit heeft, moeten we een Peg-Zone creëren die als brug tussen beide fungeert.
Eerst moet de Peg-Zone een finaliteitsdrempel bepalen voor de origin chain. Hij kan er bijvoorbeeld van uitgaan dat een bepaald blok van de oorsprongsketen definitief is wanneer er 100 blokken na zijn toegevoegd.
Ten tweede wordt een contract ingezet op de Ethereum-blockchain. Wanneer gebruikers tokens van Ethereum naar Cosmos willen sturen, beginnen ze met het sturen van tokens naar dit contract. Vervolgens bevriest het contract de activa en na 100 blokken wordt een representatie van deze activa vrijgegeven op de Peg-Zone. Een soortgelijk mechanisme wordt gebruikt om activa terug te sturen naar de Ethereum-keten.
Interessant genoeg kunnen gebruikers met de Peg-Zone ook elk token dat op Cosmos leeft naar de Ethereumketen sturen (de Cosmos-tokens zouden als ERC20 op de Ethereumketen worden voorgesteld). Het Tendermint team werkt momenteel aan een Peg-Zone implementatie voor de Ethereum keten genaamd Peggy.
Peg-Zones zullen moeten worden aangepast voor de specifieke keten die ze overbruggen. Het bouwen van een Ethereum Peg-Zone is relatief eenvoudig omdat Ethereum gebaseerd is op accounts en smart-contracten heeft. Het bouwen van een Bitcoin Peg-Zone is echter wat lastiger. Uitleggen hoe u een Bitcoin-achtige Peg-Zone bouwt valt buiten het bestek van deze intro, maar weet dat het theoretisch mogelijk is. Als u meer wilt weten over Peg-Zones, kunt u deze specs bekijken.
Solving Scalability
Now that we can easily create and connect blockchains there is one final issue to tackle: Scalability. Cosmos leverages two types of scalability:
- Vertical scalability: This encompasses the methods for scaling the blockchain itself. By moving away from Proof-of-Work and optimizing its components, Tendermint BFT can reach thousands of transactions per-second. The bottleneck factor is the application itself. For example, an application like a Virtual Machine (e.g. the Ethereum Virtual Machine) will impose a much lower limit on the transaction throughput than an application where transaction types and state transition functions are directly embedded in it (e.g. a standard Cosmos SDK application). This is one of the reasons why application-specific blockchains make sense (read about more reasons here).
- Horizontal scalability: Even if the consensus engine and the application are highly optimized, at some point the transaction throughput of a single chain inevitably hits a wall it cannot surpass. That is the limit of vertical scaling. To go beyond it, the solution is to move to multi-chain architectures. The idea is to have multiple parallel chains running the same application and operated by a common validator set, making blockchains theoretically infinitely scalable. Details about horizontal scalability are fairly complex and out-of-scope for this intro.
Cosmos will offer very good vertical scalability at launch, which will be a major improvement over current blockchain solutions in and of itself. Later, after the completion of the IBC module, horizontal scalability solutions will be implemented.
Solving Scalability
Nu we gemakkelijk blockchains kunnen creëren en verbinden is er nog één laatste probleem dat moet worden aangepakt: Schaalbaarheid. Cosmos maakt gebruik van twee soorten schaalbaarheid:
- Verticale schaalbaarheid: Dit omvat de methoden voor het schalen van de blockchain zelf. Door af te stappen van Proof-of-Work en zijn componenten te optimaliseren, kan Tendermint BFT duizenden transacties per seconde bereiken. De knelpuntfactor is de toepassing zelf. Zo zal een toepassing als een Virtual Machine (bijvoorbeeld de Ethereum Virtual Machine) een veel lagere limiet opleggen aan de transactiedoorvoer dan een toepassing waar transactietypen en toestandsovergangsfuncties rechtstreeks in zijn ingebouwd (bijvoorbeeld een standaard Cosmos SDK-applicatie). Dit is een van de redenen waarom applicatiespecifieke blockchains zinvol zijn (lees hier over meer redenen).
- Horizontale schaalbaarheid: Zelfs als de consensusmotor en de toepassing sterk geoptimaliseerd zijn, is het onvermijdelijk dat de transactiedoorvoer van een enkele keten op een muur stuit die hij niet kan overschrijden. Dat is de grens van verticale schaalbaarheid. Om verder te gaan is de oplossing de overstap naar multi-keten architecturen. Het idee is om meerdere parallelle ketens te hebben waarop dezelfde toepassing draait en die worden bediend door een gemeenschappelijke validatorset, waardoor blockchains theoretisch oneindig schaalbaar worden. Details over horizontale schaalbaarheid zijn vrij complex en vallen buiten het bestek van deze intro.
Cosmos zal bij de lancering een zeer goede verticale schaalbaarheid bieden, wat op zich al een grote verbetering is ten opzichte van de huidige blockchainoplossingen. Later, na de voltooiing van de IBC-module, zullen horizontale schaalbaarheidsoplossingen worden geïmplementeerd.
So in the end, what is Cosmos?
Hopefully by now you have a clearer picture of the Cosmos project. Here is a quick recap of what Cosmos is in three concise points:
- Cosmos makes blockchains powerful and easy to develop with Tendermint BFT and the modularity of the Cosmos SDK.
- Cosmos enables blockchains to transfer value with each other through IBC and Peg-Zones, while letting them retain their sovereignty.
- Cosmos allows blockchain applications to scale to millions of users through horizontal and vertical scalability solutions.
More than anything, Cosmos is not a product but an ecosystem built on a set of modular, adaptable and interchangeable tools. Developers are encouraged to join the effort to improve existing tools and create new ones in order to make the promise of blockchain technology a reality. These tools are the foundation needed to create the decentralized internet and global financial system of tomorrow.
So in the end, what is Cosmos?
Hopelijk heeft u nu een duidelijker beeld van het Cosmos-project. Hier is een korte samenvatting van wat Cosmos is in drie beknopte punten:
- Cosmos maakt blockchains krachtig en eenvoudig te ontwikkelen met Tendermint BFT en de modulariteit van de Cosmos SDK.
- Cosmos stelt blockchains in staat om via IBC en Peg-Zones waarde met elkaar over te dragen, terwijl ze hun soevereiniteit behouden.
- Met Cosmos kunnen blockchaintoepassingen worden geschaald naar miljoenen gebruikers via horizontale en verticale schaalbaarheidsoplossingen.
Cosmos is vooral geen product, maar een ecosysteem dat is opgebouwd uit een reeks modulaire, aanpasbare en uitwisselbare tools. Ontwikkelaars worden aangemoedigd om mee te werken aan het verbeteren van bestaande tools en het creëren van nieuwe om de belofte van blockchaintechnologie waar te maken. Deze tools vormen de basis die nodig is om het gedecentraliseerde internet en het wereldwijde financiële systeem van morgen te creëren.
Begrippenlijst
BFT “Byzantine Fault Tolerance”
BFT staat voor “Byzantine Fault Tolerance”, en het BFT consensus algoritme is ontworpen om gedistribueerde systemen bestand te maken tegen fouten die kunnen optreden bij de deelname van slecht bedoelende of foutieve knooppunten. Dit is belangrijk in gedistribueerde systemen, zoals blockchain-netwerken, omdat het verzekerd dat het netwerk blijft functioneren en dat de integriteit van de gegevens op het netwerk behouden blijft, zelfs als sommige knooppunten fouten maken of slecht bedoelend zijn.
Het BFT consensus algoritme werkt door meerdere knooppunten samen te laten werken om consensus te bereiken over de volgorde van transacties en het opnemen ervan in een blok op de blockchain. Elke knooppunt moet bevestigen dat een transactie geldig is voordat deze wordt opgenomen in een blok, en een meerderheid van de knooppunten moet overeenstemmen over de volgorde van de transacties. Als een knooppunt foutieve of slecht bedoelende transacties probeert op te nemen, zal het worden genegeerd door de overige knooppunten, waardoor de integriteit van het netwerk wordt beschermd.
Er zijn verschillende soorten BFT consensus algoritmen, zoals Practical Byzantine Fault Tolerance (PBFT) en Tendermint BFT. Elk van deze algoritmen heeft zijn eigen unieke benadering om consensus te bereiken en fouten te vermijden, maar ze delen allemaal het doel om gedistribueerde systemen bestand te maken tegen fouten en slecht bedoelde aanvallen.
Tendermint consensus
Tendermint consensus is een BFT (Byzantine Fault Tolerant) consensus algoritme ontwikkeld voor gedistribueerde systemen, zoals blockchain-netwerken. Het wordt gebruikt om consensus te bereiken over de volgorde van transacties en het opnemen ervan in blokken op de blockchain.
In tegenstelling tot andere BFT consensus algoritmen, zoals PBFT (Practical Byzantine Fault Tolerance), is Tendermint consensus specifiek ontworpen voor gebruik in blockchain-netwerken. Het biedt een snelle, efficiënte en betrouwbare manier om consensus te bereiken, waardoor het een populaire keuze is voor veel blockchain-projecten.
Tendermint consensus werkt door een kleine groep van validators te selecteren die samen werken om consensus te bereiken over de volgorde van transacties. Validators sturen elkaar bevestigingen van transacties, en de volgorde van de transacties wordt opgenomen in blokken op de blockchain nadat een bepaalde meerderheid van validators overeenstemming heeft bereikt.
Door het snelle consensusproces van Tendermint, is het in staat om transacties snel en efficiënt te verwerken, wat het geschikt maakt voor gebruik in veeleisende toepassingen, zoals DeFi-platforms en spelletjes.
Het is belangrijk op te merken dat Tendermint consensus een BFT-algoritme is, waardoor het bestand is tegen fouten en slecht bedoelende aanvallen, en dat het de integriteit van de gegevens op het blockchain-netwerk beschermt.
fork
Een fork in de cryptowereld is een verandering in de software die een blockchain-netwerk gebruikt, wat resulteert in twee of meer afzonderlijke versies van de blockchain. Dit kan gebeuren wanneer ontwikkelaars besluiten om bepaalde veranderingen aan te brengen in de software, of wanneer er verschillende meningen zijn over hoe een bepaald issue moet worden opgelost.
Er zijn twee soorten forks: “zachte forks” en “harde forks”.
Een “zachte fork” is een aanpassing aan de software waarbij nieuwe regels worden geïntroduceerd, maar oude regels blijven gelden. Dit betekent dat de nieuwe versie van de blockchain achterwaarts compatibel is met de oude versie, en transacties die volgens de oude regels zijn gevonden, blijven geldig op de nieuwe blockchain.
Een “harde fork” is een aanpassing aan de software waarbij nieuwe regels worden geïntroduceerd die niet compatibel zijn met de oude regels. Dit betekent dat de nieuwe versie van de blockchain niet achterwaarts compatibel is met de oude versie, en transacties die volgens de oude regels zijn uitgevoerd, zijn niet geldig op de nieuwe blockchain.
Harde forks kunnen leiden tot de splitsing van een blockchain in twee of meer afzonderlijke blockchains, die elk apart verder worden ontwikkeld en beheerd. Dit gebeurt bijvoorbeeld wanneer een deel van de gemeenschap besluit om de oude versie van de blockchain te behouden, terwijl een ander deel besluit om de nieuwe versie te gebruiken.
Het is belangrijk op te merken dat forks impact kunnen hebben op de waarde en het vertrouwen in een bepaalde cryptocurrency, en het is daarom belangrijk om zorgvuldig te overwegen voordat besloten wordt om een fork uit te voeren.
UTXO-model (Unspent Transaction Output)
Het UTXO-model (Unspent Transaction Output) is een manier om cryptocurrency-transacties te verwerken en te beheren. Het wordt voornamelijk gebruikt in blockchain-systemen zoals Bitcoin.
In het UTXO-model wordt elke transactie beschouwd als een output die kan worden opgeslagen in de blockchain. Deze output kan later worden gebruikt als input voor een volgende transactie. Bij elke nieuwe transactie worden de inputs verbruikt en worden er nieuwe outputs gecreëerd.
Het voordeel van het UTXO-model is dat het eenvoudiger is om transacties te verifiëren en te beveiligen. Bovendien maakt het UTXO-model het mogelijk om verschillende soorten blockchain-gebaseerde diensten te bouwen, zoals smart contracts.
Het UTXO-model verschilt van andere modellen, zoals het account-model, waarbij elke gebruiker een saldo heeft en transacties worden uitgevoerd door middel van het aanpassen van saldi in plaats van door het verbruiken van outputs.
In het UTXO-model is het niet nodig om de volledige geschiedenis van elke gebruiker bij te houden, wat het beheer en de opslag eenvoudiger maakt. Hierdoor is het UTXO-model bijvoorbeeld geschikter voor grote en schaalbare blockchain-systemen zoals Bitcoin.
IBC Inter-Blockchain Communication
IBC staat voor Inter-Blockchain Communication, wat betekent dat het een protocol is dat verschillende blockchain-netwerken met elkaar verbindt. Hierdoor kunnen assets en informatie van één blockchain naar een andere worden overgebracht en verwerkt, zonder dat er vertrouwen nodig is in de andere blockchain.
IBC is belangrijk omdat het een manier biedt om informatie en assets tussen verschillende blockchain-ecosystemen uit te wisselen, zonder dat er een centrale autoriteit nodig is. Hierdoor wordt de interoperabiliteit tussen verschillende blockchain-netwerken verbeterd, wat de samenwerking en het uitwisselen van informatie en assets tussen verschillende blockchain-netwerken eenvoudiger maakt.
Het IBC-protocol wordt veel gebruikt in de wereld van defi (decentralized finance) en is een belangrijk onderdeel van de ontwikkeling van een open, decentraal financieel ecosysteem.
Application Blockchain Interface (ABI)
In de algemene betekenis van cryptocurrency verwijst de term “Application Blockchain Interface” (ABI) naar een specificatie die de communicatie definieert tussen een blockchain en een toepassing of een cliënt die ermee interageert. De ABI fungeert als een brug tussen beide, en biedt een standaardmanier voor toepassingen om te interageren met de blockchain en voor de blockchain om gegevens van toepassingen te verzenden en te ontvangen.
Het doel van de ABI is het bieden van een consistente en gestandaardiseerde manier voor toepassingen om met de blockchain te interageren, waardoor ontwikkelaars toepassingen kunnen creëren die op een voorspelbare manier met de blockchain kunnen interageren. Dit helpt om compatibiliteit tussen verschillende toepassingen en de blockchain te garanderen, waardoor het gemakkelijker wordt om nieuwe toepassingen te ontwikkelen en te integreren in het blockchain-ecosysteem.
Kortom, de ABI is een cruciaal onderdeel van veel blockchain-systemen, omdat het toepassingen in staat stelt om op een gestandaardiseerde en voorspelbare manier met de blockchain te interageren, wat zorgt voor meer compatibiliteit, interoperabiliteit en innovatie in het blockchain-ecosysteem.
Golang
“Golang” is een afkorting van “Go Programming Language”. Go is een programmeertaal ontwikkeld door Google en is ontworpen om efficiënt, snel en gemakkelijk te zijn voor ontwikkelaars. Het is een open-source taal die wordt gebruikt voor het ontwikkelen van web-applicaties, netwerkdiensten en andere soorten software. Golang biedt een eenvoudige en moderne syntaxis en is gebouwd met het doel om efficiënt te zijn in termen van snelheid en geheugengebruik.
Ethermint
Met “Ethermint” wordt een implementatie van Ethereum bedoeld op de Cosmos-SDK. Het is een manier om de Ethereum-blockchain te implementeren op het Cosmos-platform en gebruik te maken van de specifieke kenmerken en voordelen van het Cosmos-ecosysteem. Ethermint maakt gebruik van de Go-programmeertaal en de Cosmos SDK om de functionaliteit van Ethereum naar het Cosmos-platform te porten. Hierdoor kunnen ontwikkelaars op een efficiënte en flexibele manier Ethereum-applicaties ontwikkelen en uitvoeren op het Cosmos-platform.
HETEROGENEOUS CHAINS
Met heterogene ketens (heteregeen betekent “verschillend” in het Nederlands) worden blockchains bedoeld die verschillende eigenschappen hebben en specifiek zijn ontworpen voor verschillende doeleinden of use-cases. Heterogene ketens zijn niet allemaal hetzelfde en verschillen van elkaar in termen van consensus-algoritmen, schaling, privacy en meer.
Bijvoorbeeld, een heterogene keten kan specifiek zijn ontworpen voor het verwerken van micropayments, terwijl een andere keten juist is ontworpen om privacy en anonimiteit te waarborgen. Dankzij de verscheidenheid aan heterogene ketens, kunnen ontwikkelaars de juiste blockchain kiezen die aansluit bij hun specifieke use-case en eisen. Hierdoor kunnen ze meer efficiënt werken en beter presterende toepassingen ontwikkelen.
sovereignty
Met “sovereignty” (in het Nederlands ook wel soevereiniteit genoemd) in de context van crypto wordt bedoeld dat een gebruiker volledige controle heeft over zijn of haar eigen activa en gegevens. In plaats van te vertrouwen op derden zoals banken of centrale overheden, hebben gebruikers van cryptocurrencies de mogelijkheid om direct te beheren en te beschikken over hun digitale activa en privégegevens. Dit maakt het mogelijk om meer privacy en controle te hebben over persoonlijke financiën en informatie.
Het concept van sovereignty is een van de centrale waarden van de cryptocurrency beweging en draagt bij aan de visie van een decentrale en meer democratische financiële sector. Het streeft naar een wereld waarin gebruikers niet langer afhankelijk zijn van centrale machten en in staat zijn om direct te beschikken over hun eigendom en gegevens.
interoperable
Met “interoperabiliteit” (in het Nederlands ook wel inter-operabiliteit genoemd) wordt bedoeld de vermogen van verschillende systemen of componenten om samen te werken en gegevens uit te wisselen, zonder beperkingen of obstakels. In de context van blockchain technologie, betekent dit dat verschillende blockchain-netwerken en cryptocurrencies op een eenvoudige manier met elkaar kunnen communiceren en gegevens en activa kunnen uitwisselen.
Interoperabiliteit is belangrijk voor de groei en het succes van de blockchain-industrie, omdat het de mogelijkheid biedt om verschillende netwerken en toepassingen te integreren en samen te werken, wat leidt tot een verhoogde efficiëntie en een groter bereik. Het verbetert ook de bruikbaarheid van blockchain-toepassingen voor gebruikers en verhoogt de waarde van het gehele ecosysteem.
Kortom, interoperabiliteit streeft naar een wereld waarin verschillende blockchain-netwerken en cryptocurrencies op een eenvoudige en efficiënte manier kunnen samenwerken en gegevens kunnen uitwisselen, zonder beperkingen of obstakels.
Casper FFG
Casper FFG staat voor “Correct-by-Construction (CBC) Casper Friendly Finality Gadget”. Het is een consensusmechanisme dat is ontworpen om te worden gebruikt in gedecentraliseerde blockchain-netwerken, zoals Ethereum.
Casper FFG is een hybride mechanisme dat gebruik maakt van Proof-of-Work (PoW) en Proof-of-Stake (PoS) consensus. Het maakt gebruik van PoW om nieuwe blokken te valideren en te genereren, en maakt vervolgens gebruik van PoS om de uiteindelijke bevestiging (finaliteit) van de blokken te verzekeren.
Casper FFG is ontworpen om veiliger en efficiënter te zijn dan traditionele PoW-consensusmechanismen, omdat het de nadelen van PoW, zoals hoge energiekosten, probeert te verminderen. Door PoS te gebruiken voor de uiteindelijke bevestiging van de blokken, kunnen deelnemers aan het netwerk hun inzet (staking) gebruiken om de veiligheid van het netwerk te verzekeren en beloningen te verdienen.
Casper FFG is ontwikkeld door Ethereum-ontwikkelaars en wordt beschouwd als een belangrijk onderdeel van de overgang van Ethereum van PoW naar PoS-consensusmechanisme.