# Verificación de contratos inteligentes en Polygon zkEVM usando el explorador

> El código fuente de los contratos inteligentes desplegados en la cadena Polygon POS se puede verificar usando el explorador, del mismo modo, los contratos desplegados en la testnet de Polygon zkEVM también se pueden verificar usando el explorador de la testnet de Polygon zkEVM...

Por Shodipo Ayomide, publicado el 19 ene 2023. Versión web: https://blog.shodipoayomide.com/es/verifying-smart-contracts-on-the-polygon-zkevm-using-the-explorer

![](https://blog.shodipoayomide.com/banners/Verifying-Smart-Contracts-on-the-Polygon-zkEVM-Using-the-Explorer.png)

El código fuente de los contratos inteligentes desplegados en la cadena Polygon POS se puede verificar usando el explorador, del mismo modo, los contratos desplegados en la testnet de Polygon zkEVM también se pueden verificar usando el explorador de la testnet de Polygon zkEVM. En este tutorial técnico veremos cómo hacerlo.

Los contratos inteligentes verificados ofrecen trustlessness porque son contratos cuyo código fuente publicado coincide con su bytecode. Los contratos inteligentes verificados lo garantizan. Esto permite a los usuarios leer el contrato y entender cómo se implementó, y también interactuar con él directamente a través del explorador.

Antes de empezar con la verificación, debemos entender que los contratos pueden ser de un solo archivo o de varios archivos. Los archivos solidity únicos son contratos de solidity que no heredan de otros contratos, librerías ni interfaces.

En la vida real, los contratos desplegados rara vez serán archivos solidity únicos, así que en este tutorial vamos a verificar un token ERC20 desplegado en la testnet de zkEVM. Los archivos solidity únicos se pueden verificar exactamente de la misma manera.

¡Ahora sí, vamos a verificar nuestros contratos en zkEVM!

## Desplegando nuestro contrato

El primer paso es desplegar nuestro contrato

Para poder desplegar en la testnet, debes haberla importado en tu wallet de metamask. Si no lo has hecho, sigue los pasos que se explican en este [artículo del blog](https://polygon.technology/blog/your-three-step-guide-to-using-polygon-zkevm-yes-its-that-easy). El artículo detalla cómo importar la testnet y también cómo conseguir ETH de testnet.

Para desplegar, ve a [Remix IDE](https://remix.ethereum.org/), crea un archivo nuevo y pega este código.

```rust
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract zkToken is ERC20, Ownable {
    constructor() ERC20("zkToken", "ZKT") {
        _mint(msg.sender, 10000 * 10 ** decimals());

    }

    function mint(address to, uint256 amount) public onlyOwner {
            _mint(to, amount);
    }

}
```

Ve a la “pestaña de compilación” y, antes de compilar, debes anotar la versión del compilador que estás usando. Aquí usaremos la versión 0.8.12.

![](https://i.ibb.co/x1Bp8Dp/Screenshot-90-LI.jpg)

Después de pulsar “compile” y de que el contrato se haya compilado correctamente, es momento de desplegar.

Ahora ve a la pestaña “Deploy & Run Transaction”. Cambia del "Remix VM London" predeterminado a "Injected Web3 Provider", lo que hará que se abra metamask. Antes de hacer esto, asegúrate de haber cambiado a la testnet de polygon zkEVM.

![](https://i.ibb.co/5xn2pmS/Screenshot-92.png)

Conecta tu wallet, pulsa el botón naranja "deploy" y ¡el contrato se desplegará de inmediato!

Como nuestro contrato importa otros contratos, no podemos verificarlo pegando directamente nuestro código fuente, tendremos que aplanar nuestro código.

## Aplanando nuestro contrato con el plugin Flattener en Remix

Cuando aplanamos nuestros contratos inteligentes, combinamos todo el código solidity en un solo archivo en lugar de tener varios archivos fuente. Esto significa que, en lugar de tener imports, ahora tenemos el código importado incrustado en el mismo archivo.

Para aplanar nuestro contrato inteligente, seguimos estos pasos:

**Paso 1** - Ve al "plugin manager" en Remix, que está justo encima de la pestaña de ajustes.

![](https://i.ibb.co/tpH6QVn/Screenshot-97-LI.jpg)

**Paso 2** - Busca el plugin "Flattener" y actívalo

![](https://i.ibb.co/0JKL8Lx/Screenshot-98-LI.jpg)

**Paso 3** - Ahora ve a la pestaña del flattener y haz clic en "Flatten Contracts/zkToken.

![](https://i.ibb.co/MZH7FzL/Screenshot-99.png)

**Paso 4** - Luego se guarda el contrato aplanado haciendo clic en el botón de guardar

## Revisando el contrato en el explorador

Ahora que nuestro contrato está desplegado, podemos revisarlo en el [explorador](https://explorer.public.zkevm-test.net/).

Lo primero es lo primero, pegamos la dirección del contrato en la barra de búsqueda y se nos mostrará esta interfaz.

![](https://i.ibb.co/HNRNbMd/Screenshot-94.png)

Ve a la pestaña "code" y localiza el botón "verify and publish".

![](https://i.ibb.co/NSJwHXm/Screenshot-95-LI.jpg)

Después de hacer clic en el botón "verify and publish", se nos presentan tres opciones, seguiremos con la primera opción, "verify via flattened source code", y luego pulsamos "Next"

![](https://i.ibb.co/gSfzjGN/Screenshot-96-LI.jpg)

A continuación, rellenamos el formulario que aparece.

- nombre del contrato: "zkToken"
- compilador: v0.8.12 (esta es la versión del compilador que usamos)
- optimización: no (no optimizamos el contrato)
- Por último, copiamos y pegamos nuestro código fuente aplanado en "Enter the Solidity Contract Code" y pulsamos el botón "verify & Publish".

dejamos el resto tal como está.

![](https://i.ibb.co/1MgLVzz/Screenshot-100.png)

¡Voilà!, ¡ya tenemos la marca de verificación que indica que nuestro contrato ha sido verificado!

![](https://i.ibb.co/2Kddxnr/Screenshot-101.png)

---

## Conclusión

Hemos verificado con éxito nuestro contrato ERC20 en la testnet de polygon zkEVM, ahora cualquiera puede interactuar con él. Antes mencioné que los archivos solidity únicos se pueden verificar siguiendo estos mismos pasos, aunque no necesitas aplanar tu código.

Muy pronto, creo que herramientas de verificación como Sourcify, que ofrecen verificación completa usando los metadatos del contrato, darán soporte a la testnet de polygon zkEVM, y cuando eso pase, ¡escribiré sobre ello!
