A High-Level Overview of Abstract Money, Interchain App Platform

Abstract Contact
Abstract Money
Published in
8 min readMar 5, 2024

--

TL;DR: Abstract Money is a vertically-integrated application platform focused on unifying multi-chain development and interaction.

Non-technical pitch of Abstract Money at Gateway to Cosmos 2022.

Abstract’s goal is to enable developers to build more powerful interchain dApps through collaboration, convention, and modularity. We provide a full-stack CosmWasm development experience, including smart-contract, middleware, and frontend tooling. The Abstract SDK streamlines the development of interchain applications with a powerful and easy-to-use modular application framework whose capabilities are fully realized via account-abstraction and our on-chain application infrastructure.

To learn more about our framework and our full developer vision, please check out our official documentation.

Introduction

The Cosmos SDK changes the game for blockchain-based applications. It allows for scalable development and deployment of application-specific chains by providing a well-defined framework emphasizing modularity. The “appchains” coincide with the fat application thesis, which states that the value lies in the applications themselves rather than in a shared, fat protocol like Ethereum or Solana. IBC enables interoperability between these appchains, and CosmWasm allows for the programmability of cross-chain interactions through a secure and efficient smart-contract environment. “inter-chain”

The Problem

It is difficult and slow to build CosmWasm applications. Teams start from scratch, and waste valuable time integrating primitives such as DEXes, money markets, oracles, and other DeFi building blocks. The fat app thesis encourages teams to drive value to their applications, consequently creating an environment of siloed development. This lack of inter-team collaboration hinders innovation and experimentation, and is partially why the CosmWasm ecosystem is relatively immature compared to the Ethereum and Solana ecosystems.

Secondly, while CosmWasm application updates (“migrations”) don’t require a replacement binary like chain upgrades, updates remain highly manual and dangerous, especially when multiple contracts are involved. This leaves user funds and team reputations at risk.

Finally, developing a cross-chain application requires deep prerequisite knowledge of IBC, proper handling of callbacks, error cases, and knowledge of interchain smart-contract security. Even for an experienced IBC developer, cross-chain interactions require new IBC ports, as well as channel and asset identification on both sides.

The Solution

We bring the modularity and scalability of the Cosmos SDK to CosmWasm applications with the Abstract SDK, our interchain application framework. The Abstract SDK is designed for organizations and individual developers to build composable, distributed applications in a fast, secure, and cost-effective manner. We place an emphasis on standardization and composability, congruent with well-studied smart-contract design patterns such as Ethereum’s Diamond Proxy Pattern (EIP-2535) and Web2 microservices and customized to the extensive capabilities of CosmWasm.

The foundation for every Abstract application is an Abstract Account, a smart-contract wallet. Modules, the smart-contracts built using the SDK, isolate shared logic and extend the functionality of the Account. This transforms it into an application. Module version management is performed via a permissioned on-chain module registry, allowing for dynamic application upgrades with protections against incorrect migrations. Inter-team collaboration is incentivized because modules can be monetized, providing sustainable income for developers and rewarding continued maintenance. Complex logic can be imported rather than rewritten.

The Abstract SDK provides easily-understandable abstractions for local and cross-chain interactions over IBC. Via an on-chain name service, assets, chains, and other resources can be referenced by name, rather than their complex identifiers. Abstract Accounts (and applications) can create and execute upon multi-hop interchain outposts with our integration with Polytone, an interchain account standard.

Why?

Read about Abstract’s origins here.

Our goal is to help realize the ideal of full user sovereignty in ushering in the next generation of interoperable applications. The interchain becomes ubiquitous not only via technical superiority, but via a thriving developer ↔ user economy, the most important multi-sided market in Web3.

Our team consists of 7 highly experienced Web3 software engineers, and both our founders are technical. Abstract’s tooling has been in development for over 2 years.

Abstract’s framework and on-chain infrastructure is open-source, chain-agnostic to any CosmWasm-enabled chain, and does not have a token.

Abstract’s Interchain CosmWasm Tooling

A full technical overview of the Abstract platform

Below we’ll go over the different components of the Abstract stack, servicing interchain developers.

Features TL;DR:

Production-Ready

  • Abstract Account: Multi-chain smart-contract wallet
  • Version Control: On-chain module registry with version management
  • Name Service: On-chain name service for assets, contracts, addresses, chains (channels), and DEX pairs
  • Abstract SDK: Modular CosmWasm application framework
  • Console: Developer interface for managing Accounts, applications, and modules
  • API: GraphQL API for quick contract queries and indexed information

Pre-Release

  • Abstract.js: Typescript SDK for use alongside the Abstract SDK
  • Interchain Abstract Accounts: Cross-chain smart-contract accounts via Polytone

Abstract Accounts

Read more about Abstract Accounts here.

Abstract’s application architecture is centered around our smart-contract wallet, coined an Abstract Account. This serves as a secure vault for asset management and provides a base upon which modules can be installed, creating an application. Applications can be installed upon Accounts via sub-accounts. The Account is also responsible for cross-chain communications, handling creation of and communication with interchain Accounts.

This enables Account owners to “self-host” their applications on fully sovereign smart-contracts. This follows the natural evolution of decentralized finance (DeFi) to a new era of personalized, sovereign finance, which we’re coining MyFi.

Modules

Read more about Abstract modules here.

A module in Abstract is a smart-contract that can be installed on an Abstract Account to extend its capabilities. Modules can be installed, removed, and configured by the Account’s owner, allowing for a high degree of customization. Additionally, modules can take on dependencies on other modules and securely interact with each other.

App modules are instantiated and owned by one Account.

  • Ex: ETF module allows the owner to manage the Account as an ETF. The module handles value calculation for deposits and withdrawals, and the owner manages the allocation.

Adapter modules serve as standard interfaces that facilitate communication between Accounts and various external services. They adapt a service to an interface.

  • DEX Adapter: Provides a standard interface for performing actions on DEXes.
  • CW-Staking Adapter Provides a standard interface for interacting with LP positions across Cosmos.
An example message sent to the Dex adapter. Notice the “dex” field and asset names, which are described further below in Abstract Name Service.

Integrations

Developers using the Abstract SDK can interact with the following services via standardized interface through Abstract’s adapter modules within minutes:

Two Abstract Accounts each have sovereign ETF modules, which can call the shared DEX adapter module, calling to dexes across IBC.

Module Registry (On-Chain)

See the live module registry or read more on the Version Control docs.

On-chain registry of versioned contracts to their code ids and metadata. Allows developers to register and monetize their modules.

  • abstract:dex:0.20.0 => juno...xxx
  • abstract:etf:0.3.0 => 205

This “package registry” is one of the most important components in enabling truly composable apps. All Abstract Apps can pull updates from the modules registry, allowing applications to be dynamically updated with the Account owner retaining full sovereignty.

Abstract Name Service (On-chain)

See the live name service or read more on the ANS docs.

The ANS is a smart contract that stores the following data:

Assets: The most relevant assets on the local blockchain.

  • osmosis>osmo on Osmosis => uosmo
  • osmosis>osmo on Juno => ibc/...XYZ
  • juno>dao on Juno => juno...xxx
  • juno>dao on Osmosis => ibc/...YZA

Contracts: Contracts related to certain protocols or applications that could be dynamically resolved. This could be used to store the address for an asset-pair for a dex.

  • croncat/factory on Osmosis => osmo...xxx

Channels: IBC channel data to map a protocol + destination chain to a channel id. This allows for dynamic IBC transfers without having to know the channel id beforehand.

  • osmosis on Juno => channel-5

Abstract SDK (Framework)

Read more about the SDK via its technical documentation and get started by building an app!

The Abstract SDK itself is the Rust-based CosmWasm framework with which developers write and test application modules. Applications using the SDK work seamlessly with the on-chain infrastructure. It provides common abstractions via traits for maximum ease-of-use and modularity.

All Abstract modules are easily testable using cw-orchestrator with out-of-the-box abstractions for Abstract Accounts and all other on-chain infrastructure.

IBC Capabilities (Pre-Release)

Abstract Accounts can create single- and multi-hop outposts on IBC-enabled chains using Polytone, enabling cross-chain applications. Our on-chain IBC abstractions ensure that all actions are authenticated and relayed to the proper destinations, and allow for single-chain management of complex multi-chain infrastructure.

Typescript + React Developer SDK (Pre-Release)

Abstract.JS provides comprehensive means for interacting with applications built using the Abstract SDK. It is also provider-agnostic, meaning that developers can use either Graz or Cosmos Kit in their frontend development. The design patterns used by Abstract.js are largely based on high-quality Ethereum packages such as wagmi and viem. It additionally provides code-generation plugins for ts-codegen for readable clients.

Application Console

Feel free to check out the mainnet and testnet Consoles, both of which are currently live.

Technical video demonstration of the Abstract Console for modular development of CosmWasm applications. Highlights the module registry, object name service, Abstract Accounts, and application management.

The developer console allows teams to manage their applications built using Abstract. It provides GUIs for all on-chain infrastructure and Abstract Accounts. It also serves as the marketplace upon which devs can list and monetize their modules as described earlier.

Abstract API

Query the API here.

A chain-agnostic GraphQL API for accessing all of Abstract from anywhere. Supports custom configurations for any CosmWasm network with Abstract.

Case Studies

FortyTwo Finance

FortyTwo is the interchain’s DeFi yield aggregator. It offers a single interface where users can manage their yield positions and understand their portfolios spread across any IBC-enabled chain.

One of FortyTwo’s primary products is a dex-agnostic autocompounder, which achieves maximum yield on pools across IBC. This leverages Abstract’s DEX and Staking adapters and scales to any pair on any dex on any chain.

Architecture of FortyTwo Money’s autocompounder, a chain-agnostic, dex-agnostic, pair-agnostic yield maximizer built on Abstract.

Abstract makes developing single- and multi-chain applications easy. Developers should be able to focus on their business logic, and not the bulls**t. Users should be able to focus on the application, and not care the tech. Both of these ideals are realized through Abstract’s comprehensive interchain platform, all-the-while abstracting away the complexities of multi-chain development and interaction.

Additional Resources

Abstract Money Chain Abstraction

A talk by Adair Kelley at Nebular Summit 2023: When All You Have is Cosmos, Everything Looks Like a Chain

Acknowledgementns

We wish to give thanks to the open-source community and the many teams that we’ve worked with in improving the Abstract SDK to make the development experience as amazing as possible, including (but not limited to):

Abstract Changelog

Get in touch!

Follow Us on Twitter

--

--