Awesome
ERC721 en StarkNet con Protostar
El tutorial a realizar es ERC721 de la gente de Staknet-edu. Este repositorio es una copia del tutorial original pero se encuentra adaptado para poder realizar el mismo con la herramienta Protostar.
Resumen del tutorial
Consiste en modificar el contrato ERC721.cairo dependiendo las consignas, hacer el deploy en testnet y luego en el contrato evaluador subir el address del contrato que estuvimos trabajando. Y de esta forma obtener puntos y seguir avanzando.
Configuración
Step 1 - Clonar el repositorio
git clone https://github.com/dpinones/starknet-erc721-protostar.git
cd starknet-erc721-protostar
Step 2 - Instalar curl
sudo apt install curl
Step 3 - Instalar protostar
curl -L https://raw.githubusercontent.com/software-mansion/protostar/master/install.sh | bash
Reiniciar el terminal
Ver la versión que instalamos
protostar -v
>> Protostar version: 0.4.2
>> Cairo-lang version: ^0.10.0
Step 4 - Instalar la biblioteca de OpenZeppelin
protostar install https://github.com/OpenZeppelin/cairo-contracts
Step 5 - Build al contrato
protostar build
Step 6 - Realizar el deploy en tesnet
Para realizar el deploy del ERC721 necesitamos pasarle parámetros nombre, símbolo, y un address. El address en este caso tiene que ser el del contrato evaluador que es: x2d15a378e131b0a9dc323d0eae882bfe8ecc59de0eb206266ca236f823e0a15. Para el nombre y el simbolo debemos convertir los string en int(al final se explica como hacer). Si queremos hacer el deploy del ERC721 con: nombre = 'STARKNET' = 6004496024898258260 símbolo = 'STARK' = 357895852619
Quedaría de la siguiente manera
protostar deploy ./build/ERC721.json --network alpha-goerli -i 6004496024898258260 357895852619 0x2d15a378e131b0a9dc323d0eae882bfe8ecc59de0eb206266ca236f823e0a15
Listo ya realizo el deploy de su contrato. Ahora puede continuar en consignas
Convertir string a int
Puede convertir un string en un int utilizando el editor online https://www.cairo-lang.org/playground/
Utilice el siguiente código
%builtins output
from starkware.cairo.common.serialize import serialize_word
func main{output_ptr : felt*}():
tempvar x = 'STARKNET'
serialize_word(x)
return ()
end
Ejemplo <img src="/exampleCairoPlayground.png" alt="Example string to int"/>
Debe copiar el int que retorna Program output. Reemplazar el contenido de las comillas para convertir un string en int.