Definindo o stack web3

intermediário1/8/2024, 2:50:04 AM
O artigo explora a aplicação e desenvolvimento de Web3 na blockchain.

Neste próximo segmento de Construindo em web3, o engenheiro de relações com desenvolvedores da Edge & Node, Nader Dabit, expande sobre o stack web3 e como os desenvolvedores podem conceituar os vários aspectos de construir em web3.


Em abril de 2021, fiz a transição para a web3 depois de ser um desenvolvedor tradicional full-stack por cerca de 10 anos. Enquanto mergulhava em todas essas novas tecnologias e ideias, a primeira coisa que eu queria saber era “o que é o stack da web3?”.

Ao construir uma aplicação web ou móvel tradicional, muitas vezes dependo de um punhado de blocos de construção para fazer o trabalho.

  1. Servidores de API / aplicativos (REST ou GraphQL)
  2. Camada de autenticação (gerenciada ou feita sob medida)
  3. Base de dados
  4. Frameworks, plataformas e bibliotecas do lado do cliente
  5. Armazenamento de arquivos

Usando esses componentes principais, consigo desenvolver a maioria dos tipos de aplicativos que gostaria, ou pelo menos chegar perto disso. Então, como isso se parecia no web3?

Acontece que a resposta para isso não é tão direta porque:

  1. O paradigma é completamente diferente em muitos aspectos
  2. As ferramentas, tecnologias e ecossistema web3 são menos maduros do que web2

Também foi mais difícil para mim entender como começar e executar, e construir, aplicações web3 porque eu estava abordando os problemas da mesma maneira que estava no mundo web2.

Depois de trabalhar, pesquisar, experimentar e construir coisas nos últimos 8 meses, gostaria de compartilhar o que aprendi.

O que é web3?

Antes de definirmos o stack web3, vamos tentar definir web3. Existem inúmeras definições dependendo de quem você perguntar, mas para mim eu achoistodefinição pontual:

Web3 é o conjunto de protocolos que permitem aplicações totalmente descentralizadas.

Com esta pilha de tecnologia descentralizada, podemos começar a construir aplicações descentralizadas que têm suas próprias implicações e características.

Algumas das características habilitadas pelo web3 são:

  • Infraestrutura web descentralizada
  • Propriedade (de dados, conteúdo e plataforma)
  • Pagamentos digitais nativos
  • Identidade auto-soberana
  • Infraestrutura distribuída, sem confiança & robusta
  • Back-ends abertos, públicos e componíveis

Embora algumas das aplicações construídas em pilhas tecnológicas descentralizadas substituirão seus predecessores, um novo paradigma de aplicativos também foi possibilitado pelos novos primitivos habilitados pelas blockchains.

Pagamentos digitais nativos e infraestrutura de back-end pública - como aprendizado de máquina, dispositivos móveis, realidade virtual e outros primitivos tecnológicos, plataformas e blocos de construção - permitem a criação de novos tipos de aplicativos, alguns dos quais ainda não foram imaginados.

Isso significa que tudo será substituído pelo web3? Não necessariamente. Embora eu ache que construir em uma pilha de tecnologia descentralizada seja uma escolha muito melhor para certos tipos de aplicativos - como quase qualquer decisão técnica, depende do que você está construindo.

Vamos agora começar a mergulhar na pilha web3, dividida neste conjunto de categorias:

  • Blockchain
  • Ambiente de desenvolvimento blockchain
  • Armazenamento de arquivos
  • Protocolos de dados off chain
  • API (indexação & consulta)
  • Identidade
  • Cliente (frameworks e bibliotecas)
  • Oráculos
  • Outros protocolos

Blockchain

Existem inúmeras blockchains nas quais você pode optar por construir. Não há uma única que seja "a melhor", em vez disso, você deve considerar os vários trade-offs entre elas.

Uma coisa que muitas vezes é importante para mim ao aprender algo novo é a ideia de aplicar oPrincípio de Paretopara o que estou aprendendo, ou seja, qual é a maneira mais eficiente de tirar o máximo proveito dessa quantidade de tempo e esforço. Seguindo essa ideia, posso obter a maior tração e momentum enquanto aprendo algo novo no menor tempo possível.

No mundo Blockchain, aprender Solidity e o EVM(ou Máquina Virtual Ethereum) pode ser a melhor aposta ao começar como desenvolvedor de blockchain. Usando esse conjunto de habilidades (e pilha de tecnologia), você pode construir não apenas para Ethereum, mas para outros Ethereum Layer 2s, sidechains e até mesmo para outras blockchains como Avalanche, Fantom e Celo.

Dito isso, Rust está começando a se tornar cada vez mais popular no mundo das blockchains, com Solana, NEAR, Polkadot e outros tendo suporte de primeira classe para Rust. Provavelmente, você não pode errar ao aprender qualquer um deles, mas para o iniciante, eu diria que Solidity ainda será a melhor escolha se alguém me perguntasse hoje.

Além desse conselho, aqui está uma amostra incompleta de blockchains que têm uma combinação sólida de tecnologia, utilidade, comunidade, momentum e viabilidade futura:

  • Ethereum- plataforma original de contrato inteligente
  • ZK rollups: ZKSync, Starknet, Hermez- Camadas Ethereum layer 2 de alta taxa de transferência, mas não nativamente compatíveis com EVM
  • Optimistic rollups: Arbitrum & Optimismo - Camadas 2 do Ethereum, compatíveis com EVM (saiba mais sobre as diferenças entre rollups otimistas e ZKaqui)
  • Polígono- Ethereum sidechain
  • Solana- alta capacidade de processamento, transações baratas, tempos de bloco rápidos, mas é mais difícil de aprender do que EVM (Rust)
  • NEAR- Blockchain de Camada 1, pode escrever contratos inteligentes em Rust ou Assemblyscript
  • Cosmos- um ecossistema de blockchains interoperáveis
  • Polkadot- plataforma de computação baseada em blockchain que permite que blockchains construídas sobre ela executem transações entre si, criando uma internet interconectada de blockchains
  • Aurora- EVM chain compatível em execução no protocolo NEAR.
  • Fantom- Camada 1 compatível com EVM
  • Avalanche- Camada 1 compatível com EVM
  • Celo- Camada 1 compatível com EVM, projetada para facilitar para qualquer pessoa com um smartphone enviar, receber e armazenar criptomoedas
  • Tezos- Camada 1 não compatível com EVM, muitos projetos de NFT estão usando isso

Ao interagir com uma rede, você precisará usar um ponto de extremidade RPC.

Existem algumas maneiras de fazer isso:

  1. Acesse um endpoint RPC público
  2. Executando seus próprios nós
  3. Acessando um provedor de nós como um serviço
  4. Acessando um provedor de nó descentralizado como um serviço

Os pontos finais públicos RPC são frequentemente fornecidos pela rede, mas para a maioria das dapps de produção, você vai querer aproveitar seus próprios pontos finais, pois eles não são estáveis ou recomendados para produção.

Existem alguns provedores de serviços RPC por aí, aqui estão alguns:

Também existe uma solução web3 / descentralizada, Rede de Bolso que parece estar ganhando força.

Qualquer uma destas opções provavelmente é uma boa aposta para interagir diretamente com sua rede.

Ambientes de desenvolvimento de blockchain

Para o desenvolvimento de EVM, existem alguns bons ambientes de desenvolvimento disponíveis:

  • Capacete(JavaScript) é uma opção mais recente, mas que está ganhando cada vez mais popularidade. Seus documentos são ótimos, as ferramentas e a experiência do desenvolvedor são polidas, e é o que tenho usado pessoalmente para construir dapps.
  • Trufa(JavaScript) é um conjunto de ferramentas para construir e desenvolver aplicativos na EVM. É maduro, testado em batalha e bem documentado. Já existe há algum tempo e muitos desenvolvedores o utilizam.
  • Foundryé um novo ambiente de desenvolvimento Solidity da Paradigm que mostra muito potencial. Destaques principais são a capacidade de escrever testes em Solidity, suporte para fuzzing e velocidade (é escrito em Rust). Escrevi uma introdução separada para ele aqui.
  • Brownieé uma estrutura de desenvolvimento e teste baseada em Python para contratos inteligentes para desenvolvimento Solidity / EVM.

Para o desenvolvimento da Solana, Âncoraestá se tornando rapidamente o ponto de entrada para novos desenvolvedores. Ele fornece um CLI para estruturar, construir e testar programas Solana, bem como bibliotecas de cliente que você pode usar para construir front-ends. Ele também inclui uma DSL que abstrai muitas das complexidades com as quais os desenvolvedores frequentemente se deparam quando começam a trabalhar com o desenvolvimento Solana e Rust.

Armazenamento de arquivos

Onde armazenamos imagens, vídeos e outros arquivos no web3? Armazenar algo tão grande na cadeia geralmente é proibitivamente caro, então provavelmente não queremos armazená-los lá.

Em vez disso, podemos usar um dos poucos protocolos de armazenamento de arquivos:

  • IPFS- protocolo de sistema de arquivos peer-to-peer
    • prós: é confiável, bem documentado com um grande ecossistema
    • cons: se os dados não forem fixados, podem ser perdidos
  • Arweave- permite que você armazene dados permanentemente, pagando uma única taxa de transação. Sou fã da Arweave e escrevi um post no blog sobre issoaqui.
  • Filecoin - da Protocol Labs, a mesma equipe que construiu o IPFS, é um protocolo projetado para fornecer um sistema de armazenamento de dados persistente. Existem um punhado de maneiraspara os desenvolvedores construírem no Filecoin, incluindoarmazenamento web3que é bem agradável.
  • Skynet - Ainda não o utilizei em produção, mas testei e parece funcionar bem. A API aquiparece ótimo. Tenho perguntas como por quanto tempo os dados são persistidos e a interoperabilidade do Skynet com outros protocolos.

Protocolos de dados off-chain

Além do armazenamento de arquivos e do armazenamento on-chain, você também pode precisar armazenar dados off-chain. Você pode usar esses tipos de soluções de maneira semelhante à forma como pode usar um banco de dados em uma pilha de tecnologia tradicional, mas em vez disso, eles são replicados em um número de nós em uma rede descentralizada e, portanto, mais confiáveis (pelo menos na teoria).

Algumas opções são:

  • Rede Cerâmica - uma plataforma descentralizada, de código aberto, para criar, hospedar e compartilhar dados. Ceramic também possui um bom protocolo de identidade sobre o qual falarei mais tarde. Provavelmente minha solução de armazenamento off-chain favorita no momento.Aqui estáuma demonstração bem legal.
  • TêxtilThreadDB- um banco de dados multi-partes construído em IPFS e Libp2p. Se eu entendi corretamente, pode estar passando por uma grande mudança de API no momento. Eu tentei e mostra alguma promessa, mas a documentação e o DX precisam de alguma melhoria.
  • GunDB- um banco de dados descentralizado, peer-to-peer. Gun existe há bastante tempo e algumas aplicações bastante interessantesforam construídos com isso.

Em termos de maturidade, minha opinião é que o ecossistema de soluções de armazenamento off-chain ainda não está onde precisa estar para desenvolver alguns dos casos de uso mais avançados que alguns desenvolvedores podem desejar. Alguns desafios aqui são dados em tempo real, detecção e resolução de conflitos, autorização de gravação, documentação e experiência geral do desenvolvedor.

Integrar soluções de dados offchain com protocolos blockchain é um dos últimos grandes obstáculos que precisamos superar antes de termos um stack de protocolo totalmente descentralizado capaz de suportar qualquer tipo de aplicativo.

API (indexação e consulta)

Existem muitas diferenças na maneira como interagimos e construímos em cima das blockchains em comparação com bancos de dados na pilha de tecnologia tradicional. Com blockchains, os dados não são armazenados em um formato que pode ser consumido diretamente por outras aplicações ou interfaces de forma eficiente ou fácil.

As blockchains são otimizadas para operações de escrita. Você frequentemente ouve falar da inovação centrada em transações por segundo, tempo de bloco e custo da transação. Os dados da blockchain são escritos em blocos ao longo do tempo, tornando qualquer operação que não seja de leitura básica impossível.

Na maioria das aplicações, você precisa de recursos como dados relacionais, classificação, filtragem, pesquisa de texto completo, paginação e muitos outros tipos de capacidades de consulta. Para fazer isso, os dados precisam ser indexados e organizados para uma recuperação eficiente.

Tradicionalmente, esse é o trabalho que os bancos de dados fazem na pilha de tecnologia centralizada, mas essa camada de indexação estava ausente na pilha web3.

O Gráficoé um protocolo para indexar e consultar dados de blockchain que torna esse processo muito mais fácil e oferece uma solução descentralizada para fazê-lo. Qualquer pessoa pode construir e publicar APIs GraphQL abertas, chamadas subgrafos, tornando os dados de blockchain fáceis de consultar.

Para saber mais sobre The Graph, confira a documentaçãoaquiou meu tutorialaqui.

Identidade

A identidade é um paradigma completamente diferente no web3. No web2, a autenticação é quase sempre baseada nas informações pessoais do usuário. Essas informações geralmente são coletadas por meio de um formulário ou um provedor de OAuth que pede ao usuário para entregar em troca de acesso à aplicação.

Em web3, a identidade gira completamente em torno da ideia de carteiras e criptografia de chave pública.

Embora o nome "carteira" cumpra o seu propósito, descobri que as pessoas novas no web3 acham a terminologia confusa no que se refere à autenticação e identidade. Espero que no futuro possamos descobrir outra forma de transmitir o que é uma carteira, pois combina aspectos financeiros, mas também identidade e reputação.

Como desenvolvedor, você precisará entender como acessar e interagir com a carteira e o endereço do usuário de várias maneiras.

Em um nível muito básico (e um requisito muito comum), você pode querer solicitar acesso à carteira do usuário. Para fazer isso, você geralmente poderá acessar a carteira do usuário no contexto da janela (navegador da web) ou usando algo como WalletConnectouAdaptador de Carteira da Solana.

Por exemplo, se eles tiverem uma carteira Ethereum disponível, você poderá acessar window.ethereum. O mesmo vale para Solana (window.solana), Arweave (window.arweaveWallet) e alguns outros. O WalletConnect é bom para web móvel e React Native, pois permite que os usuários autorizem o uso de suas carteiras móveis diretamente do dispositivo.

Se você deseja lidar com a autenticação por conta própria, você pode permitir que o usuário assine uma transação e então decodifique em algum lugar para autenticar o usuário, mas isso geralmente requer um servidor.Aqui é um exemplo de como isso pode parecer usando uma carteira EVM, e aquié um exemplo de como fazer isso com Solana / Phantom.

E quanto a gerenciar perfis de usuários de forma descentralizada?Rede Cerâmicaoferece o protocolo mais robusto e conjunto de ferramentas para gerenciar identidade descentralizada. Eles lançaram recentemente uma postagem de blogesboçando algumas de suas atualizações mais recentes e dando algumas diretrizes sobre como todas as ferramentas funcionam juntas. Eu começaria por aí e então explorariaseus documentospara obter uma compreensão de como começar a construir e considerar verificar o meu projeto de exemploaquique utiliza Cerâmicaself.id.

Se você quiser buscar um usuárioENSregistros de texto, a biblioteca ENSJS oferece uma ótima API para buscar dados do usuário:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const conteúdo = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDtambém parece promissor, mas ainda não tive a oportunidade de experimentá-lo.

Cerâmica e Abetoambos implementam oW3C DID especificidade, que também é algo que eu consideraria como um bloco de construção da web3. Dito isso, qualquer implementação centralizada de DIDs vai contra a ideia do que a especificação está tentando realizar.

Cliente

No que diz respeito aos frameworks JavaScript, você pode realmente construir com o que quiser, já que os SDKs blockchain do lado do cliente são na sua maioria independentes de frameworks. Dito isso, uma quantidade esmagadora de projetos e exemplos são construídos em React. Também existem algumas bibliotecas como Adaptador de Carteira Solanaque oferecem utilidades adicionais para o React, então eu diria que aprender ou estar familiarizado com o React provavelmente será uma jogada inteligente.

Para SDKs do lado do cliente no Ethereum, existe web3.jseethers.jsPara mim, Ethers é mais acessível e tem uma documentação melhor, embora o web3.js exista há mais tempo.

Em Solana, você provavelmente estará trabalhando com @solana/web3.jse / ouÂncora. Descobri que as bibliotecas de cliente do Anchor são minhas opções para a criação de programas Solana, já que estou usando o framework Anchor de qualquer maneira, e achei muito mais fácil de entender então @solana/web3.js.

Oráculos

Oracles permitem aos desenvolvedores acessar dados do mundo real & sistemas externos de dentro de um contrato inteligente.

Por exemplo, a maioria das aplicações financeiras requer conhecimento de dados do mundo real & eventos acontecendo off-chain, então os Oracles são especialmente importantes no DeFi.

Chainlinké um Oracle que permite acesso a dados do mundo real e computação off-chain, ao mesmo tempo que mantém as garantias de segurança e confiabilidade inerentes à tecnologia blockchain.

Fluxoé um oráculo cross-chain que fornece contratos inteligentes com acesso a feeds de dados economicamente seguros.

Outros protocolos

Radicleé um protocolo de colaboração de código descentralizado construído no Git. Poderia ser considerado uma versão descentralizada do GitHub.

Livepeeré uma rede descentralizada de streaming de vídeos. É maduro e amplamente utilizado, com mais de 70.000 GPUs ativos na rede.

Concluindo

Este post será um documento vivo que eu manterei atualizado à medida que aprendo, experimento e reúno feedback dos desenvolvedores que trabalham no web3.

Se você tiver algum feedback ou ideias sobre algo que estou perdendo aqui, por favor, entre em contato e compartilhe seus pensamentos comigo. É emocionante ver toda a atividade acontecendo em torno do web3, à medida que os desenvolvedores estão entrando e se envolvendo. Enquanto a infraestrutura ainda está evoluindo, a visão de construir protocolos e aplicativos verdadeiramente descentralizados que permitam às pessoas coordenar sem ter que ceder poder e controle para grandes empresas é importante e estamos perto de tornar essa visão uma realidade.

Disclaimer:

  1. Este artigo é reproduzido a partir de [ edgeandnode]. Todos os direitos autorais pertencem ao autor original [Nader Dabit]. Se houver objeções a esta reimpressão, entre em contato com oGate Aprendaequipe, e eles vão lidar com isso prontamente.
  2. Isenção de responsabilidade: As opiniões expressas neste artigo são unicamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

Definindo o stack web3

intermediário1/8/2024, 2:50:04 AM
O artigo explora a aplicação e desenvolvimento de Web3 na blockchain.

Neste próximo segmento de Construindo em web3, o engenheiro de relações com desenvolvedores da Edge & Node, Nader Dabit, expande sobre o stack web3 e como os desenvolvedores podem conceituar os vários aspectos de construir em web3.


Em abril de 2021, fiz a transição para a web3 depois de ser um desenvolvedor tradicional full-stack por cerca de 10 anos. Enquanto mergulhava em todas essas novas tecnologias e ideias, a primeira coisa que eu queria saber era “o que é o stack da web3?”.

Ao construir uma aplicação web ou móvel tradicional, muitas vezes dependo de um punhado de blocos de construção para fazer o trabalho.

  1. Servidores de API / aplicativos (REST ou GraphQL)
  2. Camada de autenticação (gerenciada ou feita sob medida)
  3. Base de dados
  4. Frameworks, plataformas e bibliotecas do lado do cliente
  5. Armazenamento de arquivos

Usando esses componentes principais, consigo desenvolver a maioria dos tipos de aplicativos que gostaria, ou pelo menos chegar perto disso. Então, como isso se parecia no web3?

Acontece que a resposta para isso não é tão direta porque:

  1. O paradigma é completamente diferente em muitos aspectos
  2. As ferramentas, tecnologias e ecossistema web3 são menos maduros do que web2

Também foi mais difícil para mim entender como começar e executar, e construir, aplicações web3 porque eu estava abordando os problemas da mesma maneira que estava no mundo web2.

Depois de trabalhar, pesquisar, experimentar e construir coisas nos últimos 8 meses, gostaria de compartilhar o que aprendi.

O que é web3?

Antes de definirmos o stack web3, vamos tentar definir web3. Existem inúmeras definições dependendo de quem você perguntar, mas para mim eu achoistodefinição pontual:

Web3 é o conjunto de protocolos que permitem aplicações totalmente descentralizadas.

Com esta pilha de tecnologia descentralizada, podemos começar a construir aplicações descentralizadas que têm suas próprias implicações e características.

Algumas das características habilitadas pelo web3 são:

  • Infraestrutura web descentralizada
  • Propriedade (de dados, conteúdo e plataforma)
  • Pagamentos digitais nativos
  • Identidade auto-soberana
  • Infraestrutura distribuída, sem confiança & robusta
  • Back-ends abertos, públicos e componíveis

Embora algumas das aplicações construídas em pilhas tecnológicas descentralizadas substituirão seus predecessores, um novo paradigma de aplicativos também foi possibilitado pelos novos primitivos habilitados pelas blockchains.

Pagamentos digitais nativos e infraestrutura de back-end pública - como aprendizado de máquina, dispositivos móveis, realidade virtual e outros primitivos tecnológicos, plataformas e blocos de construção - permitem a criação de novos tipos de aplicativos, alguns dos quais ainda não foram imaginados.

Isso significa que tudo será substituído pelo web3? Não necessariamente. Embora eu ache que construir em uma pilha de tecnologia descentralizada seja uma escolha muito melhor para certos tipos de aplicativos - como quase qualquer decisão técnica, depende do que você está construindo.

Vamos agora começar a mergulhar na pilha web3, dividida neste conjunto de categorias:

  • Blockchain
  • Ambiente de desenvolvimento blockchain
  • Armazenamento de arquivos
  • Protocolos de dados off chain
  • API (indexação & consulta)
  • Identidade
  • Cliente (frameworks e bibliotecas)
  • Oráculos
  • Outros protocolos

Blockchain

Existem inúmeras blockchains nas quais você pode optar por construir. Não há uma única que seja "a melhor", em vez disso, você deve considerar os vários trade-offs entre elas.

Uma coisa que muitas vezes é importante para mim ao aprender algo novo é a ideia de aplicar oPrincípio de Paretopara o que estou aprendendo, ou seja, qual é a maneira mais eficiente de tirar o máximo proveito dessa quantidade de tempo e esforço. Seguindo essa ideia, posso obter a maior tração e momentum enquanto aprendo algo novo no menor tempo possível.

No mundo Blockchain, aprender Solidity e o EVM(ou Máquina Virtual Ethereum) pode ser a melhor aposta ao começar como desenvolvedor de blockchain. Usando esse conjunto de habilidades (e pilha de tecnologia), você pode construir não apenas para Ethereum, mas para outros Ethereum Layer 2s, sidechains e até mesmo para outras blockchains como Avalanche, Fantom e Celo.

Dito isso, Rust está começando a se tornar cada vez mais popular no mundo das blockchains, com Solana, NEAR, Polkadot e outros tendo suporte de primeira classe para Rust. Provavelmente, você não pode errar ao aprender qualquer um deles, mas para o iniciante, eu diria que Solidity ainda será a melhor escolha se alguém me perguntasse hoje.

Além desse conselho, aqui está uma amostra incompleta de blockchains que têm uma combinação sólida de tecnologia, utilidade, comunidade, momentum e viabilidade futura:

  • Ethereum- plataforma original de contrato inteligente
  • ZK rollups: ZKSync, Starknet, Hermez- Camadas Ethereum layer 2 de alta taxa de transferência, mas não nativamente compatíveis com EVM
  • Optimistic rollups: Arbitrum & Optimismo - Camadas 2 do Ethereum, compatíveis com EVM (saiba mais sobre as diferenças entre rollups otimistas e ZKaqui)
  • Polígono- Ethereum sidechain
  • Solana- alta capacidade de processamento, transações baratas, tempos de bloco rápidos, mas é mais difícil de aprender do que EVM (Rust)
  • NEAR- Blockchain de Camada 1, pode escrever contratos inteligentes em Rust ou Assemblyscript
  • Cosmos- um ecossistema de blockchains interoperáveis
  • Polkadot- plataforma de computação baseada em blockchain que permite que blockchains construídas sobre ela executem transações entre si, criando uma internet interconectada de blockchains
  • Aurora- EVM chain compatível em execução no protocolo NEAR.
  • Fantom- Camada 1 compatível com EVM
  • Avalanche- Camada 1 compatível com EVM
  • Celo- Camada 1 compatível com EVM, projetada para facilitar para qualquer pessoa com um smartphone enviar, receber e armazenar criptomoedas
  • Tezos- Camada 1 não compatível com EVM, muitos projetos de NFT estão usando isso

Ao interagir com uma rede, você precisará usar um ponto de extremidade RPC.

Existem algumas maneiras de fazer isso:

  1. Acesse um endpoint RPC público
  2. Executando seus próprios nós
  3. Acessando um provedor de nós como um serviço
  4. Acessando um provedor de nó descentralizado como um serviço

Os pontos finais públicos RPC são frequentemente fornecidos pela rede, mas para a maioria das dapps de produção, você vai querer aproveitar seus próprios pontos finais, pois eles não são estáveis ou recomendados para produção.

Existem alguns provedores de serviços RPC por aí, aqui estão alguns:

Também existe uma solução web3 / descentralizada, Rede de Bolso que parece estar ganhando força.

Qualquer uma destas opções provavelmente é uma boa aposta para interagir diretamente com sua rede.

Ambientes de desenvolvimento de blockchain

Para o desenvolvimento de EVM, existem alguns bons ambientes de desenvolvimento disponíveis:

  • Capacete(JavaScript) é uma opção mais recente, mas que está ganhando cada vez mais popularidade. Seus documentos são ótimos, as ferramentas e a experiência do desenvolvedor são polidas, e é o que tenho usado pessoalmente para construir dapps.
  • Trufa(JavaScript) é um conjunto de ferramentas para construir e desenvolver aplicativos na EVM. É maduro, testado em batalha e bem documentado. Já existe há algum tempo e muitos desenvolvedores o utilizam.
  • Foundryé um novo ambiente de desenvolvimento Solidity da Paradigm que mostra muito potencial. Destaques principais são a capacidade de escrever testes em Solidity, suporte para fuzzing e velocidade (é escrito em Rust). Escrevi uma introdução separada para ele aqui.
  • Brownieé uma estrutura de desenvolvimento e teste baseada em Python para contratos inteligentes para desenvolvimento Solidity / EVM.

Para o desenvolvimento da Solana, Âncoraestá se tornando rapidamente o ponto de entrada para novos desenvolvedores. Ele fornece um CLI para estruturar, construir e testar programas Solana, bem como bibliotecas de cliente que você pode usar para construir front-ends. Ele também inclui uma DSL que abstrai muitas das complexidades com as quais os desenvolvedores frequentemente se deparam quando começam a trabalhar com o desenvolvimento Solana e Rust.

Armazenamento de arquivos

Onde armazenamos imagens, vídeos e outros arquivos no web3? Armazenar algo tão grande na cadeia geralmente é proibitivamente caro, então provavelmente não queremos armazená-los lá.

Em vez disso, podemos usar um dos poucos protocolos de armazenamento de arquivos:

  • IPFS- protocolo de sistema de arquivos peer-to-peer
    • prós: é confiável, bem documentado com um grande ecossistema
    • cons: se os dados não forem fixados, podem ser perdidos
  • Arweave- permite que você armazene dados permanentemente, pagando uma única taxa de transação. Sou fã da Arweave e escrevi um post no blog sobre issoaqui.
  • Filecoin - da Protocol Labs, a mesma equipe que construiu o IPFS, é um protocolo projetado para fornecer um sistema de armazenamento de dados persistente. Existem um punhado de maneiraspara os desenvolvedores construírem no Filecoin, incluindoarmazenamento web3que é bem agradável.
  • Skynet - Ainda não o utilizei em produção, mas testei e parece funcionar bem. A API aquiparece ótimo. Tenho perguntas como por quanto tempo os dados são persistidos e a interoperabilidade do Skynet com outros protocolos.

Protocolos de dados off-chain

Além do armazenamento de arquivos e do armazenamento on-chain, você também pode precisar armazenar dados off-chain. Você pode usar esses tipos de soluções de maneira semelhante à forma como pode usar um banco de dados em uma pilha de tecnologia tradicional, mas em vez disso, eles são replicados em um número de nós em uma rede descentralizada e, portanto, mais confiáveis (pelo menos na teoria).

Algumas opções são:

  • Rede Cerâmica - uma plataforma descentralizada, de código aberto, para criar, hospedar e compartilhar dados. Ceramic também possui um bom protocolo de identidade sobre o qual falarei mais tarde. Provavelmente minha solução de armazenamento off-chain favorita no momento.Aqui estáuma demonstração bem legal.
  • TêxtilThreadDB- um banco de dados multi-partes construído em IPFS e Libp2p. Se eu entendi corretamente, pode estar passando por uma grande mudança de API no momento. Eu tentei e mostra alguma promessa, mas a documentação e o DX precisam de alguma melhoria.
  • GunDB- um banco de dados descentralizado, peer-to-peer. Gun existe há bastante tempo e algumas aplicações bastante interessantesforam construídos com isso.

Em termos de maturidade, minha opinião é que o ecossistema de soluções de armazenamento off-chain ainda não está onde precisa estar para desenvolver alguns dos casos de uso mais avançados que alguns desenvolvedores podem desejar. Alguns desafios aqui são dados em tempo real, detecção e resolução de conflitos, autorização de gravação, documentação e experiência geral do desenvolvedor.

Integrar soluções de dados offchain com protocolos blockchain é um dos últimos grandes obstáculos que precisamos superar antes de termos um stack de protocolo totalmente descentralizado capaz de suportar qualquer tipo de aplicativo.

API (indexação e consulta)

Existem muitas diferenças na maneira como interagimos e construímos em cima das blockchains em comparação com bancos de dados na pilha de tecnologia tradicional. Com blockchains, os dados não são armazenados em um formato que pode ser consumido diretamente por outras aplicações ou interfaces de forma eficiente ou fácil.

As blockchains são otimizadas para operações de escrita. Você frequentemente ouve falar da inovação centrada em transações por segundo, tempo de bloco e custo da transação. Os dados da blockchain são escritos em blocos ao longo do tempo, tornando qualquer operação que não seja de leitura básica impossível.

Na maioria das aplicações, você precisa de recursos como dados relacionais, classificação, filtragem, pesquisa de texto completo, paginação e muitos outros tipos de capacidades de consulta. Para fazer isso, os dados precisam ser indexados e organizados para uma recuperação eficiente.

Tradicionalmente, esse é o trabalho que os bancos de dados fazem na pilha de tecnologia centralizada, mas essa camada de indexação estava ausente na pilha web3.

O Gráficoé um protocolo para indexar e consultar dados de blockchain que torna esse processo muito mais fácil e oferece uma solução descentralizada para fazê-lo. Qualquer pessoa pode construir e publicar APIs GraphQL abertas, chamadas subgrafos, tornando os dados de blockchain fáceis de consultar.

Para saber mais sobre The Graph, confira a documentaçãoaquiou meu tutorialaqui.

Identidade

A identidade é um paradigma completamente diferente no web3. No web2, a autenticação é quase sempre baseada nas informações pessoais do usuário. Essas informações geralmente são coletadas por meio de um formulário ou um provedor de OAuth que pede ao usuário para entregar em troca de acesso à aplicação.

Em web3, a identidade gira completamente em torno da ideia de carteiras e criptografia de chave pública.

Embora o nome "carteira" cumpra o seu propósito, descobri que as pessoas novas no web3 acham a terminologia confusa no que se refere à autenticação e identidade. Espero que no futuro possamos descobrir outra forma de transmitir o que é uma carteira, pois combina aspectos financeiros, mas também identidade e reputação.

Como desenvolvedor, você precisará entender como acessar e interagir com a carteira e o endereço do usuário de várias maneiras.

Em um nível muito básico (e um requisito muito comum), você pode querer solicitar acesso à carteira do usuário. Para fazer isso, você geralmente poderá acessar a carteira do usuário no contexto da janela (navegador da web) ou usando algo como WalletConnectouAdaptador de Carteira da Solana.

Por exemplo, se eles tiverem uma carteira Ethereum disponível, você poderá acessar window.ethereum. O mesmo vale para Solana (window.solana), Arweave (window.arweaveWallet) e alguns outros. O WalletConnect é bom para web móvel e React Native, pois permite que os usuários autorizem o uso de suas carteiras móveis diretamente do dispositivo.

Se você deseja lidar com a autenticação por conta própria, você pode permitir que o usuário assine uma transação e então decodifique em algum lugar para autenticar o usuário, mas isso geralmente requer um servidor.Aqui é um exemplo de como isso pode parecer usando uma carteira EVM, e aquié um exemplo de como fazer isso com Solana / Phantom.

E quanto a gerenciar perfis de usuários de forma descentralizada?Rede Cerâmicaoferece o protocolo mais robusto e conjunto de ferramentas para gerenciar identidade descentralizada. Eles lançaram recentemente uma postagem de blogesboçando algumas de suas atualizações mais recentes e dando algumas diretrizes sobre como todas as ferramentas funcionam juntas. Eu começaria por aí e então explorariaseus documentospara obter uma compreensão de como começar a construir e considerar verificar o meu projeto de exemploaquique utiliza Cerâmicaself.id.

Se você quiser buscar um usuárioENSregistros de texto, a biblioteca ENSJS oferece uma ótima API para buscar dados do usuário:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const conteúdo = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDtambém parece promissor, mas ainda não tive a oportunidade de experimentá-lo.

Cerâmica e Abetoambos implementam oW3C DID especificidade, que também é algo que eu consideraria como um bloco de construção da web3. Dito isso, qualquer implementação centralizada de DIDs vai contra a ideia do que a especificação está tentando realizar.

Cliente

No que diz respeito aos frameworks JavaScript, você pode realmente construir com o que quiser, já que os SDKs blockchain do lado do cliente são na sua maioria independentes de frameworks. Dito isso, uma quantidade esmagadora de projetos e exemplos são construídos em React. Também existem algumas bibliotecas como Adaptador de Carteira Solanaque oferecem utilidades adicionais para o React, então eu diria que aprender ou estar familiarizado com o React provavelmente será uma jogada inteligente.

Para SDKs do lado do cliente no Ethereum, existe web3.jseethers.jsPara mim, Ethers é mais acessível e tem uma documentação melhor, embora o web3.js exista há mais tempo.

Em Solana, você provavelmente estará trabalhando com @solana/web3.jse / ouÂncora. Descobri que as bibliotecas de cliente do Anchor são minhas opções para a criação de programas Solana, já que estou usando o framework Anchor de qualquer maneira, e achei muito mais fácil de entender então @solana/web3.js.

Oráculos

Oracles permitem aos desenvolvedores acessar dados do mundo real & sistemas externos de dentro de um contrato inteligente.

Por exemplo, a maioria das aplicações financeiras requer conhecimento de dados do mundo real & eventos acontecendo off-chain, então os Oracles são especialmente importantes no DeFi.

Chainlinké um Oracle que permite acesso a dados do mundo real e computação off-chain, ao mesmo tempo que mantém as garantias de segurança e confiabilidade inerentes à tecnologia blockchain.

Fluxoé um oráculo cross-chain que fornece contratos inteligentes com acesso a feeds de dados economicamente seguros.

Outros protocolos

Radicleé um protocolo de colaboração de código descentralizado construído no Git. Poderia ser considerado uma versão descentralizada do GitHub.

Livepeeré uma rede descentralizada de streaming de vídeos. É maduro e amplamente utilizado, com mais de 70.000 GPUs ativos na rede.

Concluindo

Este post será um documento vivo que eu manterei atualizado à medida que aprendo, experimento e reúno feedback dos desenvolvedores que trabalham no web3.

Se você tiver algum feedback ou ideias sobre algo que estou perdendo aqui, por favor, entre em contato e compartilhe seus pensamentos comigo. É emocionante ver toda a atividade acontecendo em torno do web3, à medida que os desenvolvedores estão entrando e se envolvendo. Enquanto a infraestrutura ainda está evoluindo, a visão de construir protocolos e aplicativos verdadeiramente descentralizados que permitam às pessoas coordenar sem ter que ceder poder e controle para grandes empresas é importante e estamos perto de tornar essa visão uma realidade.

Disclaimer:

  1. Este artigo é reproduzido a partir de [ edgeandnode]. Todos os direitos autorais pertencem ao autor original [Nader Dabit]. Se houver objeções a esta reimpressão, entre em contato com oGate Aprendaequipe, e eles vão lidar com isso prontamente.
  2. Isenção de responsabilidade: As opiniões expressas neste artigo são unicamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!