Cómo implementar una ICO justa y segura

Una mirada técnica al funcionamiento interno de nuestra propia campaña de crowdfunding IGNIS que puede duplicar para su propia ICO basada en NXT por una fracción del costo de otras soluciones

El desarrollo de contratos inteligentes para un token Ethereum ERC20 es costoso. Los costos típicos incluyen alrededor de $ 20K para el desarrollo de los contratos inteligentes y otros $ 50K para la revisión de seguridad. Suena escandaloso inicialmente, pero creo que esto es comprensible, después de que cada token Ethereum se desarrolle desde cero según las especificaciones del equipo de ICO y con tantos problemas de seguridad con contratos inteligentes, seguramente los revisores de seguridad tienen una gran demanda y pueden cobrar como tanto como les guste.

En un artículo anterior, expliqué cómo NXT se puede usar como una alternativa más barata y segura para la plataforma ICO. Sin embargo, no especifiqué los detalles exactos y recientemente recibí tantas preguntas que decidí que esto necesita más aclaraciones.

Suponiendo que no esté familiarizado con NXT, su mejor enfoque es simplemente seguir la estructura de nuestro propio IGNIS ICO al pie de la letra, esto le proporcionará una solución de financiación colectiva segura y funcional para costos de I + D mucho más asequibles.

El resto del artículo es un poco técnico. Debe estar familiarizado con NXT y saber cómo ejecutar un nodo y comprender las API, no hay forma de evitarlo. No explicaré esto en este artículo. Te sugiero que comiences desde nuestro nxtwiki. Les puedo asegurar que es tan simple como cualquier plataforma de blockchain y probablemente mucho más simple.

Moneda controlable

El bloque de construcción básico del token JLRDA utilizado por IGNIS ICO era un token de tipo Moneda controlable. Para empezar, me gustaría que leyeras la documentación oficial del sistema monetario, sí, sé que esto es largo y detallado, pero quieres recaudar millones y no quieres pagar a los chicos de ETH o ser hackeado, ¿verdad? Así que lee la maldita cosa por favor.

Después de leer la documentación, puedo decirle brevemente que una Moneda controlable solo se puede transferir hacia y desde la cuenta emisora, y si también es intercambiable, solo la cuenta emisora ​​puede publicar ofertas. Estas propiedades lo convierten en una excelente herramienta para el crowdfunding. La restricción en las transferencias asegura que los compradores no puedan mover los tokens y la restricción en la emisión de ofertas de venta asegura que tenga control sobre los niveles de precios para que nadie más pueda proporcionar un mejor precio mientras sigue su calendario de ICO.

Para ver qué propiedades de moneda utilizamos para IGNIS ICO, vea la moneda JLRDA en la red principal NXT y siempre emita su moneda con 4 posiciones decimales.

Página de ICO

Las monedas se pueden negociar utilizando la interfaz de cabina de intercambio de billetera NXT existente. Sin embargo, esta interfaz es demasiado compleja para el comprador casual de ICO, por lo tanto, diseñamos una página especial para ICO que solo admite una única función para comprar la moneda. Deberá implementar una página similar y agregarla como un complemento de billetera o simplemente publicarla en su sitio web de ICO. No cree esta página desde cero, reutilice la página existente que creamos para nuestra propia ICO. Descargue e instale NXT 1.11.9 (no use una versión posterior ya que se eliminó parte de este código), luego mire el archivo ignis.html (./html/www/html/pages/ignis.html) y la funcionalidad que lo admite en nrs.monetarysystem.js a partir de la línea 1600 (./html/www/js/nrs.monetarysystem.js). Basado en el código ignis.html, desarrolle su propia página ICO ya sea como una versión modificada de NXT (nuestro código de cliente se publica bajo la licencia MIT para que pueda hacerlo) o como un complemento de billetera que permitirá que otros nodos NXT respaldará su ICO pero agregará cierta complejidad a su proceso de desarrollo. Puede simplificar aún más la página ICO a su gusto. Por ejemplo, no tiene que incluir soporte para los intercambios Shapeshift y Changelly en esta página como lo hicimos nosotros.

Ofertas de intercambio

Para cada ronda de ICO, emita una única oferta de intercambio para su moneda de acuerdo con su calendario de ICO. Use la interfaz de billetera NXT para esto. Solo necesita ofrecer la moneda en venta, especifique 0 valores en el lado de compra. Mire, por ejemplo, la transacción 12339997342493732668 en NXT Mainnet para ver una de las ofertas que emitimos para vender 1 JLRDA por 0.76 NXT. Asegúrese de que la altura de vencimiento se alinee con el horario de ICO. Recuerde que en NXT se genera un bloque cada minuto en promedio.

Consideraciones de Seguridad

Al vender sus tokens utilizando una oferta de intercambio, la recompensa se recibe en NXT, por lo tanto, la cuenta que emitió la moneda acumulará una gran cantidad de NXT, sin embargo, no debe colocar esta cuenta bajo el control de la cuenta porque esto interferirá con la operación de las transacciones programadas ( explicado a continuación). En cambio, prepare otra cuenta asegurada por el control de la cuenta y mueva los fondos recaudados en ICO regularmente a esta cuenta.

Al elegir un nombre para tu token. Haga que este nombre de token sea lo más simple posible para que sea más difícil para los estafadores confundir a los usuarios para que compren sus propios tokens falsos. En retrospectiva, el nombre elegido para nuestro propio token JLRDA fue problemático ya que algunos usuarios fueron estafados para comprar un token llamado JRLDA, por ejemplo. Así que asegúrese de que su nombre de token sea simple e incluso considere pagar la tarifa adicional por una moneda de 4 letras o 3 letras.

Aleatorización y transacciones programadas

En caso de que su ICO sea popular, habrá una gran demanda cuando emita los primeros lotes a la venta. Siempre existe el riesgo de que un solo comprador compre el lote completo al igualar su oferta de venta no confirmada antes de que los usuarios puedan ver la oferta de venta en la interfaz de usuario.

Para mitigar este riesgo y asegurarse de que todos tengan una oportunidad justa de comprar su token, debe permitir que sus usuarios programen sus solicitudes de compra antes de ofrecer la moneda para la venta utilizando la función de transacciones programadas. Esta parte es opcional, no tiene que admitirla en su página ICO, pero si no lo hace, le da a los expertos en tecnología una ventaja injusta sobre todos los demás compradores.

Para lograr esto, su código debe cargar las ofertas de intercambio disponibles cuando su usuario envíe la transacción de compra. Si no existe ninguno, debe agregar datos programados = verdaderos al botón de compra, por ejemplo $ (“# buy_ignis_button”). Data (“programados”, verdadero); Como resultado, cuando un usuario envía una transacción de compra, se almacenará en la memoria del nodo y aún no se enviará a la cadena de bloques.

Para ver cómo funcionó esto para IGNIS ICO, revise la función processOffers () en nrs.monetarysystem.js de NXT 1.11.9 e imite esta funcionalidad. Esto enviará una transacción programada que permanecerá en la memoria del nodo. Esta transacción programada solo se transmitirá a la cadena de bloques en el momento en que el nodo vea su transacción de oferta de intercambio no confirmada. Esto creará una competencia justa entre todos los compradores. En caso de que la oferta de intercambio ya se haya enviado, su código debe establecer datos programados = falsos y, por lo tanto, enviará una transacción de compra de moneda normal.

Para establecer el precio de la transacción de compra programada, utilizamos una propiedad de cuenta de la cuenta del emisor de la moneda y la modificamos para reflejar el nivel de precio actual del token. Luego utilizamos esta propiedad de cuenta para establecer la tasa de las solicitudes de compra programadas. Ver nrs.monetarysystem.js línea 357

Probar su solución

Configure un nodo de red de prueba NXT y úselo para probar su solución antes de implementarla en la red principal. Debe tratar esto como un proyecto de desarrollo y utilizar las mejores prácticas normales para pruebas y revisión de código. Siempre asuma que los piratas informáticos y los estafadores estarán vigilando su código en busca de errores porque puede estar seguro de que lo harán.

Resumen

En este artículo, expliqué en detalle el funcionamiento interno de IGNIS ICO para permitir a los desarrolladores imitar este proceso en su propia ICO basada en NXT. Usando la misma técnica, puede realizar una ICO segura y justa a una fracción del costo y el esfuerzo que tomaría implementarla en cualquier otra plataforma blockchain.

En mi próximo artículo explicaré cómo permitir que los usuarios inviertan en su ICO basada en NXT usando otras monedas criptográficas y aún así registrar los tokens ICO en la cadena de bloques NXT.

En el tercer artículo de esta serie, explicaré cómo puede usar Ardor para mejorar aún más esta técnica y crear una ICO que cumpla con los requisitos de KYC / AML.