Llamar al contrato - integración ether.js
Abra create-event.js
en la carpeta pages
. Podrá observar una vista previa de esta página en http://localhost:3000/create-event. Deberá ver un formulario ya confirgurado con todos los inputs que necesitamos.
Nota: Si no lo puede visualizar, asegúrese de ejecutar npm run dev
en la terminal dentro de la carpeta de su proyecto o en la terminal desde VS Code.
Al hacer click en el botón "Crear", se activará la llamada a la funciónhandleSubmit
. En este momento, solo registrará en la consola "Form Submitted" o "Formulario enviado" en español. Ahora veremos y configuraremos la lógica que debe ocurrir cuando el envío del formulario suceda.
Almacenaremos las variables en estados para tener seguimiento de los datos del formulario.La organizaremos en un solo objeto que usaremos para pasarlo al endpoint de nuestra API que almacenará la data off-chain (fuera de la cadena) con web3storage.
Agregue lo siguiente dentro de la función handleSubmit, justo debajo de e.preventDefault()
:
Para la imagen, importaremos los siguientes dos elementos en la parte superior del archivo create-event.js
:
Nuestra primera importación extraerá la función
getRandomImage
de nuestro archivogetRandomImage.js
.En segundo lugar, también importaremos
ethers
para que podamos usarlo para llamar a nuestro contrato.
Tus importaciones se verán así:
Notará que no estamos enviando toda la data del evento aquí - el depósito del evento, la capacidad máxima, la fecha, etc. se almacenará en una on-chain o en una cadena en español, con nuestro smart contract. Antes de llamar a nuestro contract, debemos obtener nuestra IPFS CID(más detalles después).
Notará que no estamos enviando toda la data del evento aquí - el depósito del evento, la capacidad máxima, la fecha, etc. se almacenará en una on-chain o en una cadena en español, con nuestro smart contract. Antes de llamar a nuestro contract, debemos obtener nuestra IPFS CID(más detalles después).
En nuestra función handleSubmit
, podemos usar una declaración try..catch
para enviar el cuerpo al endpoint de nuestra API /store-event-data (no se preocupe, crearemos este file en la siguiente sección).
Tenemos que enviar esta data a un endpoint para evitar exponer nuestra web3.storage private key a la interfaz del frontend. Así se mantendrá en secreto.
Si recibimos una respuesta exitosa, lo que significa que pudimos almacenar los datos con Web3.Storage y obtuvimos un CID, podemos pasar esto a una nueva función llamada createEvent
. Así es como tu función debe verse:
Para conectar nuestro contract, podemos importar la función que escribimos anteriormente desde la carpeta utils
:
Cree una nueva función llamada createEvent
donde podamos pasar los datos del evento a la función createNewEvent
de nuestro contract.
Tendremos que asegurarnos de enviar el monto del depósito del evento como Wei, que es la denominación más pequeña de ETH (1 ETH = 1000000000000000000 Wei). Podemos usar un método de ethers llamado parseEther
para analizar fácilmente una cantidad en ETH (o MATIC en este caso) a la cantidad correcta que nuestro contract pueda entender.
También necesitamos generar una marca de tiempo de Unix (Unix timestamp) de los datos de fecha y hora desde nuestro formulario.
Para llamar a nuestro contrato, podemos simplemente llamar al método de esta manera:
Después de pasar los parámetros de la función, también podemos pasar un objeto donde podemos establecer el límite de gas para la transacción.
Esto devolverá un objeto de transacción con más datos sobre nuestra transacción. Para acceder fácilmente a esta información, como el hash de la transacción, podemos almacenarla en una variable llamada txn
.
Escritoras: Sarah Schwartz, Traductoras: Dami, Brenda, Caro Meneses
Last updated