[Proposal] Escrow Module on Cosmos Hub: DreddSecure


We are excited to present a proposal for a new module to be added to the Cosmos Hub: an escrow service for all types of tokens. The Escrow Module aims to deliver a secure and reliable solution for facilitating transactions between two parties within the Cosmos ecosystem while effectively addressing the risks associated with fraud and disputes. With the ability for users to define specific release conditions, this Escrow Module ensures that assets are securely exchanged only when predetermined criteria are met.

By integrating this module, we aim to empower users to engage in secure and transparent transactions within the Cosmos network while reinforcing the Cosmos Hub’s position as a hub of interoperability and innovation.

DreddSecure: This Escrow module was developed by the team at ProductShop, and funded by the ATOM Accelerator Grant program. If this proposal passes, the ProductShop team will assist the maintainers of the Cosmos Hub codebase with integration as needed and help solve any technical challenges that may be encountered in the process of adding the module

[Security Audit of the codebase in progress: Will update once completed]

Problem Statement

Currently, with the absence of an escrow service, users face several limitations and significant problems when it comes to making transactions:

  1. Lack of Trust: The absence of an escrow service can lead to a lack of trust between parties involved in a transaction, which can result in disputes and fraud.
  2. Inadequate Security for Transactions: Transactions may lack adequate security, which can make it easier for hackers or attackers to steal funds.
  3. Limited Payment Options: Limiting payment options make it difficult for parties to agree on a payment method that works for both of them.
  4. Insufficient Protection for Buyers or Sellers: The absence of an escrow service can leave buyers and sellers vulnerable to scams or fraud, potentially resulting in significant financial losses for them.

The Cosmos Hub, as a dynamic and growing ecosystem, requires solutions that address these concerns to ensure the continued trust and confidence of its user base.

Solution: DreddSecure (Escrow Module)

To tackle these challenges, we propose the integration of an Escrow Module into the Cosmos Hub. This module will transform the way users engage in transactions, offering trust, security, and flexibility previously unavailable within the ecosystem.

Key Features

The proposed solution for an escrow system in the Cosmos ecosystem have the following key components:

  1. Two-Party Escrow Contract: The Escrow Contract would involve two parties: the buyer and the seller. Both parties would agree on the terms of the transaction, which are built into the Escrow Contract. The contract could be instantiated by either the buyer or the seller, with both parties providing their public keys and agreeing on the terms.

    Here’s how it works:

    a) Escrow Creation: A user initiates the escrow process by providing a set of conditions that must be respected, as well as the assets to be exchanged. This information is used to create an escrow contract, which is securely stored on the blockchain. The assets offered by the initiator will be transferred to the module’s bank to be held in escrow.

    b) Fulfillment by Second User: Once the escrow contract is established, a second user has the ability to fulfill the pre-existing escrow, if he holds the requested assets in his account.

    c) Release Conditions: During the fulfillment process, the module checks if all specified conditions are met. If all conditions are satisfied, the assets asked by the initiator will be transferred from the fulfiller’s account to the initiator’s account and the escrowed initiator assets will be released and transferred to the fulfiller to complete the trade.

    d) Handling Unmet Conditions: In cases where one or more conditions are not met during fulfillment, the fulfiller’s assets, alongside the initiator’s assets, are held in escrow until the conditions are eventually met. This safeguard ensures that assets remain secure until all conditions are appropriately fulfilled, maintaining the integrity of the escrow process.

    e) Escrow Cancellation: At any point, prior to the closure of the escrow, the escrow initiator retains the option to cancel the escrow and reclaim their assets. Similarly, a fulfiller can choose to opt out from an escrow to retrieve their assets.

  2. Asset Escrow: The Escrow Module holds the digital assets in escrow and release them only when the predefined conditions are met. The assets can be any tokens accessible through the Cosmos Hub.

  3. Flexible Conditions: The Escrow Contract would support various conditions for releasing the assets, including time-based, and conditional on oracle data using a Bandchain Protocol integration. The conditions could be customized based on the parties requirements and agreed upon when creating the escrow transaction. The Escrow Contract would enforce the conditions and ensure the assets are released only when the conditions are satisfied.

  4. APIs and Integration: The Escrow Contract would expose a set of RESTful APIs for third-party applications and services to interact with the escrow module. This would enable the integration of the escrow service with other applications, such as decentralized exchanges, lending platforms, or NFT marketplaces, and extend the use cases for the escrow service.


DreddSecure’s proposal aims to introduce an Escrow Module to the Cosmos Hub, addressing the current gaps in transaction security, trust, and flexibility within the ecosystem. Developed by ProductShop and funded by the ATOM Accelerator Grant program, this module provides a robust framework for two-party contracts, offering customizable conditions for asset release. It not only elevates the security of transactions by holding assets in escrow until predetermined conditions are met, but also broadens payment options and ensures both buyer and seller protection. With features like Bandchain Protocol integration for oracle-based conditions and API support for third-party integration, this module promises to be a cornerstone in enhancing Cosmos Hub’s commitment to innovation and interoperability. Should the proposal pass, it will significantly bolster user trust and open new avenues for secure and transparent transactions within the Cosmos network.

Update Statement: Statement from DreddSecure. Context and Introduction | by Product Shop | Product Shop | Sep, 2023 | Medium


Escrow Module Github (Public Repo): GitHub - theproduct-space/dredd-secure

DreddSecure: https://www.dreddsecure.io/

ProductShop: https://www.productshop.io/


Do you consider adding milestones support? Here’s a real life example:

  • a party A expects a party B to get some development done
  • the development is split into 2 groups, half of the payment goes once half of the job is finished, and the rest once all of the job is finished

Would be useful for grants at least.

1 Like

Hey @freak12techo,

Thanks for your feedback.

Yes we’re considering this as a potential condition to add into our module for additional use cases.
Details of the implementations still need to be ironed out, whether it would be a manual milestone verification process or an automatic one via the use of external data through Oracle integration, or else.

Any suggestions will be considered and appreciated :slightly_smiling_face:

Plz no apps on the hub.

That said nothing wrong with putting it on atomic IBC or even discussing it with neutron.


Hey @jacobgadikian ,

Thanks for sharing your perspective. Just to clarify, the intention behind this proposal isn’t to add another app to the Hub. Instead, it’s about introducing an escrow feature to facilitate trustful peer-to-peer trading without relying on liquidity providers.

We just made an official statement to gather more input from the community, and we’d greatly appreciate your participation in the discussion.

Your feedback is valued, and we’re here to engage in a constructive dialogue.

Stay tuned for live open discussion

There’s a history of modules going onto the hub without sufficient testing or formal specification. At minimum x/escrow should be accompanied by a spec.