Definir o stack web3

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

Neste próximo segmento de Construção na web3, o engenheiro de relações com desenvolvedores da Edge & Node, Nader Dabit, expande sobre o stack web3 e como os desenvolvedores podem conceptualizar as várias facetas da construção na web3.


Transitei para a web3 em abril de 2021 depois de ser um desenvolvedor full-stack tradicional 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 concluir o trabalho.

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

Usando esses componentes principais, consigo desenvolver a maioria dos tipos de aplicações que gostaria, ou pelo menos chegar lá na maioria das vezes. Então, como isso se parecia no web3?

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

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

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

Depois de trabalhar, pesquisar, experimentar e construir coisas ao longo dos últimos 8 meses, gostaria de partilhar o que aprendi.

O que é web3?

Antes de definirmos o stack web3, vamos tentar definir o web3. Existem inúmeras definições dependendo de quem perguntar, mas para mim eu encontro istodefinição spot on:

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 as suas próprias implicações e características específicas.

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 de tecnologia descentralizada substituam seus predecessores, um novo paradigma de aplicativos também foi possibilitado pelas novas primitivas habilitadas 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 tipos inteiramente novos de aplicações, algumas das quais ainda não foram imaginadas.

Isso significa que tudo vai ser substituído por web3? Não necessariamente. Embora eu ache que construir em uma pilha de tecnologia descentralizada seja uma escolha muito melhor para certos tipos de aplicações - 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 de blockchain
  • Armazenamento de ficheiros
  • Protocolos de dados off-chain
  • API (indexação & consulta)
  • Identidade
  • Cliente (estruturas e bibliotecas)
  • Oráculos
  • Outros protocolos

Blockchain

Existem inúmeras blockchains em que pode escolher construir. Não há uma única que seja "a melhor", em vez disso, deve considerar os vários compromissos 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 a aprender, ou seja, qual é a forma mais eficiente de tirar o máximo partido desse tempo e esforço. Seguindo esta ideia, posso obter a maior tração e momentum ao aprender algo novo no menor tempo possível.

No mundo da Blockchain, aprender Solidity e o EVM(ou Ethereum Virtual Machine) pode ser a melhor aposta ao começar como desenvolvedor de blockchain. Usando este conjunto de habilidades (e pilha tecnológica), você pode construir não apenas para Ethereum, mas também para outras camadas 2 do Ethereum, sidechains e até mesmo outras blockchains como Avalanche, Fantom e Celo.

Dito isto, o Rust está a começar a tornar-se cada vez mais popular no mundo da blockchain, com Solana, NEAR, Polkadot e outros a terem suporte de primeira classe para Rust. Provavelmente, não se 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 sólida combinação de tecnologia, utilidade, comunidade, momentum e viabilidade futura:

  • Ethereum- plataforma original de contrato inteligente
  • ZK rollups: ZKSync, Starknet, Hermez- Camadas 2 de alto rendimento Ethereum, mas não nativamente compatíveis com EVM
  • Rollups otimistas: Arbitrum & Optimismo - Camadas Ethereum 2, compatíveis com EVM (saiba mais sobre as diferenças entre rollups otimistas e ZKaqui)
  • Polígono- Sidechain Ethereum
  • Solana- alta taxa de transferência, transações baratas, tempos de bloco rápidos, mas é mais difícil de aprender do que EVM (Rust)
  • NEAR- Camada 1 blockchain, 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 em cima dela executem transações entre si, criando uma internet interligada de blockchains
  • Aurora- Cadeia compatível com EVM 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 o envio, recebimento e armazenamento de criptomoedas para qualquer pessoa com um smartphone
  • Tezos- Camada 1 não compatível com EVM, muitos projetos NFT a estão a usar

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

Existem algumas maneiras de fazer isto:

  1. Aceder a um ponto final RPC público
  2. Executar os seus próprios nós
  3. Aceder a um fornecedor de nós como um serviço
  4. Aceder a um fornecedor de nó descentralizado como um serviço

Os pontos finais públicos do 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:

Existe também uma solução web3 / descentralizada, Rede de Bolsoque parece estar ganhando tração.

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

Ambientes de desenvolvimento de blockchain

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

  • Capacete (JavaScript) é uma opção mais recente, mas que está a ganhar cada vez mais popularidade. Os seus docs são ótimos, as ferramentas e a experiência do programador são polidas, e é o que tenho usado pessoalmente para construir dapps.
  • Trufa(JavaScript) é um conjunto de ferramentas para construir e desenvolver aplicações na EVM. É maduro, testado em batalha e bem documentado. Já existe há algum tempo e muitos desenvolvedores o utilizam.
  • Fundiçãoé um novo ambiente de desenvolvimento Solidity da Paradigm que demonstra muito potencial. Destaques principais incluem a capacidade de escrever testes em Solidity, suporte para fuzzing e velocidade (é escrito em Rust). Escrevi uma introdução separada sobre isto aqui.
  • Brownieé um framework de desenvolvimento e teste baseado em Python para contratos inteligentes para desenvolvimento Solidity / EVM.

Para o desenvolvimento da Solana, Âncoraestá rapidamente a tornar-se o ponto de entrada para novos programadores. Ele fornece uma CLI para construir, testar e testar programas Solana, bem como bibliotecas de cliente que você pode usar para construir interfaces. Ele também inclui uma DSL que abstrai muitas das complexidades com que os programadores frequentemente se deparam ao começar com o desenvolvimento Solana e Rust.

Armazenamento de ficheiros

Onde armazenamos imagens, vídeos e outros ficheiros no web3? Armazenar algo tão grande na cadeia geralmente é proibitivamente caro, por isso 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-lhe armazenar 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 equipa que construiu o IPFS, é um protocolo concebido para fornecer um sistema de armazenamento de dados persistente. Existem um punhado de maneiraspara os desenvolvedores construírem na Filecoin, incluindoarmazenamento web3o que é bastante agradável.
  • Skynet - Ainda não o utilizei em produção, mas experimentei e parece funcionar bem. O API aquiparece ótimo. Tenho perguntas como por quanto tempo os dados são mantidos e a interoperabilidade do Skynet com outros protocolos.

Protocolos de dados fora da cadeia

Para além do armazenamento de ficheiros e do armazenamento on-chain, também pode ser necessário armazenar dados off-chain. Pode utilizar estes tipos de soluções de forma semelhante à forma como utilizaria uma base de dados numa pilha tecnológica tradicional, mas em vez disso, são replicados em n número de nós numa rede descentralizada, e por isso mais fiáveis (pelo menos teoricamente).

Algumas opções são:

  • Rede Cerâmica- uma plataforma descentralizada e de código aberto para criar, hospedar e partilhar dados. O Ceramic também tem um bom protocolo de identidade sobre o qual falarei mais tarde. Provavelmente a minha solução de armazenamento externo favorita neste momento.Aqui estáuma demonstração bastante agradável.
  • Têxtil ThreadDB- uma base de dados multi-party construída sobre o IPFS e Libp2p. Se entendi corretamente, pode estar passando por uma grande mudança de API no momento. Eu tentei e mostra alguma promessa, mas os documentos e DX precisam de alguma melhoria.
  • GunDB- uma base de dados descentralizada, peer-to-peer. Gun existe há bastante tempo e algumas aplicações bastante interessantesforam construídos com isso.

Em termos de maturidade, a minha opinião é que o ecossistema de soluções de armazenamento fora da cadeia ainda não está onde precisa de estar para desenvolver alguns dos casos de utilização mais avançados que alguns programadores possam desejar. Alguns dos desafios aqui são dados em tempo real, deteção e resolução de conflitos, autorização de escrita, documentação e experiência geral do programador.

Integrar soluções de dados offchain com protocolos de blockchain é um dos últimos grandes obstáculos que precisamos ultrapassar antes de termos uma pilha de protocolo totalmente descentralizada capaz de suportar qualquer tipo de aplicação.

API (indexação & consulta)

Existem muitas diferenças na forma como interagimos e construímos em cima das blockchains em comparação com as bases de dados na pilha tecnológica tradicional. Com as blockchains, os dados não são armazenados num formato que possa ser consumido de forma eficiente ou facilmente diretamente por outras aplicações ou interfaces front-end.

As blockchains são otimizadas para operações de escrita. Muitas vezes ouve-se falar da inovação centrada em torno das transações por segundo, do tempo de bloco e do 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 a leitura básica impossível.

Na maioria das aplicações, você precisa de funcionalidades como dados relacionais, ordenaçã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 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 faltando 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 subgráficos, tornando os dados de blockchain fáceis de consultar.

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

Identidade

A identidade é um paradigma completamente diferente no web3. No web2, a autenticação é quase sempre baseada nas informações pessoais do utilizador. Estas informações são geralmente recolhidas através de um formulário ou de um fornecedor de OAuth que pede ao utilizador para ceder 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" sirva 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, precisará de compreender como aceder e interagir com a carteira e endereço do utilizador de várias formas.

Num nível muito básico (e um requisito muito comum), pode ser queira solicitar acesso à carteira do utilizador. Para fazer isso, geralmente poderá aceder à carteira do utilizador no contexto da janela (navegador web) ou usando algo como WalletConnectouAdaptador de Carteira da Solana.

Por exemplo, se tiverem uma carteira Ethereum disponível, poderão aceder a window.ethereum. O mesmo se aplica ao Solana (window.solana), Arweave (window.arweaveWallet) e a algumas outras. O WalletConnect é bom para a web móvel e o React Native, pois permite aos utilizadores autorizarem-se utilizando as suas carteiras móveis diretamente a partir do dispositivo.

Se quiser lidar com a autenticação por si próprio, pode permitir que o utilizador assine uma transação e depois a descodifique em algum lugar para autenticar o utilizador, mas isso normalmente 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 à gestão de perfis de utilizadores de forma descentralizada?Rede Cerâmicaoferece o protocolo mais robusto e conjunto de ferramentas para gerir identidade descentralizada. Eles lançaram recentemente uma postagem no blogdescrevendo algumas das suas atualizações mais recentes e fornecendo algumas orientações sobre como todas as ferramentas funcionam juntas. Eu começaria por aí e depois explorariaos seus documentospara ganhar uma compreensão de como começar a construir e considerar verificar o meu projeto de exemploaqui que usa Cerâmica self.id.

Se deseja buscar um utilizador ENSregistos de texto, a biblioteca ENSJS oferece uma API agradável para obter dados do utilizador:

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

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDtambém algo que parece promissor, mas ainda não experimentei.

Cerâmica e Abetoambos implementam oW3C DIDespecificação, que por si só também é algo que consideraria como um elemento fundamental do web3. Dito isto, qualquer implementação centralizada de DIDs vai contra a ideia do que a especificação está a tentar alcançar.

Cliente

No que diz respeito aos frameworks de JavaScript, podes realmente construir com o que quiseres, uma vez que os SDKs de blockchain do lado do cliente são na sua maioria agnósticos em relação ao framework. Dito isto, uma quantidade avassaladora de projetos e exemplos são construídos em React. Existem também algumas bibliotecas como Adaptador de Carteira Solanaque oferecem utilidades adicionais para o React, por isso eu diria que aprender ou estar familiarizado com o React provavelmente será uma jogada inteligente.

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

Em Solana, provavelmente estarás a trabalhar com @solana/web3.jse / ouÂncoraEncontrei as bibliotecas de cliente Anchor para serem a minha escolha para construir programas Solana, uma vez que estou a usar o framework Anchor de qualquer forma, e achei muito mais fácil de entender.@solana/web3.js.

Oráculos

Os oráculos permitem que os desenvolvedores tenham acesso para ler 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 que ocorrem fora da cadeia, por isso os Oracles são especialmente importantes no DeFi.

Chainlinké um Oráculo que permite o acesso a dados do mundo real e cálculos off-chain, mantendo as garantias de segurança e fiabilidade 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 sobre o Git. Pode ser considerado como uma versão descentralizada do GitHub.

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

Concluindo

Esta publicação será um documento vivo que irei atualizando à medida que aprendo, experimento e recolho feedback dos programadores que constroem em web3.

Se tiver algum feedback ou ideias sobre algo que me esteja a escapar, por favor, entre em contacto e partilhe os seus pensamentos comigo. É emocionante ver toda a atividade em torno do web3, com os programadores a aderirem e a envolverem-se. Embora a infraestrutura ainda esteja a evoluir, a visão de construir protocolos e aplicações verdadeiramente descentralizadas que permitam às pessoas coordenarem-se sem terem de dar poder e controlo a grandes empresas é importante, e estamos perto de tornar esta visão uma realidade.

Aviso legal:

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

Definir o stack web3

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

Neste próximo segmento de Construção na web3, o engenheiro de relações com desenvolvedores da Edge & Node, Nader Dabit, expande sobre o stack web3 e como os desenvolvedores podem conceptualizar as várias facetas da construção na web3.


Transitei para a web3 em abril de 2021 depois de ser um desenvolvedor full-stack tradicional 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 concluir o trabalho.

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

Usando esses componentes principais, consigo desenvolver a maioria dos tipos de aplicações que gostaria, ou pelo menos chegar lá na maioria das vezes. Então, como isso se parecia no web3?

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

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

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

Depois de trabalhar, pesquisar, experimentar e construir coisas ao longo dos últimos 8 meses, gostaria de partilhar o que aprendi.

O que é web3?

Antes de definirmos o stack web3, vamos tentar definir o web3. Existem inúmeras definições dependendo de quem perguntar, mas para mim eu encontro istodefinição spot on:

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 as suas próprias implicações e características específicas.

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 de tecnologia descentralizada substituam seus predecessores, um novo paradigma de aplicativos também foi possibilitado pelas novas primitivas habilitadas 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 tipos inteiramente novos de aplicações, algumas das quais ainda não foram imaginadas.

Isso significa que tudo vai ser substituído por web3? Não necessariamente. Embora eu ache que construir em uma pilha de tecnologia descentralizada seja uma escolha muito melhor para certos tipos de aplicações - 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 de blockchain
  • Armazenamento de ficheiros
  • Protocolos de dados off-chain
  • API (indexação & consulta)
  • Identidade
  • Cliente (estruturas e bibliotecas)
  • Oráculos
  • Outros protocolos

Blockchain

Existem inúmeras blockchains em que pode escolher construir. Não há uma única que seja "a melhor", em vez disso, deve considerar os vários compromissos 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 a aprender, ou seja, qual é a forma mais eficiente de tirar o máximo partido desse tempo e esforço. Seguindo esta ideia, posso obter a maior tração e momentum ao aprender algo novo no menor tempo possível.

No mundo da Blockchain, aprender Solidity e o EVM(ou Ethereum Virtual Machine) pode ser a melhor aposta ao começar como desenvolvedor de blockchain. Usando este conjunto de habilidades (e pilha tecnológica), você pode construir não apenas para Ethereum, mas também para outras camadas 2 do Ethereum, sidechains e até mesmo outras blockchains como Avalanche, Fantom e Celo.

Dito isto, o Rust está a começar a tornar-se cada vez mais popular no mundo da blockchain, com Solana, NEAR, Polkadot e outros a terem suporte de primeira classe para Rust. Provavelmente, não se 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 sólida combinação de tecnologia, utilidade, comunidade, momentum e viabilidade futura:

  • Ethereum- plataforma original de contrato inteligente
  • ZK rollups: ZKSync, Starknet, Hermez- Camadas 2 de alto rendimento Ethereum, mas não nativamente compatíveis com EVM
  • Rollups otimistas: Arbitrum & Optimismo - Camadas Ethereum 2, compatíveis com EVM (saiba mais sobre as diferenças entre rollups otimistas e ZKaqui)
  • Polígono- Sidechain Ethereum
  • Solana- alta taxa de transferência, transações baratas, tempos de bloco rápidos, mas é mais difícil de aprender do que EVM (Rust)
  • NEAR- Camada 1 blockchain, 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 em cima dela executem transações entre si, criando uma internet interligada de blockchains
  • Aurora- Cadeia compatível com EVM 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 o envio, recebimento e armazenamento de criptomoedas para qualquer pessoa com um smartphone
  • Tezos- Camada 1 não compatível com EVM, muitos projetos NFT a estão a usar

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

Existem algumas maneiras de fazer isto:

  1. Aceder a um ponto final RPC público
  2. Executar os seus próprios nós
  3. Aceder a um fornecedor de nós como um serviço
  4. Aceder a um fornecedor de nó descentralizado como um serviço

Os pontos finais públicos do 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:

Existe também uma solução web3 / descentralizada, Rede de Bolsoque parece estar ganhando tração.

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

Ambientes de desenvolvimento de blockchain

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

  • Capacete (JavaScript) é uma opção mais recente, mas que está a ganhar cada vez mais popularidade. Os seus docs são ótimos, as ferramentas e a experiência do programador são polidas, e é o que tenho usado pessoalmente para construir dapps.
  • Trufa(JavaScript) é um conjunto de ferramentas para construir e desenvolver aplicações na EVM. É maduro, testado em batalha e bem documentado. Já existe há algum tempo e muitos desenvolvedores o utilizam.
  • Fundiçãoé um novo ambiente de desenvolvimento Solidity da Paradigm que demonstra muito potencial. Destaques principais incluem a capacidade de escrever testes em Solidity, suporte para fuzzing e velocidade (é escrito em Rust). Escrevi uma introdução separada sobre isto aqui.
  • Brownieé um framework de desenvolvimento e teste baseado em Python para contratos inteligentes para desenvolvimento Solidity / EVM.

Para o desenvolvimento da Solana, Âncoraestá rapidamente a tornar-se o ponto de entrada para novos programadores. Ele fornece uma CLI para construir, testar e testar programas Solana, bem como bibliotecas de cliente que você pode usar para construir interfaces. Ele também inclui uma DSL que abstrai muitas das complexidades com que os programadores frequentemente se deparam ao começar com o desenvolvimento Solana e Rust.

Armazenamento de ficheiros

Onde armazenamos imagens, vídeos e outros ficheiros no web3? Armazenar algo tão grande na cadeia geralmente é proibitivamente caro, por isso 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-lhe armazenar 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 equipa que construiu o IPFS, é um protocolo concebido para fornecer um sistema de armazenamento de dados persistente. Existem um punhado de maneiraspara os desenvolvedores construírem na Filecoin, incluindoarmazenamento web3o que é bastante agradável.
  • Skynet - Ainda não o utilizei em produção, mas experimentei e parece funcionar bem. O API aquiparece ótimo. Tenho perguntas como por quanto tempo os dados são mantidos e a interoperabilidade do Skynet com outros protocolos.

Protocolos de dados fora da cadeia

Para além do armazenamento de ficheiros e do armazenamento on-chain, também pode ser necessário armazenar dados off-chain. Pode utilizar estes tipos de soluções de forma semelhante à forma como utilizaria uma base de dados numa pilha tecnológica tradicional, mas em vez disso, são replicados em n número de nós numa rede descentralizada, e por isso mais fiáveis (pelo menos teoricamente).

Algumas opções são:

  • Rede Cerâmica- uma plataforma descentralizada e de código aberto para criar, hospedar e partilhar dados. O Ceramic também tem um bom protocolo de identidade sobre o qual falarei mais tarde. Provavelmente a minha solução de armazenamento externo favorita neste momento.Aqui estáuma demonstração bastante agradável.
  • Têxtil ThreadDB- uma base de dados multi-party construída sobre o IPFS e Libp2p. Se entendi corretamente, pode estar passando por uma grande mudança de API no momento. Eu tentei e mostra alguma promessa, mas os documentos e DX precisam de alguma melhoria.
  • GunDB- uma base de dados descentralizada, peer-to-peer. Gun existe há bastante tempo e algumas aplicações bastante interessantesforam construídos com isso.

Em termos de maturidade, a minha opinião é que o ecossistema de soluções de armazenamento fora da cadeia ainda não está onde precisa de estar para desenvolver alguns dos casos de utilização mais avançados que alguns programadores possam desejar. Alguns dos desafios aqui são dados em tempo real, deteção e resolução de conflitos, autorização de escrita, documentação e experiência geral do programador.

Integrar soluções de dados offchain com protocolos de blockchain é um dos últimos grandes obstáculos que precisamos ultrapassar antes de termos uma pilha de protocolo totalmente descentralizada capaz de suportar qualquer tipo de aplicação.

API (indexação & consulta)

Existem muitas diferenças na forma como interagimos e construímos em cima das blockchains em comparação com as bases de dados na pilha tecnológica tradicional. Com as blockchains, os dados não são armazenados num formato que possa ser consumido de forma eficiente ou facilmente diretamente por outras aplicações ou interfaces front-end.

As blockchains são otimizadas para operações de escrita. Muitas vezes ouve-se falar da inovação centrada em torno das transações por segundo, do tempo de bloco e do 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 a leitura básica impossível.

Na maioria das aplicações, você precisa de funcionalidades como dados relacionais, ordenaçã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 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 faltando 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 subgráficos, tornando os dados de blockchain fáceis de consultar.

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

Identidade

A identidade é um paradigma completamente diferente no web3. No web2, a autenticação é quase sempre baseada nas informações pessoais do utilizador. Estas informações são geralmente recolhidas através de um formulário ou de um fornecedor de OAuth que pede ao utilizador para ceder 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" sirva 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, precisará de compreender como aceder e interagir com a carteira e endereço do utilizador de várias formas.

Num nível muito básico (e um requisito muito comum), pode ser queira solicitar acesso à carteira do utilizador. Para fazer isso, geralmente poderá aceder à carteira do utilizador no contexto da janela (navegador web) ou usando algo como WalletConnectouAdaptador de Carteira da Solana.

Por exemplo, se tiverem uma carteira Ethereum disponível, poderão aceder a window.ethereum. O mesmo se aplica ao Solana (window.solana), Arweave (window.arweaveWallet) e a algumas outras. O WalletConnect é bom para a web móvel e o React Native, pois permite aos utilizadores autorizarem-se utilizando as suas carteiras móveis diretamente a partir do dispositivo.

Se quiser lidar com a autenticação por si próprio, pode permitir que o utilizador assine uma transação e depois a descodifique em algum lugar para autenticar o utilizador, mas isso normalmente 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 à gestão de perfis de utilizadores de forma descentralizada?Rede Cerâmicaoferece o protocolo mais robusto e conjunto de ferramentas para gerir identidade descentralizada. Eles lançaram recentemente uma postagem no blogdescrevendo algumas das suas atualizações mais recentes e fornecendo algumas orientações sobre como todas as ferramentas funcionam juntas. Eu começaria por aí e depois explorariaos seus documentospara ganhar uma compreensão de como começar a construir e considerar verificar o meu projeto de exemploaqui que usa Cerâmica self.id.

Se deseja buscar um utilizador ENSregistos de texto, a biblioteca ENSJS oferece uma API agradável para obter dados do utilizador:

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

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDtambém algo que parece promissor, mas ainda não experimentei.

Cerâmica e Abetoambos implementam oW3C DIDespecificação, que por si só também é algo que consideraria como um elemento fundamental do web3. Dito isto, qualquer implementação centralizada de DIDs vai contra a ideia do que a especificação está a tentar alcançar.

Cliente

No que diz respeito aos frameworks de JavaScript, podes realmente construir com o que quiseres, uma vez que os SDKs de blockchain do lado do cliente são na sua maioria agnósticos em relação ao framework. Dito isto, uma quantidade avassaladora de projetos e exemplos são construídos em React. Existem também algumas bibliotecas como Adaptador de Carteira Solanaque oferecem utilidades adicionais para o React, por isso eu diria que aprender ou estar familiarizado com o React provavelmente será uma jogada inteligente.

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

Em Solana, provavelmente estarás a trabalhar com @solana/web3.jse / ouÂncoraEncontrei as bibliotecas de cliente Anchor para serem a minha escolha para construir programas Solana, uma vez que estou a usar o framework Anchor de qualquer forma, e achei muito mais fácil de entender.@solana/web3.js.

Oráculos

Os oráculos permitem que os desenvolvedores tenham acesso para ler 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 que ocorrem fora da cadeia, por isso os Oracles são especialmente importantes no DeFi.

Chainlinké um Oráculo que permite o acesso a dados do mundo real e cálculos off-chain, mantendo as garantias de segurança e fiabilidade 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 sobre o Git. Pode ser considerado como uma versão descentralizada do GitHub.

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

Concluindo

Esta publicação será um documento vivo que irei atualizando à medida que aprendo, experimento e recolho feedback dos programadores que constroem em web3.

Se tiver algum feedback ou ideias sobre algo que me esteja a escapar, por favor, entre em contacto e partilhe os seus pensamentos comigo. É emocionante ver toda a atividade em torno do web3, com os programadores a aderirem e a envolverem-se. Embora a infraestrutura ainda esteja a evoluir, a visão de construir protocolos e aplicações verdadeiramente descentralizadas que permitam às pessoas coordenarem-se sem terem de dar poder e controlo a grandes empresas é importante, e estamos perto de tornar esta visão uma realidade.

Aviso legal:

  1. Este artigo é reimpresso de [edgeandnode]. Todos os direitos de autor pertencem ao autor original [Nader Dabit]. Se houver objeções a esta reimpressão, entre em contato com o Gate Learnequipa e eles vão tratar disso prontamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!