/commit

TornadoCodes

Primary LanguageTypeScriptMIT LicenseMIT

TornadoCodes

TornadoCodes: Secure, Configurable Access-Management Without the Hassle of Wallet Addresses

TornadoCodes offers a secure, address-free access-management solution that leverages commitment-based systems linked to nullifiers. Our platform is designed to address the challenges of using wallet addresses for crypto transactions, providing a flexible and customizable approach to managing access for a wide range of applications, from early access codes to subscription payments.

Overview

TornadoCodes is inspired by privacy-preserving solutions like Tornado Cash but is designed with a distinct focus on flexibility and configurability rather than privacy. By using commitment schemes linked to nullifiers, TornadoCodes enables a variety of secure, permission-based interactions on the blockchain, making it easier for developers to implement access management without the need for wallet addresses.

Features

  • Address-Free Transactions: Simplifies the user experience by eliminating the need for wallet addresses in many crypto transactions.
  • Configurable Access Management: Provides a flexible system where permissions can be customized for a wide range of use cases.
  • Modular Design: Built with Pedersen hashes, Merkle trees, and a modular architecture, allowing easy integration with existing protocols.
  • Supports Multiple Standards: Compatible with ERC20, ERC721, ERC1155, and other token standards, as well as DEFI and RWA.
  • Validation Modules: Incorporates validation modules like Worldcoin Personhood Validator and Privado ID ZKProof Validator for enhanced functionality.
  • Scalable & Efficient: Low maintenance costs with no need for large backends or databases.

Use Cases

TornadoCodes can be applied to a wide range of scenarios, including but not limited to:

  1. Early Access Codes: Grant early access to events, products, or services without requiring users to provide wallet addresses.
  2. Gift Cards: Issue digital gift cards that can be redeemed without linking to a wallet address.
  3. Airdrops: Distribute tokens or NFTs without needing the recipient's wallet address upfront.
  4. Event Tickets: Manage ticket distribution and validation for events securely and efficiently.
  5. Identification Checks: Validate user identities using various modules without compromising privacy.
  6. Bridges: Facilitate cross-chain asset transfers where the swap can be processed later when liquidity is available.
  7. Subscription Payments: Implement recurring payments without storing sensitive user data.
  8. Checks: Issue digital checks that can be cashed in later by the recipient.

How It Works

Core Components

  • Commitments and Nullifiers: TornadoCodes relies on a system of commitments linked to nullifiers. When a transaction or action is initiated, a commitment is created. Later, this commitment can be nullified (or spent) by presenting a corresponding nullifier.
  • Pedersen Hashes: Used for generating cryptographic commitments that are secure and efficient.
  • Merkle Trees: Provides a scalable way to manage large sets of commitments, enabling quick verification and validation.
  • Modular Design: TornadoCodes is built with modularity in mind, allowing for easy integration of new validation modules and other enhancements.

Example Flow

  1. Setup: A user or service generates a commitment for an action or asset.
  2. Configuration: The commitment is configured with specific permissions or rules (e.g., who can spend it, when, and under what conditions).
  3. Execution: The recipient interacts with the system, presenting the required information to nullify the commitment and execute the action (e.g., claiming a gift card, receiving an airdrop).
  4. Validation: The system validates the nullifier against the commitment, ensuring that the rules have been followed.

Installation

To get started with TornadoCodes, clone the repository and install the necessary dependencies:

git clone https://github.com/mgrabina/commit
cd commit
yarn install

Then, follow instructions in each package.

Contact x.com/mgrabina, x.com/th0rOdinson, x.com/nicolaslebovits