# AirdropERC20

El [Contrato AirdropERC20](https://dexappbuilder.dexkit.com/forms/deploy/thirdweb/AirdropERC20) de ThirdWeb simplifica la distribución de tokens ERC20 o tokens nativos (p. ej., Ether en la red principal de Ethereum) a una lista predefinida de destinatarios. Este contrato es especialmente útil cuando los destinatarios no necesitan reclamar individualmente su airdrop; en su lugar, reciben los tokens automáticamente mediante una transferencia.

## **Características clave**

1. **Airdrop de tokens:** Facilita el airdrop sin complicaciones de tokens ERC20 o tokens nativos a una lista especificada de direcciones receptoras.
2. **Lista de destinatarios:** Utiliza un array de objetos que contiene direcciones de destinatarios y cantidades de tokens, simplificando la configuración de los parámetros del airdrop.

## **Casos de uso y ejemplos**

1. **Campañas de airdrop de tokens:**
   * **Caso de uso:** Distribuye tokens promocionales automáticamente a una audiencia objetivo.
   * **Ejemplo:** Recompensar a usuarios leales o miembros de la comunidad con tokens sin requerir reclamaciones manuales.
2. **Recompensas comunitarias:**
   * **Caso de uso:** Asignar tokens a miembros de la comunidad en función de sus contribuciones.
   * **Ejemplo:** Reconocer e incentivar la participación de la comunidad con recompensas en tokens.
3. **Incentivos de tokens para usuarios:**
   * **Caso de uso:** Fomentar el uso de la plataforma mediante airdrops de tokens a los usuarios.
   * **Ejemplo:** Aumentar la adopción de usuarios proporcionando incentivos a través de distribuciones de tokens.
4. **Sorteos en eventos:**
   * **Caso de uso:** Realizar sorteos durante eventos mediante airdrops de tokens a los participantes.
   * **Ejemplo:** Involucrar a los asistentes y generar entusiasmo mediante sorteos de tokens.
5. **Recompensas de staking automatizadas:**
   * **Caso de uso:** Distribuir recompensas de staking automáticamente a los poseedores de tokens.
   * **Ejemplo:** Implementar un sistema de recompensas de staking sin intervención manual para los poseedores de tokens.
6. **Subvenciones de tokens para desarrollo:**
   * **Caso de uso:** Proporcionar subvenciones de desarrollo mediante airdrops de tokens a direcciones seleccionadas.
   * **Ejemplo:** Apoyar a desarrolladores y proyectos mediante subvenciones en tokens para fomentar el crecimiento del ecosistema.
7. **Asignación de tokens para proveedores de liquidez:**
   * **Caso de uso:** Recompensar a los proveedores de liquidez mediante airdrops de tokens en función de su contribución.
   * **Ejemplo:** Incentivar la provisión de liquidez en intercambios descentralizados con recompensas en tokens.
8. **Distribuciones de tokens a empleados:**
   * **Caso de uso:** Facilitar la distribución de tokens a empleados como parte de la compensación.
   * **Ejemplo:** Integrar recompensas en tokens en las estructuras de compensación de los empleados.
9. **Incentivos de votación tokenizados:**
   * **Caso de uso:** Fomentar la participación en eventos de votación tokenizada mediante incentivos por airdrop.
   * **Ejemplo:** Aumentar la participación de votantes recompensando a los participantes con tokens.
10. **Transacciones sin gas con forwarders de confianza:**
    * **Caso de uso:** Habilitar transacciones sin gas usando ERC-2771 y forwarders de confianza.
    * **Ejemplo:** Facilitar transacciones sin requerir que los usuarios posean ETH para las tarifas de gas.

## **Desplegando este contrato**

{% embed url="<https://dexappbuilder.dexkit.com/forms/deploy/thirdweb/AirdropERC20>" %}
Enlace directo
{% endembed %}

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2Fvb65cTNkw56A8cYkq2lb%2Fimage.png?alt=media&#x26;token=8eaed960-737e-4051-a1fa-7b281060ad1e" alt=""><figcaption></figcaption></figure>

Durante el despliegue, se requieren los siguientes parámetros:

1. **Metadatos del contrato:**
   * **Nombre:** \[Introduce el nombre del contrato]
   * **Símbolo:** \[Introduce el símbolo del contrato]
   * **Descripción:** \[Introduce la descripción del contrato]
   * **Imagen:** \[Sube el archivo de imagen]

## Uso de este contrato

Una vez que el contrato se haya desplegado correctamente, puedes gestionar su comportamiento a través de una interfaz fácil de usar. Para ello, haz clic en el **"Gestionar contrato"** botón del modal de confirmación después del despliegue. Esto te llevará al panel del contrato con tres pestañas principales:

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FQbimIOgwupN2u8OEQTOd%2Fimage.png?alt=media&#x26;token=d395abce-d137-4ec2-9565-c562a65f7412" alt=""><figcaption><p>Si tu contrato se desplegó correctamente verás este modal.</p></figcaption></figure>

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FvFrxxTG966vx4uFCCJue%2Fimage.png?alt=media&#x26;token=59aee766-3441-4e80-a728-349760b95ced" alt=""><figcaption><p>Sección administrativa de AirdropERC20</p></figcaption></figure>

### Pestaña Airdrop

Esta es la función principal del contrato: distribuir tokens a los destinatarios.

* **Seleccionar token**: Haz clic en **SELECCIONAR** para elegir el token ERC20 o el token nativo (p. ej., tBNB en testnet) para el airdrop.
* **Total para Airdrop**: Muestra la cantidad total de tokens establecida para la distribución.
* **Total de destinatarios**: Muestra el número de direcciones de billetera agregadas para recibir tokens.
* **Gestión de destinatarios**:
  * Haz clic **SELECCIONAR** para subir o introducir la lista de direcciones de destinatarios y las cantidades de tokens correspondientes.
  * Puedes manualmente **AGREGAR REGISTRO**, o usar la **IMPORTAR** opción para cargar en bloque destinatarios mediante CSV.
  * Usa **EXPORTAR** para descargar la lista actual de entradas de airdrop.
* **Confirmar**: Después de finalizar la lista de destinatarios y el token, haz clic en **CONFIRMAR** para iniciar la transacción del airdrop. El botón permanecerá deshabilitado hasta que se proporcionen todos los datos requeridos.

{% hint style="warning" %}
Nota: El airdrop real se deducirá del saldo de tokens del contrato. Asegúrate de que el contrato tenga suficientes tokens antes de confirmar.
{% endhint %}

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FMYIykLBzMvJjm7mlDU9J%2Fimage.png?alt=media&#x26;token=841e087b-6deb-4a38-aace-a44fe71fe9a4" alt=""><figcaption></figcaption></figure>

### Pestaña de metadatos

Esta sección te permite modificar la identidad pública de tu contrato de airdrop.

* **Nombre**: Aquí puedes editar el nombre del contrato.
* **Descripción**: Útil para describir el propósito o contexto del airdrop.
* **Imagen**: Actualiza o reemplaza la imagen asociada a este contrato.

Haz clic **ACTUALIZAR** para guardar los cambios. Estas actualizaciones de metadatos se almacenan on-chain y pueden requerir una transacción según la implementación.

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2F9ptkTVR3JnhEid0dWAUs%2Fimage.png?alt=media&#x26;token=1ceba9a5-d9ac-4d68-978f-94fe8e397893" alt=""><figcaption></figcaption></figure>

### Pestaña de administración

Esta sección define los permisos basados en roles disponibles dentro del contrato. Los roles determinan quién puede realizar acciones administrativas u operativas específicas.

* **Administrador**: Puede otorgar/revocar roles y modificar las configuraciones del contrato.
* **Transferir**: Puede transferir tokens usando el contrato.
* **Minteador/Creador**: Puede acuñar o crear nuevos tokens (si aplica).
* Otros roles disponibles incluyen:
  * **Pausador:** Permite que la dirección asignada pause o reanude funciones del contrato (si está implementado). Útil para paradas de emergencia o mantenimiento del contrato.
  * **Lista:** Otorga permiso para listar tokens o activos gestionados por el contrato; comúnmente usado en contextos de mercado o registro.
  * **Administrador de activos:** Otorga permiso para listar tokens o activos gestionados por el contrato; comúnmente usado en contextos de mercado o registro.
  * **Desenvolver:** Permite a la dirección desenvolver tokens o activos envueltos (p. ej., convertir tokens envueltos de nuevo a su forma nativa).
  * **Fábrica:** Habilita la creación de nuevas instancias de contrato o clones si el contrato actual actúa como una fábrica.
  * **Firmante:** Permite que la dirección firme operaciones en nombre de usuarios o sistemas. A menudo se usa con meta-transacciones o lógica off-chain.
  * **Metadatos:** Otorga permiso para actualizar los metadatos del contrato, incluyendo nombre, imagen y descripción.
  * **Revocar:** Este rol puede revocar roles o permisos de otras direcciones.
  * **Migración:** Se usa durante actualizaciones o migraciones del sistema. La dirección puede gestionar la migración de datos o los procesos de transición de contrato.

Para asignar un rol, pega la dirección de la billetera y haz clic en **AGREGAR**. Luego haz clic en **ACTUALIZAR** para confirmar los cambios on-chain.

## Realizar un Airdrop usando un archivo CSV

Para agilizar las distribuciones de tokens a gran escala, la `AirdropERC20` interfaz te permite subir un archivo CSV que contenga las direcciones de los destinatarios y sus correspondientes cantidades de tokens.

### Guía paso a paso

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FcRA1BlHOOVJoqSG1xXUg%2Fimage.png?alt=media&#x26;token=145d9dfa-a463-4566-8928-9e3f8b2f0eb1" alt=""><figcaption></figcaption></figure>

1. **Abre el panel de Airdrop**\
   Desde el panel del contrato, navega a la pestaña **Airdrop** y haz clic en el **SELECCIONAR** botón en la sección “Total de destinatarios”. Esto abre el gestor de destinatarios.

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FSykAQgbhRZwXdXPpm5gM%2Fimage.png?alt=media&#x26;token=e90631ff-4917-453d-b306-9c6d3411dbee" alt=""><figcaption></figcaption></figure>

2. **Descarga la plantilla CSV**

* Haz clic en el **EXPORTAR** botón (esquina superior derecha del modal).
* Esto descarga un archivo CSV de muestra con el formato correcto. Puedes usarlo como plantilla.

✅ **Consejo:** El archivo contendrá dos columnas:

```
cssCopyEditaddress,quantity
```

3. **Prepara tu archivo CSV**\
   Abre el archivo en cualquier editor de hojas de cálculo (p. ej., Excel, Google Sheets) y complétalo con las direcciones de los destinatarios y la cantidad de tokens que debe recibir cada uno.

Ejemplo:

```
CopyEdit0x1234...abcd, 100
0xabcd...5678, 250
```

<figure><img src="https://3072554521-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FhdcyI7gVKrbaQ9rziE22%2Fimage.png?alt=media&#x26;token=45ac54fb-f954-451e-8860-a4ae995b077e" alt=""><figcaption></figcaption></figure>

4. **Importa el archivo CSV**

* Vuelve al gestor de destinatarios y haz clic en **IMPORTAR**.
* Sube tu archivo CSV completado. Si el archivo está correctamente formateado, verás todas las filas mostradas bajo las **Dirección** y **Cantidad** columnas.

5. **Revisar y confirmar**

* Verifica que la cantidad total y el número de destinatarios coincidan con tus expectativas.
* Haz clic **CONFIRMAR** para finalizar la configuración del airdrop.
* Es posible que se te solicite firmar una transacción para autorizar la transferencia.

{% hint style="warning" %}
**Importante:** Asegúrate de que el contrato tenga saldo suficiente de tokens para cubrir todo el airdrop. También verifica que la dirección de la billetera seleccionada tenga permisos para realizar el airdrop.
{% endhint %}

## Notas sobre el uso en testnet

Estas imágenes muestran el uso en **BNB Smart Chain Testnet**. Si estás probando, asegúrate de:

* Tu billetera esté conectada a la red correcta.
* Tengas tBNB de testnet para las tarifas de gas.
* Concedas los permisos adecuados si los contratos de tokens los requieren.
