Skip to content

Latest commit

 

History

History
118 lines (63 loc) · 8.82 KB

README.md

File metadata and controls

118 lines (63 loc) · 8.82 KB

Guia MIN-ICO

Este proyecto utiliza Protostar como marco de desarrollo. Para comenzar con Protostar, siga las guías contenidas en los documentos oficiales.

Una vez instalado y clonado este repositorio no hará falta iniciar el proyecto con protostar, nos dirijimos directamente al archivo protostar.toml para revisar su información. Como ven estan añadidos todos los contratos y la configuración de testnet2 para el deploy, así que nos han dejado el trabajo para hacer los MINIMOS esfuerzos Min-Starknet, así que intentaré seguir en esa línea para esta guía.


Ajustes Account

En esta nueva version de protostar 0.9.1 tendremos que crear un perfil que añadirermos en protostar.toml en el que defineremos el usuario de cuenta que pagará el fee. Usaremos los ajustes PARA TESTNET aunque también estan preparados para TESTNET2. La cuenta de ArgentX para la guía será 0x03F878C94De81906ba1A016aB0E228D361753536681a776ddA29674FfeBB3CB0 (EN SU CASO AÑADIR LA VUESTRA) para el deploy del Ico.cairo. Tendremos que exportar nuestra PRIVATE KEY de esa cuenta de ArgentX. En la versión 0.9.0 protostar teniamos que pasarlo a hexa usando Stark-utils.

Recordar que tenemos OPCIONES A - B para TESTNET o TESNET2 y no usar ni compartir ninguna PRIVATE KEY NUNCA, todo ello es provisional hasta la versión de CAIRO 1.0. Al reiniciar el pc o terminal tendrá que volver a exportar la clave.

OPCIÓN A - EXPORT PRIVATE KEY

En la versión 0.9.0 protostar teniamos que pasarlo a hexa usando Stark-utils. En la 0.9.1 pasaremos nuestra private key directamente para exportarla, usando el siguiente comando. (SUSITITUIR 0x1234 por vuestro hexa).

export PROTOSTAR_ACCOUNT_PRIVATE_KEY=0x1234

OPCIÓN B - .ENV PRIVATE KEY

Otra opción es este método, añadimos en un archivo .env nuestra private key. También tendremos que ajustar el protostar.toml para indicar la ruta de nuestra Private Key, aunque prefiero esta opción. Nunca mostrar tu clave privada. Nunca subir a Git tu archivo .env.

Graph

BONUS: Deploy en Testnet2

Si queremos realizar el deploy de nuestro contrato en la testnet 2, debemos seguir los mismos pasos que en la testnet. La única diferencia es que necesitaremos utilizar una wallet que esté en la testnet 2 y agregar un perfil específico al archivo de configuración de Protostar. Además, cuando ejecutemos los comandos de Protostar, debemos utilizar el parámetro -p testnet2 en lugar de -p testnet para que la configuración se aplique a la testnet 2. Con estos pasos, podremos realizar el deploy de nuestro contrato en la testnet 2 de manera efectiva.

Graph


Compile y Declare ICO

Ahora para compilar nuesrto token ico.cairo y el resto de contratos sólo deberemos pasar el siguiente comando y obtendremos también cada uno de sus Class Hash.

protostar build

Graph

Ahora nos quedaremos con el class hash del Ico para hacer el deploy. En el caso del declare la mayoría ya los tenían realizados creados por otros usuarios, igualmente los declare para esta guía. También comprobaremos que todo este bien, así que pasaremos el comando.

protostar -p testnet declare ./build/ico.json --max-fee auto

Graph


Deploy de ICO con Protostar

Usaremos esta vez para el Min-Starknet protostar. En este caso en el ico.cairo el constructor toma dos argumentos: una dirección de tokenAddress de tipo felt y una dirección de adminAddress de tipo felt.

Dentro del constructor, las variables admin_address y token_address se escriben con los valores de los argumentos que usaremos nuestra wallet de ArgentX y nuestro Contract ERC20 NAI usando anteriormente en la guía aquí

protostar -p testnet deploy 0x0097186804ddd5fd8475c5ca8cfc0785a2edf1cde27596e8f67277cf3d0a2750 --max-fee auto -i 1795950254530259382270168937734171348535331377400385313842303804539016002736 10237315701995897433515559283228717467815530440128879644699240141503539899

Graph

Approve en ETH y Register ICO

Este código contiene una función register en ico.cairo que se encarga de registrar a una dirección en un ICO (Oferta Inicial de Monedas). La función verifica primero que el ICO no haya terminado, luego verifica que el usuario aún no esté registrado y luego verifica que el usuario haya aprobado previamente la dirección del contrato ICO para gastar la cantidad de registro de su saldo de ETH. Luego, la función transfiere la cantidad de registro desde la dirección del usuario al contrato ICO y agrega la dirección del usuario a la lista de direcciones registradas.

Primero el usuario debe aprobar la dirección del contrato ICO para gastar la cantidad de registro de su saldo de ETH, en este caso 0.001 ETH que convertidos son 1000000000000000. El usuario podrá hacerlo desde ETH en Starknet. Esto se hace utilizando el método allowance del contrato ERC20 IERC20. Este método devuelve la cantidad de ETH que el usuario ha aprobado para que se gaste en nombre del comprador por un contrato específico.

Así que para aprobar deberemos de ir al contrato de ETH en Starknet que estaba definido como constante en ico.cairo y aprobar que el contrato ICO pueda gastar la cantidad necesaria en este caso 1000000000000000 para poder hacer el registro.

Graph

Ahora ya podremos ir directamente al contrato del ICO en la opción de Register y escribir sin que nos de error. Luego podremos verificar que nos hemos registrado.

Graph

Graph


Función Claim

La función claim parece estar diseñada para permitir a un usuario reclamar tokens después de que haya terminado una oferta inicial de monedas ICO, por sus siglas en inglés. La función toma un argumento de entrada, address, que es una dirección de un usuario que quiere reclamar tokens.

Primero, la función verifica si la dirección proporcionada está registrada llamando al método read en la variable global registered_address. Luego, la función verifica que el ICO ha terminado comparando la hora actual del bloque con la hora de inicio del ICO. Si la duración del ICO no ha transcurrido aún, la función lanzará un mensaje de error indicando que el ICO aún está en curso y que no se pueden reclamar tokens todavía. Si el ICO ha terminado y la dirección proporcionada está registrada, se pueden reclamar los tokens.

La ico duration que hemos definido como constante de tiempo en este caso ha sido de 24 horas para poder hacer el claim.

Verificación Starkscan

Como tarea extra podemos dejar verificado nuestro contrato en Starkscan, para ello debemos de tener instalada y guardado el contrato que acabamos de hacer el Deploy. Ejecutamos el siguiente comando, escogemos el ico.cairo y vamos siguiendo los pasos. (EN CASO ERROR EN LA RUTA SOLO HAY QUE AÑADIR LA PALABRA lib)

starkscan

Graph