Blog

Como contratar desenvolvedores Web3?

11 de outubro de 2022
5 min de leitura
 
Como contratar desenvolvedores Web3?

Como a Web3 é diferente da arquitetura clássica

Você provavelmente já sabe que Web3 significa aplicativos descentralizados. Ao recrutar desenvolvedores de blockchain, você precisará entender as principais diferenças entre a Web3 e a arquitetura clássica. 

Front-end e back-end

Quanto à Web2, na Web3 você ainda tem desenvolvedores de front-end e back-end. Os aplicativos de front-end basicamente fornecem um gateway entre os navegadores e a interface de usuário do seu aplicativo e o blockchain. No mundo Web2, você teria desenvolvedores ReactJS/AngularJS criando um aplicativo que se conecta por meio de uma API REST ou GraphQL a um aplicativo de back-end. 

No Web3, o back-end é um aplicativo distribuído que é executado em contratos inteligentes. Contratos inteligentes são pequenos programas que são executados em uma rede distribuída de nós. Cada execução de um contrato inteligente custa taxas (gás). Os desenvolvedores de back-end do Web3 geralmente precisam dominar a Solidity, uma linguagem descentralizada para criar contratos inteligentes. É uma linguagem complexa que não pode ser dominada rapidamente, sendo necessário pelo menos um ano de experiência para se tornar um desenvolvedor de Web3 eficiente.

Para interagir com o blockchain, um desenvolvedor Web3 terá de usar Gateways HTTP (por exemplo, Infura, Alchemy e Quicknode), mas essa interação será somente de leitura. Se quiser gravar dados no blockchain, precisará conectar uma carteira (como a Metamask) e usar uma extensão de navegador, que injetará algum javascript em cada página que você mostrar aos seus usuários, autenticando-os no blockchain e oferecendo uma maneira de colocar dados lá. 

Contratar desenvolvedores Web3

Pilha Web3 para dominar

A pilha Web3 é muito diferente dos aplicativos clássicos da Web2. Não se surpreenda com bibliotecas e línguas absolutamente desconhecidas!

Primeiro, você precisa entender que há várias tecnologias de blockchain divididas entre as que são executadas nas máquinas virtuais Ethereum (EVMs) e nas outras (não EVMs)

Exemplos de blockchain de EVM

  • Ethereum - plataforma de contrato inteligente EVM original
  • Polygon - sidechain de Ethereum
  • Arbitrum - blockchain de camada 2 usando rollups otimistas e provas de fraude em várias rodadas
  • Otimismo - blockchain de camada 2 usando rollups otimistas e provas de fraude de rodada única
  • Hermez - Rede ZK rollup Ethereum Layer 2 gerenciada pela Polygon
  • ZKSync - Rede ZK rollup Ethereum Layer 2 usando SNARKs
  • Starknet - Rede de camada 2 da ZK rollup Ethereum usando STARKs
  • Avalanche - Camada 1 compatível com EVM
  • Cronos - Camada 1 compatível com EVM

Para desenvolver a EVM blockchain, será necessário que seu desenvolvedor web3 de back-end domine um dos seguintes ambientes de desenvolvimento:

  • Hardhat 
  • Truffle (na verdade, três ferramentas para desenvolvedores: Truffle para desenvolvimento e teste, Ganache para criar blockchains locais e Drizzle para front-end)
  • Brownie para aqueles que preferem python

Exemplos de blockchain não-EVM

  • Flow - Camada 1 usando Cadence, a linguagem de programação orientada a recursos nativa do Flow
  • NEAR - Camada 1 usando Rust ou Assemblyscript para contratos inteligentes
  • Solana - Camada 1 usando Rust C, C++ para contratos inteligentes
  • Terra - Camada 1 usando Rust para contratos inteligentes

 Outras tecnologias que podem ser obrigatórias para um candidato à Web3

  • Web3 de back-end, criando contratos inteligentes: Solidez
  • Experimente rapidamente o Solidity: Scafold ETH
  • React Webhooks no blockchain: Wagmi
  • Gateways HTTP: Infura, Alchemy, Quicknode
  • Conexão de carteira: Wagmi ou Rainbowkit
  • Conectar Ethereum: Ethers.js, Web3.js 
  • Armazenamento descentralizado: IPFS ou Swarm

Web3 CI/CD e testes

Ao contrário dos aplicativos da Web padrão, que podem simular facilmente um fluxo de trabalho do usuário para testes em grande escala, os aplicativos da Web3 enfrentam vários desafios. Um dos principais desafios é que eles funcionam em um ambiente em constante evolução, onde cada transação deve passar por várias camadas de aprovação antes de ser finalizada. Outro problema é que os aplicativos web3 exigem que o usuário faça o download de um aplicativo cliente separado, o que geralmente requer um terceiro para verificar as transações.

No ecossistema de blockchain da Ethereum, você pode testar contratos inteligentes com Foundry, Dapptools ou Hardhat, que geralmente também fornecem um tempo de execução da Máquina Virtual Ethereum (EVM) para que você interaja com os contratos inteligentes localmente. De maneira semelhante, o Jest e o Mocha são comumente usados para testar aplicativos da Web.

Para testar aplicativos Web3, o desenvolvedor precisará adotar três estratégias possíveis:

  • Imitar o usuário
  • Imitar a pilha
  • Imitar o fluxo de trabalho

Imitar o usuário

Podemos usar um provedor Burner no mundo Ethereum. Originalmente apresentado por Austin Griffith, um provedor Burner é uma carteira Ethereum alimentada por uma chave privada armazenada no armazenamento do navegador. Ao ter o provedor armazenado localmente, é possível assinar transações rapidamente como um usuário "ao vivo", o que, embora não seja ideal para ativos digitais reais, é ótimo para o desenvolvimento local e, sim, para testes de ponta a ponta também.

Imitar a pilha

Dependendo da blockchain em questão, essa pode ser uma tarefa difícil. Como mencionado anteriormente, na Ethereum, há muitas ferramentas para fazer isso acontecer, graças à vibrante comunidade em torno do projeto. Para o nosso exemplo, usaremos o Hardhat, que é capaz de girar um nó compatível com EVM, expondo uma série de chamadas RPC** que podem nos ajudar a falsificar até mesmo um usuário existente. Além disso, criaremos um subgráfico TheGraph, usado pelo nosso aplicativo de demonstração para expor um servidor GraphQL para consulta.

Imitar o fluxo de trabalho

A última etapa é imitar o fluxo de trabalho do seu aplicativo. Isso pode ser feito interagindo com o contrato inteligente por meio da interface de usuário (UI) frontal. Quaisquer erros em sua UI devem ser detectados por seus testes de integração. Se você ignorar sua própria UI, todo o teste se tornará inútil, pois a conexão entre o contrato inteligente e a UI é o que estamos tentando testar.

Existem alguns executores de teste de ponta a ponta, como o Cypress, mas eu gosto de usar o Playwright. Para imitar o fluxo de trabalho do seu usuário, um teste do Playwright seria mais ou menos assim (o código completo está disponível aqui).

Perguntas da entrevista da Web3

Quais são os padrões comuns de contratos inteligentes?

  • ERC-20: Padrão de token
  • ERC-165: Um padrão para publicar e detectar quais interfaces um contrato inteligente implementa.
  • ERC-721: padrão de token não fungível
  • ERC-1155: Padrão de múltiplos tokens

Quanto custa uma simples transação de Ethereum?

  • Uma simples transferência de valor requer 21.000 gases

O que é um ABI?

  • ABI é um acrônimo de Application Binary Interface (Interface Binária de Aplicativo)
  • A ABI é a interface para interagir com nosso contrato inteligente
  • A ABI pode ser gerada a partir do código-fonte do seu contrato inteligente (você precisa compilá-lo)

Por que é difícil gerar números aleatórios em um contrato inteligente?

  • Os contratos do Solidity são determinísticos. Qualquer pessoa que descubra como seu contrato produz aleatoriedade pode antecipar seus resultados e usar essas informações para explorar seu aplicativo

Em quais dos dois cenários uma função de fallback (definida como payable) é chamada no Solidity?

  • Um contrato recebe apenas Ether e nenhum dado (msg.data)
  • Nenhum nome de função corresponde à função chamada

Qual é a diferença entre ERC e EIP?

  • A Solicitação de comentários da Ethereum (ERC) define padrões para o uso da Ethereum
  • As propostas de aprimoramento do Ethereum (EIP) melhoram o próprio protocolo Ethereum

Liste e explique as partes da memória do EVM. A memória de um EVM é dividida em três tipos:

Armazenamento:

  • Os valores de armazenamento são armazenados permanentemente na rede Blockchain
  • É extremamente caro

Memória:

  • A memória é um armazenamento temporário modificável
  • Ele pode ser acessado somente durante a execução do contrato. Quando a execução é concluída, seus dados são perdidos

Pilha:

  • Uma pilha é um armazenamento temporário e não modificável.
  • Aqui, quando a execução é concluída, o conteúdo é perdido.

Em que circunstâncias você usaria o novo opcode CREATE2 para implantar um contrato?

  • Quando você precisa saber o endereço que o contrato futuro com um determinado bytecode usará antes de implantá-lo de fato.

Se você quiser usar o delegateCall para chamar uma função de interface, como você calcula a assinatura da função?

  • São os primeiros 4 bytes do hash keccak256 de sua assinatura canônica, ou theInstance.theFunction.selector.

Como você pode enviar Ether para um contrato que não aceita Ether (ou seja, não há função de fallback ou a função de fallback sempre é revertida)?

  • Use a autodestruição, pois ela não executa a função de fallback.

Onde encontrar os melhores desenvolvedores de Web3?

Os países do Leste Europeu (Geórgia, Ucrânia, Polônia, Armênia etc.) têm o maior número de desenvolvedores experientes de front-end e back-end. A maioria dos desenvolvedores pedirá para trabalhar remotamente e isso é bom quando você cria um aplicativo descentralizado!

A code.store desenvolveu uma experiência única na busca, contratação e pagamento de desenvolvedores Web3 remotos. Nossos testes de avaliação exclusivos incluem mais de 50 perguntas. Realizamos uma análise abrangente das experiências anteriores de cada candidato, sua contribuição individual para esses projetos e verificações de referências.

Compartilhe esta publicação
 
Recrutamento

Você também pode ler

API
Desempenho
Conteúdo
SEO
Dados
Aplicativo do consumidor
Engenharia de software
On-premises
Desenvolvimento móvel
ERP
Comércio eletrônico
Recrutamento
Nuvem
Migração de conteúdo
IA
Front-end
CMS
Sem cabeça
Backend
Pouco código
Aplicativos de negócios
IA de conversão
Educação
Mídia e publicação
Assistência médica
Serviços financeiros
Grandes empresas
Início