---
title: "Como começar a desenvolver no zkSync (2025)"
description: "Comece a desenvolver sua primeira aplicação zkSync."
---

# Como começar a desenvolver no zkSync (2025)

A Matter Labs agora tem uma representante na corrida contra a Scroll e a Polygon para operar o [primeiro EVM de conhecimento zero do mundo](https://www.alchemy.com/overviews/zkevm) – [zkSync](https://www.alchemy.com/overviews/what-is-zksync-era) Era.

Lançada em março de 2023, zkSync Era é um ZK Rollup compatível com EVM que utiliza [provas de conhecimento zero](https://www.alchemy.com/overviews/validity-proof-vs-fraud-proof) para escalar a velocidade e o poder de processamento da rede Ethereum.

Desenvolver na zkSync traz benefícios como taxas de gas baixas para ETH e [**tokens ERC20**](https://www.alchemy.com/overviews/erc20-solidity), além de atomic swaps, ordens limitadas e suporte nativo a NFTs na Layer-2.

Este artigo explicará o que é a zkSync Era e como fazer o deploy de um smart contract na testnet pública da zkSync em cinco passos.

## **O que é a zkSync era?**

zkSync Era é uma nova solução Layer-2 da Matter Labs que combina provas ZK e a tecnologia da Ethereum Virtual Machine para [**escalar o throughput da mainnet da Ethereum**](https://www.alchemy.com/overviews/ethereum-scaling-solutions). Ao unir as duas tecnologias, a zkSync Era permite transações mais rápidas e seguras na Ethereum.

Além da equivalência total com [EVM](https://www.alchemy.com/overviews/what-is-the-ethereum-virtual-machine-evm), a Era introduz o [conceito de account abstraction](https://www.alchemy.com/overviews/what-is-account-abstraction) na stack da Ethereum, proposto inicialmente na EIP-4337.

Com account abstraction, as carteiras se tornam smart contracts que podem ter recursos como algoritmo de assinatura customizado, transações patrocinadas e autenticação de dois fatores.

## **Como começar a desenvolver na zkSync era**

Desenvolver na zkSync Era envolve, em grande parte, as mesmas [ferramentas que um desenvolvedor web3 usaria](https://www.alchemy.com/dapps/top/developer-tools) para fazer o deploy de um contract na Ethereum. Este tutorial vai mostrar como fazer o deploy de um smart contract na testnet pública da zkSync.

### **Pré-requisitos**

Para o tutorial, é necessário:

- Chave privada de uma carteira Ethereum
- Test ether
- IDE [Hardhat](https://www.alchemy.com/dapps/hardhat) (Integrated Development Environment) com os plugins necessários
- Um gerenciador de pacotes (NPM ou Yarn)
- [VScode](https://www.alchemy.com/dapps/vscode)
- Compreensão básica de Typescript

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

Primeiro, crie uma pasta para o projeto.

Abra o VScode (ou o terminal da sua máquina) e digite:

Em seguida, inicialize o npm com o comando: **npm init -y**

A flag **-y** economiza tempo preenchendo previamente todos os campos do arquivo **_package.json_** com seus valores padrão.

Agora que o npm e a pasta do projeto estão configurados, instale as dependências necessárias.‍

No terminal do VScode, digite:

**Aqui está o detalhamento do comando:**

- **$ npm i -D**: Um alias para o comando install. A flag -D salva todos os pacotes como dependências de desenvolvedor.
- $ typescript ts-node: instalação do Typescript e do motor de execução do Typescript para Node.js.
- $ ethers@^5.7.2 zksync-web3@^0.13.1: Duas bibliotecas que ajudam a fazer o deploy e interagir com o contract.
- $ hardhat: A IDE em uso.
- $ @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy: Dois plugins do Hardhat que ajudam a compilar e fazer o deploy do smart contract.

Em seguida, vem a inicialização do projeto Hardhat.‍

No terminal, digite:

**npx hardhat init**

Selecione '**Create a TypeScript Project**' e pressione enter para preencher previamente os próximos campos com seus valores padrão.

É assim que a estrutura de pastas do projeto deve ficar:

Na pasta contracts, delete o contract Lock.sol, que é gerado automaticamente por padrão, já que não será necessário.‍

O último passo da configuração da IDE é acessar o arquivo **hardhat.config.ts**.

O arquivo **hardhat.config.ts** é o 'centro de comando' que define estes parâmetros para o deploy:

- Versão do compilador zkSync
- Chain na qual o contract será implantado
- Versão do compilador [Solidity](https://www.alchemy.com/overviews/solidity-smart-contract) na qual o contract será escrito.

Delete o conteúdo do arquivo **hardhat.config.ts** e substitua pelo seguinte:

A configuração da IDE está pronta e o próximo passo é criar o smart contract.

## **2. Criar o smart contract**

O contract que vai registrar o nome e a idade de uma pessoa.

Vá até a pasta contracts no diretório do projeto e crie um novo arquivo chamado **Registry.sol**‍

Em seguida, copie e cole o seguinte código do smart contract no arquivo:

O contract precisa ser compilado antes do deploy. No terminal, digite:

**npx hardhat compile**

## **3. Configurar uma carteira para zkSync era**

Não é necessário criar uma nova carteira, já que a zkSync Era suporta carteiras Ethereum existentes.

Portanto, qualquer carteira já existente, como a [Metamask](https://www.alchemy.com/dapps/metamask), pode ser usada.

**Nota: Não é recomendado usar uma carteira Ethereum pessoal que armazene investimentos ou economias, pois o procedimento de deploy requer a exportação da chave privada.**

## **4. Obter Goerli ETH de teste e fazer bridge para zkSync era**

Pode ser necessário ter test ether na testnet da zkSync Era para fazer o deploy do contract.

**Para obter test ether, faça bridge de Goerli ETH da carteira do deployer para sua instância na zkSync Era.**

- Para fazer isso, acesse o [faucet Goerli da Alchemy](https://goerlifaucet.com/) para obter ether na testnet Goerli.

- Crie uma conta gratuita na Alchemy antes de continuar.

- Em seguida, abra a Metamask e clique no endereço da carteira para copiá-lo.

- No site do faucet Goerli, cole o endereço da carteira e clique em **Send Me ETH**.

Em seguida, acesse a [bridge](https://goerli.portal.zksync.io/bridge) da zkSync Era.

Clique em "Connect via a browser wallet Metamask".

Selecione a carteira que será usada para o deploy do contract.

Clique em **MAX (ou insira uma quantidade de sua escolha, mas certifique-se de que seja pelo menos 0.1 [gETH](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one)) e clique em Deposit.**

**Nota**: Verifique se o campo no canto inferior direito mostra: **"zkSync Era Goerli".**

Enquanto aguarda a conclusão da bridge, finalize o deploy criando o script de deploy.

## **5. Criar um script de deploy e exportar a chave privada**

Em seguida, crie um script de deploy e exporte a chave privada da Metamask, copie a chave privada e faça o deploy do smart contract.

Veja como fazer:

#### **Criar um script de deploy**

De volta ao VSCode, renomeie a pasta scripts para **deploy e, dentro dela, crie um arquivo chamado deploy.ts.**

Depois disso, copie o seguinte código para o arquivo:

Os comentários, marcados com "//", explicam a lógica do código.

#### **Exportar a chave privada da MetaMask**

Na Metamask, abra a carteira que foi usada durante a bridge e exporte sua chave privada.

Clique nos três pontos verticais e depois em Account details, depois **Export private key.**

Digite a senha e copie a string revelada.

#### **Colar a chave privada e fazer o deploy do smart contract**

De volta ao arquivo deploy.ts, encontre a seguinte linha:

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

Cole a chave privada no lugar de **&lt;WALLET-PRIVATE-KEY&gt;.**

Certifique-se de que as aspas duplas **não** sejam apagadas.

Por fim, vá até o terminal do VScode e digite: **npx hardhat deploy-zksync**

## **6. Verificar o smart contract via block explorer**

Use o block explorer da testnet da zkSync Era para verificar o contract implantado.

Acesse o [block explorer.](https://goerli.explorer.zksync.io/) Na barra de busca, cole o endereço do contract implantado.

Quando o contract for encontrado, clique na aba **Contract** e depois em **Verify Smart Contract.**

Em seguida, preencha os detalhes necessários:

**Contract Name** deve ser **"Registry"**.

**Zksolc version** - v1.3.

Solc version - 0.8.17.

Tanto **Zksolc Version** quanto **Solc Version** podem ser obtidos no arquivo **hardhat.config.ts**.

No campo Enter the [Solidity](https://www.alchemy.com/overviews/solidity) Contract Code, cole o conteúdo do arquivo Registry.sol.

Clique em **Verify Smart Contract** para finalizar o processo.

‍**7. Interagir com o contract implantado na ZkSync Era**

No block explorer, encontre o contract novamente pelo endereço e clique na aba **Contract**.

Desta vez, o block explorer deve mostrar dois novos campos:

1. **Read** para as funções de leitura (getters)
1. Write para as funções de escrita (setters)

Como a visibilidade do mapping **personInfo** é definida como _public_, um método getter para ele é gerado automaticamente.

Certifique-se de que a carteira do deployer esteja conectada ao explorer. Clique em **addPerson.**

A seção vai se expandir, e dois novos campos vão aparecer - um para definir o nome da pessoa e outro para a idade dela.‍

Depois de preencher esses campos, clique em **Write** e confirme a transação.

Após a confirmação da transação, clique em personInfo e informe o nome da pessoa que acabou de ser adicionada.

A GUI deve retornar a idade da pessoa adicionada.‍
