# Use Case

## Open Cohort

The Merkle Tree in OpenCohort serves as an efficient method for proving and ensuring data integrity, supporting a variety of data validation. OpenCohort extends the existing Merkle data, enabling it to be widely utilized not only for address validation, but also by a community of partners with unique identities and builders looking to enforce fine-grained incentives.

***

### On-Chain Use Cases

Merkle Tree proofs are widely used across blockchain protocols, including leading dApps like Uniswap, to verify on-chain data safely and efficiently.

1. **Proof of Membership and Points**\
   Merkle Trees are useful for verifying that a specific user is included in a data set, making it easy to confirm membership without complex calculations.
   * **Token Airdrops**
     * Merkle Trees are used to validate whether a specific user is eligible for a token airdrop. If the airdrop recipient list is structured as a Merkle Tree, users can submit a proof (Merkle Proof) for their address to claim the airdrop.
     * OpenCohort supports proving eligibility based on various identity types, not just addresses.<br>
   * **Proof of Voting Rights and Other Entitlements**
     * Merkle Proofs can validate that a user’s address is part of a list with specific rights, such as voting rights. This allows voters to confirm that their address is in the authorized voter list, ensuring the integrity of on-chain voting systems. This is similar to the "proof of eligibility" in off-chain environments, as discussed below.<br>
   * **Points Systems**
     * For projects or services that manage on-chain points based on user activity, Merkle Proofs can be used to offer additional incentives. Users can easily confirm and utilize points managed on-chain, making the system applicable across various contexts.
     * This system is similar to oracles, with the distinction that points are managed by a central entity.<br>
2. **Oracle Data Validation**\
   Merkle Trees can validate external data provided by oracles.
   * By converting the data provided by Oracle into a Merkle Tree structure, it is possible to guarantee the integrity of each data item and prove that the data has not been changed on the blockchain.
   * Storing large-scale data from oracles directly on-chain can be costly and inefficient. OpenCohort allows historical use of Rollup and proof methods using representative values (RootHash), enabling efficient on-chain use of diverse data, including past data.

***

### Off-Chain Use Cases

OpenCohort can also be applied in off-chain environments for efficient data validation.

1. **Proof of of Eligibility**\
   The OpenCohort protocol securely manages identity data mapped to the user's blockchain addresses.
   * Users can utilize OpenCohort to prove various qualifications in off-chain services and, in some cases, earn additional incentives.<br>
2. **Transaction History Verification**\
   OpenCohort allows verification of specific users’ transaction histories.
   * Even as part of large data sets, transaction histories can be validated with Merkle Proofs without storing the entire data on-chain.
   * OpenCohort enables validation of off-chain data, allowing specific transaction histories to be proven in off-chain environments using Merkle Proofs.<br>
3. **Data Integrity Verification**
   * OpenCohort can verify that data has not been tampered with. While a typical Merkle Tree system only uses RootHash, OpenCohort can prove the integrity of on-chain data, including signatures on rollup data, even in untrusted environments (Trustless).
   * Participants can create Merkle Trees for different datasets, such as membership information or files, and use Merkle Proof to verify with the rolled-up data that the data has not been tampered with.

***

## Named Wallet

The Named Wallet system enables influencers, gamers, or other high-profile individuals to have a virtual wallet deployed on the blockchain. Instead of the traditional method of using a personal EVM address from the start, this system allows for the creation of a **virtual address** linked to the individual, and a contract-based wallet is deployed on the blockchain. Later, when the real person (or their representative) activates the wallet, they can claim ownership by transferring the wallet's control to their **actual EVM address**. This system provides flexibility, security, and ease of use for public figures while maintaining control until the activation phase.

### **Primary Use Case: Virtual Address Deployment, Management, and Ownership Transfer** <a href="#primary-use-case-virtual-address-deployment-management-and-ownership-transfer" id="primary-use-case-virtual-address-deployment-management-and-ownership-transfer"></a>

1. **Deployment of Wallet Contract with Virtual Address**
   * **Goal**: To deploy a contract-based wallet that is initially associated with a **virtual address** instead of an actual EVM address.
   * **Process**:
     * A **virtual address** is assigned to a specific user (e.g., an influencer, gamer, or any public figure).
     * Using this **virtual address**, a wallet contract is deployed by the **Signer** (via `deployWallet`), creating a contract that behaves like a personal wallet but is controlled by the **Signer** until activation.
     * This contract-based wallet can receive assets, hold tokens, and interact with other contracts, just like a typical wallet.
2. **Wallet Management by Signer**
   * **Goal**: Allow the **Signer** to configure, update, and manage the wallet contract before it is activated by the real user.
   * **Process**:
     * The **Signer** has administrative control over the wallet contract until the real user activates it.
     * **Signer** can modify wallet settings (e.g., tax rates, wallet information, add/remove properties) using functions like `changeTaxRate`, `changeInfo`, `addPropertyBatch`, and `removeProperty`.
     * **Signer** is also authorized to transfer funds or tokens to the wallet contract using `transferTo` or `transferTokenTo`.
3. **Ownership Transfer to Real EVM Address**
   * **Goal**: Allow the real user (e.g., influencer) to take full control of the wallet by transferring ownership from the **virtual address** to their **actual EVM address**.
   * **Process**:
     * Once the **Signer** has deployed the wallet and configured it, the real user (e.g., the influencer) can activate the wallet by signing a message that proves they are the legitimate owner of the **virtual address**.
     * The signature is verified via the `getDataHash` function, and the ownership is transferred to the user's actual EVM address via the `activateWallet` function.
     * After activation, the wallet contract is fully controlled by the real user and can be used for regular blockchain transactions (sending tokens, interacting with smart contracts, etc.).

### **Roles and Permissions** <a href="#roles-and-permissions" id="roles-and-permissions"></a>

1. **Signer Role**:
   * The **Signer** is responsible for deploying and managing wallet contracts. They can modify settings, transfer assets, and configure the wallet until the real user activates the wallet.
   * The **Signer** holds control over the contract during the setup phase, ensuring that the wallet is properly configured before it is transferred to the real user.
2. **Owner (Real User)**:
   * Once the wallet is activated, the real user (e.g., influencer or gamer) assumes control of the wallet.
   * The user’s **EVM address** becomes the official owner, allowing them to manage the wallet, send tokens, and interact with decentralized applications.

### **Example Use Cases for Named Wallet** <a href="#example-use-cases-for-named-wallet" id="example-use-cases-for-named-wallet"></a>

1. **Influencer or Gamer Wallets**:
   * A **Signer** deploys a wallet contract for a popular gamer or influencer using a **virtual address**.
   * The **Signer** configures the wallet and transfers tokens (e.g., donations or in-game currency) to the virtual wallet.
   * Later, the gamer or influencer activates the wallet by transferring ownership to their **real EVM address**, gaining full control.
2. **Corporate Wallets for Brands**:
   * A corporation can deploy a wallet for their brand or product, associated with a **virtual address**.
   * The **Signer** can manage the wallet, adding properties, transferring tokens, and making updates.
   * The corporation’s representative (e.g., legal team) activates the wallet and takes full control by transferring ownership to the **company’s EVM address**.
3. **Charity or Crowdfunding Campaigns**:
   * A charity or crowdfunding campaign can deploy a wallet for their cause using a **virtual address**.
   * The **Signer** manages donations and token transfers to the wallet.
   * Once the charity is ready to take control, they activate the wallet by transferring ownership to the charity’s official **EVM address**.
