Comment mettre en place un ICO juste et sécurisé

Un aperçu technique des rouages ​​de notre propre campagne de financement participatif IGNIS, que vous pouvez dupliquer pour votre propre ICO basé sur NXT pour une fraction du coût des autres solutions.

Le développement de contrats intelligents pour un jeton Ethereum ERC20 est coûteux. Les coûts typiques incluent environ 20 000 USD pour le développement des contrats intelligents et un autre énorme montant de 50 000 USD pour la vérification de la sécurité. Cela semble scandaleux au départ, mais je pense que cela est compréhensible. Après tout, chaque jeton Ethereum est développé à partir des spécifications de l’équipe ICO. autant qu'ils aiment.

Dans un article précédent, j'ai expliqué comment NXT peut être utilisé comme une alternative moins chère et plus sûre pour la plate-forme ICO. Cependant, je n’ai pas précisé les détails exacts et j’ai récemment reçu tellement de questions que j’ai décidé que cela nécessitait davantage de précisions.

En supposant que vous ne connaissiez pas NXT, votre meilleure approche consiste simplement à suivre à la lettre la structure de notre propre OIC IGNIS. Cela vous fournira une solution de financement participatif sécurisée et efficace pour des coûts de R & D beaucoup plus abordables.

Le reste de l'article est un peu technique. Vous devez vous familiariser un peu avec NXT, savoir comment exécuter un nœud et comprendre les API, il n'y a pas de solution. Je n’expliquerai pas cela dans cet article. Je vous suggère de commencer à partir de notre nxtwiki. Je peux vous assurer que cela est aussi simple que toute plate-forme blockchain et probablement beaucoup plus simple.

Monnaie contrôlable

Le module de base du jeton JLRDA utilisé par l’OMI IGNIS était un jeton de type Monnaie contrôlable. Pour commencer, j'aimerais que vous lisiez la documentation officielle du système monétaire, oui, je sais que cette chose est longue et verbeuse, mais vous voulez lever des millions et ne voulez pas payer les gars de l'ETH ou se faire pirater, n'est-ce pas? Alors, lis la fichue chose s'il te plaît.

Une fois que vous avez lu la documentation, je peux vous dire rapidement qu’une devise contrôlable ne peut être transférée que vers le compte émetteur et à partir de celui-ci. Si elle est également échangeable, seul le compte émetteur peut publier des offres. Ces propriétés en font un excellent outil de financement participatif. La restriction sur les transferts garantit que les acheteurs ne peuvent pas déplacer les jetons et la restriction sur les offres de vente garantit que vous avez le contrôle sur les niveaux de prix afin que personne d'autre ne puisse fournir un meilleur prix pendant que vous suivez votre calendrier ICO.

Pour voir les propriétés de devise que nous avons utilisées pour IGO IGNIS, consultez la devise JLRDA sur le réseau principal NXT et émettez toujours votre devise avec 4 positions décimales.

Page ICO

Les devises peuvent être échangées à l’aide de l’interface existante de la bourse de porte-monnaie NXT. Cependant, cette interface étant trop complexe pour l'acheteur occasionnel d'ICO, nous avons donc conçu une page spéciale pour l'ICO qui ne prend en charge qu'une seule fonction permettant d'acheter la devise. Vous devrez implémenter une page similaire et l'ajouter en tant que plug-in de portefeuille ou tout simplement l'afficher sur votre site Web ICO. Ne construisez pas cette page à partir de zéro, réutilisez la page existante que nous avons créée pour notre propre ICO. Téléchargez et installez NXT 1.11.9 (n’utilisez pas de version plus récente car certains de ces codes ont été supprimés), puis examinez le fichier ignis.html (./html/www/html/pages/ignis.html) et les fonctionnalités la prend en charge dans nrs.monetarysystem.js à partir de la ligne 1600 (./html/www/js/nrs.monetarysystem.js). En vous basant sur le code ignis.html, développez votre propre page ICO en tant que version modifiée de NXT (notre code client est publié sous licence MIT, ce qui vous permet de le faire) ou en tant que plug-in de portefeuille permettant aux autres nœuds NXT de soutenir votre ICO mais va ajouter une certaine complexité à votre processus de développement. Vous pouvez simplifier davantage la page ICO à votre guise. Par exemple, vous n'avez pas à inclure de support pour les échanges Shapeshift et Changelly sur cette page, comme nous l'avons fait.

Offres d'échange

Pour chaque cycle ICO, émettez une seule offre d'échange de votre devise en fonction de votre emploi du temps ICO. Utilisez l'interface portefeuille NXT pour cela. Vous devez uniquement proposer la devise à la vente, indiquez 0 valeur du côté achat. Regardez par exemple la transaction 12339997342493732668 sur NXT Mainnet pour voir l’une des offres que nous avons émises pour vendre 1 JLRDA à 0,76 NXT. Assurez-vous que la hauteur d'expiration est alignée sur le programme ICO. Rappelons que dans NXT, un bloc est généré chaque minute en moyenne.

Considérations de sécurité

Lorsque vous vendez vos jetons en utilisant une offre d'échange, la récompense est reçue dans NXT. Par conséquent, le compte qui a émis la devise accumulera une quantité importante de NXT. Toutefois, vous ne devez pas placer ce compte sous le contrôle de votre compte car cela gênera l'opération des transactions planifiées ( expliqué ci-dessous). Au lieu de cela, préparez un autre compte sécurisé par le contrôle de compte et transférez régulièrement les fonds collectés dans ICO vers ce compte.

Lorsque vous choisissez un nom pour votre jeton. Faites en sorte que le nom du jeton soit aussi simple que possible afin que les fraudeurs aient plus de difficulté à confondre les utilisateurs en achetant leurs propres faux jetons. Rétrospectivement, le nom choisi pour notre propre jeton, JLRDA, posait problème, car certains utilisateurs ont été escroqués pour acheter un jeton nommé JRLDA, par exemple. Assurez-vous donc que le nom de votre jeton est simple et envisagez même de payer les frais supplémentaires pour une devise de 4 ou 3 lettres.

Randomisation et transactions planifiées

Si votre ICO est populaire, il y aura une demande excessive lorsque vous lancerez les premiers lots à la vente. Il existe toujours un risque qu'un acheteur unique achète le lot complet en faisant correspondre votre offre de vente non confirmée avant que les utilisateurs ne puissent voir l'offre de vente dans l'interface utilisateur.

Pour limiter ce risque et vous assurer que tout le monde a la chance d'acheter votre jeton, vous devez laisser vos utilisateurs planifier leurs demandes d'achat avant de proposer la devise à la vente à l'aide de la fonctionnalité de transactions planifiées. Cette partie est optionnelle, vous n’avez pas à la supporter dans votre page ICO mais si vous ne l’avez pas, vous offrez un avantage injuste aux geeks des technologies par rapport à tous les autres acheteurs.

Pour ce faire, votre code doit charger les offres d'échange disponibles lorsque votre utilisateur soumet la transaction d'achat. S'il n'en existe pas, vous devez ajouter des données planifiées = vraies au bouton d'achat, par exemple $ («# buy_ignis_button»). Data («planifié», true); En conséquence, lorsqu'un utilisateur soumet une transaction d'achat, celle-ci sera stockée dans la mémoire du nœud et non encore soumise à la blockchain.

Pour voir comment cela a fonctionné pour l'ICO IGNIS, consultez la fonction processOffers () dans nrs.monetarysystem.js de NXT 1.11.9 et imitez cette fonctionnalité. Ceci soumettra une transaction planifiée qui restera dans la mémoire du nœud. Cette transaction planifiée ne sera diffusée dans la blockchain qu'au moment où le nœud verra votre transaction d'offre d'échange non confirmée. Cela créera une concurrence loyale entre tous les acheteurs. Dans le cas où l'offre d'échange a déjà été soumise, votre code doit définir une valeur programmée = fausse et ainsi soumettre une transaction d'achat en devise normale.

Pour définir le prix de la transaction d'achat planifiée, nous avons utilisé une propriété de compte du compte de l'émetteur de devise et l'avons modifiée pour refléter le niveau de prix actuel du jeton. Nous avons ensuite utilisé cette propriété de compte pour définir le taux des demandes d’achat planifiées. Voir la ligne 357 de nrs.monetarysystem.js

Tester votre solution

Configurez un nœud de testnet NXT et utilisez-le pour tester votre solution avant de la déployer en réseau principal. Vous devez considérer cela comme un projet de développement et utiliser les meilleures pratiques habituelles pour les tests et la révision de code. Supposez toujours que les pirates informatiques et les fraudeurs surveillent votre code à la recherche de bogues, car soyez-en assurés.

Résumé

Dans cet article, j'ai expliqué en détail le fonctionnement interne de l'ICO IGNIS afin de permettre aux développeurs d'imiter ce processus dans leur propre ICO basé sur NXT. En utilisant la même technique, vous pouvez réaliser un ICO sûr et juste à une fraction du coût et des efforts nécessaires pour le mettre en œuvre sur n’importe quelle plate-forme blockchain.

Dans mon prochain article, j'expliquerai comment permettre aux utilisateurs d'investir dans votre ICO basé sur NXT en utilisant d'autres crypto-devises tout en enregistrant les jetons ICO sur la chaîne de blocs NXT.

Dans le 3ème article de cette série, je vais expliquer comment vous pouvez utiliser Ardour pour améliorer encore cette technique et créer un ICO conforme aux exigences de KYC / AML.