Cómo construí una Airdrop Central de múltiples tokens para distribuir tokens ERC20

De vez en cuando, mientras examino las preguntas en Ethereum Stack Exchange, el sitio al que acudir para las preguntas relacionadas con el desarrollo de Solidity y, para mí, el lugar al que acudir para contribuir a la comunidad de desarrolladores, veo la siguiente pregunta:

“Cómo hacer un lanzamiento desde el aire de mis tokens”.

En el contexto de una campaña de venta de tokens, un Airdrop se refiere al envío de tokens a varias cuentas de forma gratuita. Esta es una tendencia que se ha vuelto popular recientemente para promover las próximas ICO / Token Crowdsales.

Algunos de estos lanzamientos aéreos se realizan como una campaña basada en tiempo y / o volumen, en la que se le dice a las personas que si poseen una cierta cantidad de tokens para alguna fecha, recibirán más tokens.

Algunos otros lanzamientos aéreos incluso se realizan de manera no solicitada. Los equipos solo enviarán tokens a cuentas aleatorias de una lista. Si estaba en esa lista y comprueba su saldo para ese token, los verá.

También hay algunos sitios que permiten a los usuarios suscribirse para saber cómo participar voluntariamente en estos lanzamientos aéreos. Por lo general, le pedirán que se suscriba a alguna lista de correo o le darán enlaces de referencia para participar en las ventas de tokens.

Cómo se realizan normalmente los envíos aéreos de tokens

Hay algunas formas en que los equipos manejan estos lanzamientos aéreos de tokens.

Todavía no he visto una solución que permita a las personas simplemente registrarse y luego recibir los tokens enviados por varios equipos.

Token Airdrop Central

En este artículo, describiré cómo construí un contrato inteligente que funciona como un elemento central para los lanzamientos aéreos. Básicamente, las personas pueden suscribirse a esta central de lanzamiento aéreo y, a partir de ese momento, cuando un equipo realiza un lanzamiento aéreo a la central, los usuarios suscritos pueden retirar su parte del lanzamiento aéreo de forma gratuita.

Por otro lado, los equipos que realizan lanzamientos desde el aire pueden simplemente enviar los tokens a esta central, que se distribuirá de manera uniforme a todos los usuarios suscritos en ese momento.
Airdrop Central se queda con el 2% de esos tokens como tarifa por el servicio. .

Es importante tener en cuenta que este Airdrop Central permite que cualquier equipo deje caer sus tokens para que la comunidad existente se retire. La lista de usuarios se comparte entre todos los equipos. Por lo tanto, cuantas más personas llegue a cada equipo individualmente, más personas se beneficiarán de los tokens lanzados desde el aire por otros equipos.

Como nota al margen, vale la pena mencionar que esta solución no está completamente descentralizada, ya que depende de un propietario para revisar y aprobar los envíos. Este mecanismo está implementado para evitar posibles problemas de seguridad relacionados con tener que confiar en contratos de terceros desconocidos (tokens ERC20 enviados por equipos). No podía permitir que cualquiera enviara una dirección de contrato, que podría contener código malicioso en lugar del típico token ERC20.

Airdrop Central aún no se ha implementado en ninguna red, ya que primero me gustaría probarlo a fondo. Mientras tanto, puede verificar el código (e incluso enviar errores o sugerencias) en mi Repositorio de Github:

Una vez que implemente Airdrop Central en la red principal, aceptaré / rechazaré los envíos. Abra un problema en el repositorio de Github de Airdrop Central con la etiqueta “Envío” y el siguiente título: [Símbolo del token] – [Nombre del token] – [Dirección del token] – [Dirección del propietario del token] . El token ya debería estar implementado en la red principal para que se pueda revisar el contrato inteligente. Un administrador le notificará cuando se apruebe y le dejará un mensaje sobre el problema de Github que creó.

Cómo funciona

Para los usuarios finales: los usuarios se registran en Token Central. Luego, cuando un equipo lanza tokens por aire, los usuarios pueden verificar cuántos de ellos se les otorgaron (en función de cuántos se enviaron y cuántos usuarios se registraron en la central en ese momento) y retirarlos. Todo lo que necesitan saber para retirar su parte de los tokens es la dirección del contrato del token.

Para los equipos: las presentaciones primero deben aprobarse. Dado que el contrato de Airdrop Central interactúa con contratos de terceros desconocidos y potencialmente dañinos, debe ser aprobado por el propietario de la central o los administradores designados antes de que se acepte un token. Los administradores básicamente deberán verificar que la dirección enviada corresponda a un contrato de token compatible con ERC20 y que no contenga ningún código malicioso.

Una vez que el equipo y el token están aprobados, pueden realizar tantos lanzamientos aéreos como quieran utilizando la misma cuenta y dirección de token. El propietario de la central se queda con el 2% de los tokens enviados como tarifa por el uso del servicio, y el resto se almacena dentro del contrato, disponible para que los usuarios los retiren. Cada lanzamiento aéreo tiene una fecha de vencimiento. Los tokens no retirados por los usuarios para esa fecha pueden ser recuperados por el equipo.

Uso del contrato de Airdrop Central

Para usuarios finales:

Para equipos:

Con respecto a la distribución de tokens:

Creación de Airdrop Central

El código completo y comentado se puede encontrar en mi Repositorio de Github.
Lo que sigue es una explicación detallada de las partes más importantes del código.

Gestión de envíos

Como se mencionó anteriormente, necesitamos implementar algunos mecanismos para evitar que cualquiera pueda enviar un contrato. Dado que el contrato de Airdrop Central interactúa con contratos de tokens de terceros que podrían contener código dañino, primero debemos revisar cada envío para evitar problemas.

Para hacer esto, recibiremos envíos fuera de la cadena, los revisaremos manualmente y luego, si todo está bien, los aprobaremos.

En cualquier momento, si detectamos un problema con un contrato enviado o una cuenta que envía contratos maliciosos, podemos revocar el acceso a los tokens asociados y ponerlos en una lista negra para evitar nuevos envíos. Hacer esto también hace que los tokens sean inaccesibles para retiro.

Esto podría ser controvertido, ya que permite al propietario / administradores congelar los tokens dentro del contrato a su voluntad. Pero, por otro lado, es el único mecanismo que tenemos para combatir el código malicioso que podría haber pasado desapercibido cuando se aprobó por primera vez el contrato del token.

Si, por alguna razón, incluimos en la lista negra el token / cuenta equivocado o, después de todo, eran buenos ciudadanos, el propietario puede eliminarlos de la lista negra. Esto también vuelve a habilitar la retirada de los tokens congelados.

Proceso de registro de usuarios

Una vez que se ha implementado el contrato de Airdrop Central, los usuarios pueden comenzar a registrarse. Hay dos formas de registrar usuarios:

Pueden hacerlo ellos mismos llamando a la siguiente función:

O un administrador puede registrarlos llamando a signupUsersManually (). Tenga en cuenta que, a diferencia de un airdrop “normal”, los equipos no pueden agregar usuarios manualmente ya que queremos evitar “spamming ”Y agregar usuarios sin su consentimiento.

Además, los usuarios pueden eliminarse de Airdrop Central para dejar de recibir tokens. Hacerlo también les impide poder retirar tokens pendientes. De hecho, los perderán, por lo que deberían pensarlo dos veces antes de hacerlo.

Token Airdrop

Una vez que el administrador de Airdrop Central aprueba sus tokens de un equipo, pueden realizar cualquier cantidad de airdrops para ese token.

Primero, deben otorgar una asignación de los tokens que desean distribuir al contrato de Airdrop Central. Para hacer eso, necesitan llamar a la función de aprobación () en el token, especificando cuántos tokens quieren permitir que Airdrop Central use.

Una vez que se solucione, pueden realizar el lanzamiento aéreo llamando a la siguiente función:

La función airdropTokens () almacena los tokens que se le permitió usar al contrato en su balance interno. El 2% de ellos se transfiere al titular del contrato y el resto se transfiere al contrato. Luego puede distribuirlo entre los usuarios que estaban suscritos hasta ese momento.

El equipo que realizó el airdrop también puede recuperar los tokens que permanecen sin reclamar después de la fecha de vencimiento de cada airdrop llamando a esta función:

Retiro de token

Lo último que debemos repasar es el proceso mediante el cual los usuarios retiran los tokens que se les enviaron. Para hacer eso, necesitan llamar a la función retiroTokens (dirección _tokenAddress) . La función revisará todos los airdrops activos (aún no vencidos o congelados) del token especificado y los transferirá.

Pasos siguientes

Una de las muchas cosas que me gustaría hacer a continuación es crear una interfaz web (una dapp) que permita a las personas ver los lanzamientos aéreos más recientes y futuros y suscribirse a ellos.

Si eres parte de un equipo con un token ERC20 activo, o estás planeando lanzar uno y te gustaría usar Airdrop Central para hacer un airdrop, escríbeme. De lo contrario, agradecemos enormemente cualquier comentario o sugerencia.

Espero que haya disfrutado leyendo este artículo tanto como yo disfruté escribiéndolo. Actualmente estoy tomando trabajos de consultoría relacionados con el desarrollo de contratos inteligentes. Si planea recaudar fondos a través de una ICO o crear un producto basado en Blockchain, no dude en ponerse en contacto conmigo.