FOAM working with Interchain Foundation on Haskell Cosmos SDK


Foamspace is excited to share that we are collaborating with the Interchain Foundation on creating open source, production level ABCI servers, libraries, and a base SDK layer for developing Tendermint backed applications in the Haskell ecosystem. The high level goal of this project is for the Kadena and Foamspace teams to work together to deliver a Tendermint SDK in Haskell, integration with the Pact runtime, and IBC support.

Existing SDK:

We believe in strong software foundations that also contribute to an open source ecosystem. From the recent FOAM Location Demo and Plasma/Tendermint MVP from our perspective it was clear that working with a functional programming language such as Haskell would bring security guarantees to Tendermint developers and allow work on FOAM Location to accelerate.

The Interchain Foundation (ICF) was founded in 2017 with the mission of promoting and advancing research and development in open and decentralized networks, with a particular focus on the Cosmos Network.

As the Cosmos community grows and the software matures, it’s important that activities in the ecosystem continue to diversify and decentralize. In a healthy and resilient ecosystem, we expect to see responsibilities distributed across many sustainable, independent, developer entities, with clear separation of concerns and clear modes of collaboration between them.

​​FOAM is aggressively pursuing scalable blockchain solutions in order to support our geospatial blockchain protocols and services, and we see Tendermint as the most mature option available today. As a team of Haskell developers making heavy use of static software analysis, there are two obstructions we see in our pursuits thus far.

First, the present situation is that the Tendermint stack (including the Cosmos SDK) is largely monolingual — golang​ being the primary language — and severely underutilizes the Tendermint socket-protocol abstractions. Note that while there exist implementations of abci servers in other languages, most are either out of date or underdeveloped, and there is nothing approaching the Cosmos SDK outside of golang​ . As is being proven in the case of Ethereum, the diversity of languages for libraries, clients, and tooling greatly impacts the adoption of an open protocol and is a measurement of the long term health of the platform.

​​Second, the go​ language itself lacks certain static security and correctness guarantees — some of which were anticipated by the Cosmos team. The Haskell language, however, provides rich static security guarantees at the core levels of the language, making it ideal for writing large blockchain applications where such guarantees are important. This is supported by the fact that other platforms such as Cardano and Kadena have chosen the Haskell ecosystem, for example see this article for Cardano’s rationale.

​​FOAM is motivated by the belief that having production level Haskell libraries for Tendermint/Cosmos will help secure the long adoption of both platforms. In the case of FOAM, we already demonstrated the usefulness of a purely functional programming stack for Ethereum. Almost any conversation with a web3 developer in 2018 would invariably drift toward problems using web3-js or truffle, the most commonly used Ethereum libraries. The developers at FOAM had no such problems, as we had written our own web3 libraries and smart contract management systems in Haskell and PureScript from the ground up — for examples, see our articles on chanterelle, purescript-web3, and cliquebait. These libraries are still actively maintained and used in various projects both in and outside of FOAM.

​​The end result is that Ethereum ecosystem was enriched with a new set of proven tools for functional programmers, and FOAM was able to successfully launch the FOAM Map, an actively used and sophisticated DApp, with strong guarantees about its behavior. Additionally, we earned a lot of attention from the functional programming community which had until then maintained a healthy distrust of Ethereum’s largely Javascript based ecosystem. The has the effect of opening up web3 development to a whole new pool of talented developers. We look forward to doing the same for the Cosmos ecosystem.