Cómo empezar a desarrollar en zkSync (2025)
Escrito por Petar Todorov
Matter Labs ahora tiene un representante en la carrera contra Scroll y Polygon por ejecutar el primer EVM de conocimiento cero del mundo: zkSync Era.
Lanzado en marzo de 2023, zkSync Era es un ZK Rollup compatible con EVM que utiliza pruebas de conocimiento cero 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, 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. 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, Era introduce el concepto de 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 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 (Integrated Development Environment) con los plugins requeridos
- Un gestor de paquetes (NPM o Yarn)
- 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 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.
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 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 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) 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("<WALLET-PRIVATE-KEY>");**
Pega la clave privada en el lugar de <WALLET-PRIVATE-KEY>.
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. 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 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:
- Read para las funciones getter
- 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.
Resúmenes relacionados
Técnico17 de junio de 2026
Guía para desarrolladores del stack de web3
El stack de web3 en 2026, capa por capa: redes, infraestructura, contratos inteligentes, wallets, frontends, almacenamiento, aplicaciones y la nueva capa agéntica.
Técnico19 de mayo de 2026
Webhooks vs. WebSockets vs. gRPC
Tres protocolos dominan la entrega de datos en tiempo real. Así es como se diferencian webhooks, WebSockets y gRPC, cuándo falla cada uno y cómo elegir entre ellos.
Técnico20 de octubre de 2025
La guía del desarrollador sobre costos de desarrollo de apps blockchain en 2025
¿Quieres saber qué presupuesto necesitas para construir una app onchain?

Construye magia blockchain
Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.