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.
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 NFT Market.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.
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
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
.
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.
Ahora para compilar nuesrto token Nft_market.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
Ahora nos quedaremos con el class hash del Nft_market
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/nft_market.json --max-fee auto
Usaremos esta vez para el Min-Starknet
protostar, ya que no debemos pasar argumentos así directamente podremos hacer el deploy
usando el siguiente comando.
protostar -p testnet deploy 0x0250ded8ce7f9f9345281754e6aa688282cf185a78ba4d60f2f441d25b054811 --max-fee auto
Ahora para hacer las pruebas deberemos ir primero el setApprovalForAll
del ERC721 que creamos anteriormente, pasándole la dirección del contrato de Nft Market que acabamos de crear, y el valor 1
como true, así podremos empezar a listar nuestros NFT para la venta.
Ahora ya podemos list_token
en nuestro Nft Market que le pasaremos el contrato de ERC721
, Id
y Price
.
Podemos revisar como se nos ha deployado con el datos pasados correctamente y como hemos agregado nuestro nuevo NFT NAFT
, pero aún no hemos comprado ninguno. Recordar que muchas funciones en los contratos necesitan aprovar primero.
El comprador debe haber aprobado previamente el gasto del precio de la lista en ETH en Starknet para poder completar la venta. Esto se hace utilizando el método allowance
del contrato ERC20 IERC20
. Este método devuelve la cantidad de ETH que el comprador ha aprobado para que se gaste en nombre del comprador por un contrato específico. Asi que deberemos de ir al contrato de ETH en Starknet que estaba definido como constante en nft_market.cairo y aprobar
que el contrato Nft Market pueda gastar la cantidad necesaria en este caso 100000
para poder hacer la compra, para la guía probaremos con otra wallet como comprador.
Ahora ya podremos ir directamente al contrato del Nft Market en la opción de Buy_token
. En la que se encargará directamente de enviar el saldo al vendedor y el NAFT al comprador, quedando en los eventos actualizado la listing_sold
.
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 nft_market.cairo
y vamos siguiendo los pasos. (EN CASO ERROR EN LA RUTA SOLO HAY QUE AÑADIR LA PALABRA lib
)
starkscan