---
title: "Cómo empezar a desarrollar en zkSync (2025)"
description: "Empieza a desarrollar tu primera aplicación zkSync."
---

# Cómo empezar a desarrollar en zkSync (2025)

Matter Labs ahora tiene un representante en la carrera contra Scroll y Polygon por ejecutar el [primer EVM de conocimiento cero del mundo](https://www.alchemy.com/overviews/zkevm): [zkSync](https://www.alchemy.com/overviews/what-is-zksync-era) Era.

Lanzado en marzo de 2023, zkSync Era es un ZK Rollup compatible con EVM que utiliza [pruebas de conocimiento cero](https://www.alchemy.com/overviews/validity-proof-vs-fraud-proof) para escalar la velocidad y capacidad de procesamiento de la red de Ethereum.

Desarrollar en zkSync tiene los beneficios de tarifas de gas bajas para ETH y [**tokens ERC20**](https://www.alchemy.com/overviews/erc20-solidity), además de swaps atómicos, órdenes límite y soporte nativo de NFT en Layer-2.

Este artículo explicará qué es zkSync Era y cómo desplegar un smart contract en la testnet pública de zkSync en cinco pasos.

## **¿Qué es zkSync era?**

zkSync Era es una nueva solución Layer-2 de Matter Labs que combina ZK-Proofs y tecnología de Ethereum Virtual Machine para [**escalar el throughput de la mainnet de Ethereum**](https://www.alchemy.com/overviews/ethereum-scaling-solutions). Al combinar ambas tecnologías, zkSync Era permite transacciones de Ethereum más rápidas y seguras.

Además de la equivalencia completa con [EVM](https://www.alchemy.com/overviews/what-is-the-ethereum-virtual-machine-evm), Era introduce el [concepto de account abstraction](https://www.alchemy.com/overviews/what-is-account-abstraction) al stack de Ethereum, propuesto inicialmente en EIP-4337.

Con account abstraction, las wallets se convierten en smart contracts que pueden tener características como un algoritmo de firma personalizado, transacciones patrocinadas y autenticación de dos factores.

## **Cómo empezar a desarrollar en zkSync era**

El desarrollo en zkSync Era involucra en gran medida las mismas [herramientas que usaría un desarrollador web3](https://www.alchemy.com/dapps/top/developer-tools) para desplegar un contrato en Ethereum. Este tutorial cubrirá cómo desplegar un smart contract en la testnet pública de zkSync.

### **Requisitos previos**

Para el tutorial, se necesita lo siguiente:

- Clave privada de una wallet de Ethereum
- Ether de prueba
- IDE [Hardhat](https://www.alchemy.com/dapps/hardhat) \(Integrated Development Environment\) con los plugins requeridos
- Un gestor de paquetes \(NPM o Yarn\)
- [VScode](https://www.alchemy.com/dapps/vscode)
- Comprensión básica de Typescript

## **1. Configurar un IDE para zkSync era**

Primero, crea una carpeta para el proyecto.

Abre VScode \(o la terminal de tu máquina\) y escribe:

Luego, inicializa npm con el comando: **npm init -y**

La flag **-y** ahorra tiempo al prellenar todos los campos del archivo **_package.json_** con sus valores por defecto.

Ahora que npm y la carpeta del proyecto están configurados, instala las dependencias requeridas.‍

En la terminal de VScode, escribe:

**Aquí está el desglose del comando:**

- **$ npm i -D**: Un alias para el comando install. La flag -D guarda todos los paquetes como dependencias de desarrollador.
- $ typescript ts-node: instalación de Typescript y el motor de ejecución de Typescript para Node.js.
- $ ethers@^5.7.2 zksync-web3@^0.13.1: Dos librerías que ayudan a desplegar e interactuar con el contrato.
- $ hardhat: El IDE en uso.
- $ @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy: Dos plugins de Hardhat que ayudan a compilar y desplegar el smart contract.

A continuación viene la inicialización del proyecto de Hardhat.‍

En la terminal, escribe:

**npx hardhat init**

Selecciona '**Create a TypeScript Project**' y presiona enter para prellenar los siguientes campos con sus valores por defecto.

Así debería verse la estructura de carpetas del proyecto:

En la carpeta contracts, elimina el contrato Lock.sol, que se genera automáticamente por defecto ya que no será necesario.‍

El último paso de la configuración del IDE es ir al archivo **hardhat.config.ts**.

El archivo **hardhat.config.ts** es el 'centro de comando' que define estos parámetros para el despliegue:

- Versión del compilador de zkSync
- Chain en la que se desplegará el contrato
- Versión del compilador de [Solidity](https://www.alchemy.com/overviews/solidity-smart-contract) en la que se escribirá el contrato.

Elimina el contenido del archivo **hardhat.config.ts** y reemplázalo con lo siguiente:

La configuración del IDE ya está lista y el siguiente paso es crear el smart contract.

## **2. Crear el smart contract**

El contrato que registrará el nombre y la edad de una persona.

Ve a la carpeta contracts en el directorio del proyecto y crea un nuevo archivo llamado **Registry.sol**‍

Luego, copia y pega el siguiente código del smart contract en el archivo:

El contrato debe compilarse antes del despliegue. En la terminal, escribe:

**npx hardhat compile**

## **3. Configurar una wallet para zkSync era**

No es necesario crear una nueva wallet, ya que zkSync Era es compatible con las wallets de Ethereum existentes.

Por lo tanto, se puede usar cualquier wallet existente como [Metamask](https://www.alchemy.com/dapps/metamask).

**Nota: No se recomienda usar una wallet personal de Ethereum que almacene inversiones o ahorros, ya que el procedimiento de despliegue requiere exportar la clave privada.**

## **4. Obtener ETH de prueba de Goerli y hacer el bridge a zkSync era**

Puede ser necesario contar con ether de prueba en la testnet de zkSync Era para desplegar el contrato.

**Para obtener ether de prueba, haz el bridge de ETH de Goerli desde la wallet del deployer hacia su instancia en zkSync Era.**

- Para hacerlo, ve al [faucet de Goerli de Alchemy](https://goerlifaucet.com/) para obtener ether en la testnet de Goerli.

- Crea una cuenta gratuita de Alchemy antes de continuar.

- Luego, abre Metamask y haz clic en la dirección de la wallet para copiarla.

- En el sitio web del faucet de Goerli, pega la dirección de la wallet y haz clic en **Send Me ETH**.

Luego, ve al [bridge](https://goerli.portal.zksync.io/bridge) de zkSync Era.

Haz clic en "Connect via a browser wallet Metamask".

Selecciona la wallet que se usará para el despliegue del contrato.

Haz clic en **MAX \(o ingresa una cantidad de tu elección, pero asegúrate de que sea al menos 0.1 [gETH](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one)\) y haz clic en Deposit.**

**Nota**: Verifica que el campo en la esquina inferior derecha diga: **"zkSync Era Goerli".**

Mientras esperas a que termine el bridging, finaliza el despliegue creando el script de despliegue.

## **5. Crear un script de despliegue y exportar la clave privada**

A continuación, crea un script de despliegue y exporta la clave privada desde Metamask, copia la clave privada y despliega el smart contract.

Así es como se hace:

#### **Crear un script de despliegue**

De vuelta en VSCode, renombra la carpeta scripts a **deploy, y adentro, crea un archivo llamado deploy.ts.**

Después, copia el siguiente código en el archivo:

Los comentarios, marcados con "//", explican la lógica del código.

#### **Exportar la clave privada desde MetaMask**

En Metamask, abre la wallet que se usó durante el bridging y exporta su clave privada.

Haz clic en los tres puntos verticales y luego en Account details, luego en **Export private key.**

Ingresa la contraseña y copia la cadena revelada.

#### **Pegar la clave privada y desplegar el smart contract**

De vuelta en el archivo deploy.ts, busca la siguiente línea:

**  const wallet = new Wallet\("&lt;WALLET-PRIVATE-KEY&gt;"\);**

Pega la clave privada en el lugar de **&lt;WALLET-PRIVATE-KEY&gt;.**

Asegúrate de **no** eliminar las comillas dobles.

Finalmente, ve a la terminal de VScode y escribe: **npx hardhat deploy-zksync**

## **6. Verificar el smart contract mediante el block explorer**

Usa el block explorer de la testnet de zkSync Era para verificar el contrato desplegado.

Ve al [block explorer.](https://goerli.explorer.zksync.io/) En la barra de búsqueda, pega la dirección del contrato desplegado.

Una vez que se encuentre el contrato, haz clic en la pestaña **Contract** y luego en **Verify Smart Contract.**

Luego, completa los detalles requeridos:

**Contract Name** debe ser **"Registry"**.

**Zksolc version** - v1.3.

Solc version - 0.8.17.

Tanto **Zksolc Version** como **Solc Version** se pueden obtener del archivo **hardhat.config.ts**.

En el campo Enter the [Solidity](https://www.alchemy.com/overviews/solidity) Contract Code, pega el contenido del archivo Registry.sol.

Haz clic en **Verify Smart Contract** para finalizar el proceso.

‍**7. Interactuar con el contrato desplegado en ZkSync Era**

En el block explorer, busca el contrato por su dirección nuevamente y haz clic en la pestaña **Contract**.

Esta vez, el block explorer debería mostrar dos nuevos campos:

1. **Read** para las funciones getter
1. Write para las funciones setter

Dado que la visibilidad del mapping **personInfo** está definida como _public_, se genera automáticamente un método getter para él.

Asegúrate de que la wallet del deployer esté conectada al explorer. Haz clic en **addPerson.**

La sección se expandirá y aparecerán dos nuevos campos: uno para definir el nombre de la persona y otro para su edad.‍

Después de completar esos campos, haz clic en **Write** y confirma la transacción.

Después de que se confirme la transacción, haz clic en personInfo e ingresa el nombre de la persona que se acaba de agregar.

La GUI debería devolver la edad de la persona agregada.‍
