From 9a17002706151a8c4ca32a9566a1464a9be8a106 Mon Sep 17 00:00:00 2001 From: Andrew Dmytrenko <68740472+YouStillAlive@users.noreply.github.com> Date: Tue, 17 Dec 2024 12:43:30 +0200 Subject: [PATCH] update README (#54) --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index fe1276a..7183dd0 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ - [Installation](#installation) - [Overview](#overview) +- [Use case](#use-case) - [UML](#contracts-diagram) - [Create Dispenser pool](#create-dispenser-pool) - [Dispense Lock](#dispense-lock) @@ -62,6 +63,25 @@ The `DispenserProvider` contract manages token dispensing in collaboration with - **Integration with Multiple Providers:** Works with other provider contracts like LockDealProvider, DealProvider, and TimedDealProvider. - **Events and Notifications:** Emits events for tracking token distributions and errors. +## Use case +Every **IDO** goes through three stages: + +1. **Registration.** +2. **Participation.** +3. **Token Distribution.** + +**Dispenser Provider** is responsible for the third stage: **Token Distribution**. + +Currently, the **Registration** stage is managed by the **Backend**, which sends a verification signature for registration to the **IDO**. When users decide to participate and have already registered, they need to purchase **IDO** tokens during the **Participation** stage. At this point, the [**InvestProvider**](https://github.com/The-Poolz/LockDealNFT.InvestProvider) contract takes action. + +After the **Participation** stage, the **project owner** receives a list of participants along with their investment information. Based on this data, the total supply of required **IDO** tokens is calculated. The **project owner** then creates a new **dispenser pool** with this total amount, which will be used for distribution. + +Every user who has registered and participated in the **IDO** can obtain a signature from the **Backend**, containing data related to their token distribution. The signature is valid for a limited time, can only be used once, and users cannot request multiple signatures. When the **User** receives the signature, they can claim **IDO** tokens using it. As a result, after the `dispenseLock` call, the receiver will receive locked tokens based on the **IDO** conditions. + +![DispenserProvider_-_use_case](https://github.com/user-attachments/assets/0cbaef4f-cb9f-4b50-84cc-06cc90e9c987) + +_This picture illustrates the relationships between actors and processes._ + ## Contracts diagram ![classDiagram](https://github.com/user-attachments/assets/3b1d1012-7784-4d5d-b6f1-221cfa88868f)