Pular para o conteúdo
0%

Como começar a desenvolver no zkSync (2025)

Petar Todorov headshot

Escrito por Petar Todorov

Publicado em 5 de maio de 20235 min de leitura

A Matter Labs agora tem uma representante na corrida contra a Scroll e a Polygon para operar o primeiro EVM de conhecimento zero do mundozkSync Era.

Lançada em março de 2023, zkSync Era é um ZK Rollup compatível com EVM que utiliza provas de conhecimento zero 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, 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. 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, a Era introduz o conceito de 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 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 (Integrated Development Environment) com os plugins necessários
  • Um gerenciador de pacotes (NPM ou Yarn)
  • 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 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, 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 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 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) 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("<WALLET-PRIVATE-KEY>");**

Cole a chave privada no lugar de <WALLET-PRIVATE-KEY>.

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. 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 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)
  2. 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.‍

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.