Join Our Mailing List
Tuesday May 30, 2023
Bitcoin (BTC) $27,685.42   Ethereum (ETH) $1,890.24
  • Events
  • News
    • Blockchain Technology
    • Capital Raising
    • Crypto Exchanges
    • Crypto Payments
    • Gaming & Betting
    • Investment Management
    • M&A
    • Mining
    • Networks & Protocols
    • Security
    • Vendor Technology
    • Wallets
Trezor Model T
CryptoNinjas
  • Crypto & Blockchain Links
  • Real-Time Market Data
  • Bitcoin ATM Map
  • Token Offerings/Listings
No Result
View All Result
CryptoNinjas
Home Vendor Technology

FOAM releases Kepler, a Haskell-based Cosmos SDK

Published by CryptoNinjas.net
02/20/2020
FOAM releases Kepler, a Haskell-based Cosmos SDK

The development team of decentralized location and map protocol FOAM, have now released Kepler, a Haskell language SDK for building blockchain applications backed by the Tendermint consensus engine.

Short Summary of Tendermint

Tendermint BFT is a proof-of-stake consensus algorithm designed and implemented back in 2014-2015. The creators then started a company called Tendermint Inc. oriented around use cases and integrations, culminating in the Cosmos blockchain network. Cosmos positions itself as a “blockchain 3.0” solution, built to address the scalability and interoperability limitations of Ethereum (a 2.0 solution) and Bitcoin (a 1.0 solution).

How Tendermint Backed Applications Work

Tendermint-BFT is paired with a socket protocol called ABCI (Application BlockChain Interface). Tendermint-BFT by itself is a message ordering algorithm for a distributed system trying to process state-updating messages in the same order on every node. But this algorithm can’t tell what messages are valid or invalid for custom applications or how to determine if a node is in a valid state after updating itself with a message.

This is where ABCI comes in. ABCI is the hook that allows the consensus algorithm to pass the responsibility of message validation and state validation to a custom application. Any application that receives and responds to ABCI messages from Tendermint core is called an ABCI application.

Since ABCI is a socket protocol, it is itself language agnostic and is defined by a set of protobuf files. This means that in principle, developers can implement an ABCI application in whatever language you want to.

Why Tendermint?

If you’re a Haskell or Rust developer, you may have heard of competing platforms like Cardano or Substrate that offer similar “blockchain 3.0” solutions. Cardano has a portion of its network in production (cardano-sl) and shows optimism about delivering an application layer in the future. The first production instances of Substrate blockchains have just begun to appear.

Why Kepler?

Since Tendermint allows developers to write blockchain applications in whatever language they want, they are only limited to the languages that implement an ABCI server and ideally a framework for abstracting away the more esoteric internals. As of today, the language has the most support is golang with the official cosmos-sdk, with options in Javascript and some support in Rust.

“We believe that blockchain application development is the most secure and robust when backed by statically typed languages like Haskell and PureScript, so we decided to build out a general-purpose Tendermint SDK in Haskell. Hence Kepler.”
– The FOAM Team

Kepler Architecture Highlights

For the full essence of how applications are made using Kepler, check out the official tutorial.

Overview

The basic component of a Kepler application is the Module. This module declares a few pieces of information:

  1. The router that the module uses to process transactions.
  2. The router that the module uses to process state queries.
  3. The custom effects and interpretation that the module introduces.

There is a standard library of modules that developers can plug into their application, things like bank for managing token balances, or auth for managing basic account information. It is also possible for developers to create their own modules for managing whatever it is that their application does.

Developers can easily create dependencies between modules using the type system. For example, if a module will execute token transfers during a transaction, it can explicitly state dependence on the bank module. It is also possible to be more precise and state a dependent on only the effect that allows for token transfers.

Applications are defined by simply listing the modules the developer wants to be used. In a servantlike manner, it will compose the routers for transactions and state queries from the individual modules, and will also automatically interpret custom application effects to a lower level system that the SDK knows about.

Effects Systems

Sometimes called Algebraic Effects, an Effects system provides a way to strictly segment the capabilities of one section of code from another using the type system. It also allows developers to abstract the code from its runtime execution. Kepler is written using the polysemy higher order effects library.

This has a few main benefits:

  1. The SDK clearly segments different responsibilities to different sections of code. For example, although handlers for querying state and processing transactions both have access to the database, the type system does not allow write-access during state query execution.
  2. Application developers can define custom effects (e.g. for dealing with tokens, or managing other custom application state) and can seamlessly integrate them with the effects defined by the SDK.
  3. The runtime of the SDK can be changed by simply providing a different interpretation for core effects.

Application Type

When an application has a type, it can be used to derive all kinds of other useful tools. Using the same kind of combinator logic found in servant, Kepler is able to generate client libraries from the application type that contain functions for submitting any kind of transaction or querying any state in an application for free. For example, this means that if a developer changes the type of even a single message that their application uses for transactions, they will get a compile-time error that their tests or a client application are broken.

88
SHARES
FacebookTwitterLinkedinRedditE-MailTelegram
Via: kepler.dev

Related News

Blockchain investment company KR1 invests in FOAM, Althea Mesh, and Etherisc projects

09/11/2018
KR1

KR1, the public fund which pursues investments in the blockchain sector today announced their latest purchases, starting with an investment of USD $200,000 into the FOAM project for 3,625,641.41 FOAM tokens. The FOAM Proof...

Read more
Load More
Leave Comment

Where to Exchange

Leading crypto suite in Spain & LATAM Visit
European bitcoin exchange Visit
Swap & buy 150+ cryptocurrencies Visit
First U.S. regulated BTC exchange Visit
  • Trending
  • Latest
RockX broadens suite with launch of new ether (ETH) native staking solution

RockX broadens suite with launch of new ether (ETH) native staking solution

05/23/2023
Where Exactly Can You Spend Monero Cryptocurrency?

Where Exactly Can You Spend Monero Cryptocurrency?

10/20/2021
Token.io launches new spin-out company focused on digital money solutions

Token.io launches new spin-out company focused on digital money solutions

12/10/2019
Quant Network blockchain integrates Constellation for IoT interoperability

Quant Network blockchain integrates Constellation for IoT interoperability

12/03/2019
RockX broadens suite with launch of new ether (ETH) native staking solution

RockX broadens suite with launch of new ether (ETH) native staking solution

05/23/2023
The Sandbox teams with Hex Trust to enable licensed and secure custody of its virtual assets

The Sandbox teams with Hex Trust for licensed, secure custody of its virtual assets

05/10/2023
CoinFlip launches new self-custodial cryptocurrency wallet platform 'Olliv'

CoinFlip launches new self-custodial cryptocurrency wallet platform ‘Olliv’

04/28/2023
Crypto exchange Deribit to launch zero-fee spot trading

Crypto derivatives exchange Deribit to launch zero-fee spot trading

04/20/2023
  • Home
  • Directory
  • Data
  • About
  • Contact
SUBSCRIBE

© 2016 - 2023 CryptoNinjas Disclosures | Privacy Policy

  • Home
  • Crypto Links
  • Market Data
  • Blockchain Tech
  • Exchanges
  • Capital Raising
  • Vendor Technology
  • Token Offerings/Listings
  • Payments
  • Wallets
  • Bitcoin ATM Map
  • Conferences & Events
  • About
  • Contact
No Result
View All Result

© 2016 - 2023 CryptoNinjas Disclosures | Privacy Policy