O que é o Embark Framework?
O Embark Framework é uma estrutura de desenvolvimento de código aberto criada para ajudar desenvolvedores a criar, testar, implantar e gerenciar aplicativos descentralizados.Ele foi projetado principalmente para aplicativos que usam contratos inteligentes compatíveis com a Ethereum Virtual Machine, interfaces front-end baseadas em navegador, armazenamento descentralizado e tecnologias de comunicação peer-to-peer.O repositório oficial do Embark Framework o descreve como uma estrutura para desenvolver e implantar aplicativos descentralizados.
O Embark automatizava muitas tarefas que, de outra forma, os desenvolvedores teriam de executar manualmente.Entre elas estavam compilar contratos inteligentes, determinar a ordem de implantação, implantar contratos, rastrear endereços implantados, regenerar artefatos do front-end, executar testes, iniciar serviços locais de blockchain e publicar arquivos do aplicativo.O framework se destacava especialmente por tentar gerenciar toda a stack de aplicativos descentralizados, em vez de se concentrar apenas na compilação de contratos inteligentes.Um projeto Embark podia combinar contratos blockchain, código de aplicativo JavaScript, armazenamento descentralizado de arquivos, serviços de nomes e mensagens descentralizadas em um único fluxo de trabalho orientado por configuração.O Embark foi uma ferramenta importante de desenvolvimento para Ethereum durante a fase inicial de crescimento dos aplicativos descentralizados.No entanto, sua versão estável mais recente foi publicada em abril de 2020. Hoje, os desenvolvedores devem tratá-lo como software legado, que pode exigir um amplo trabalho de compatibilidade e segurança.Para que o Embark foi desenvolvido?
O Embark foi desenvolvido para reduzir o trabalho de configuração e coordenação envolvido no desenvolvimento de aplicativos descentralizados.Um aplicativo descentralizado costuma incluir vários componentes que precisam funcionar corretamente em conjunto.Ele pode incluir contratos Solidity, um nó blockchain, scripts de implantação de contratos, interfaces binárias de aplicativos geradas, bibliotecas JavaScript, uma interface web, armazenamento descentralizado, testes e configurações específicas da rede.Sem um framework, os desenvolvedores precisam configurar e conectar cada componente por conta própria.O Embark buscava oferecer um ambiente único que reconhecesse esses componentes e os atualizasse conforme o projeto evoluía.Por exemplo, uma alteração em um contrato Solidity poderia levar o Embark a recompilá-lo, determinar se era necessário implantá-lo novamente, atualizar o endereço do contrato, regenerar os artefatos do front-end e reconstruir o aplicativo.Esse fluxo de trabalho automatizado tinha como objetivo encurtar os ciclos de desenvolvimento e reduzir erros de configuração manual.O Embark Framework ainda recebe manutenção?
O Embark deve ser considerado um framework legado de desenvolvimento de criptomoedas, e não uma opção com manutenção ativa para um novo projeto de produção.O repositório oficial identifica a versão 6.0.0, lançada em 27 de abril de 2020, como sua versão estável mais recente.O changelog oficial do projeto registra duas compilações nightly posteriores, datadas de 8 de agosto de 2020 e 8 de outubro de 2020.
O registro público do pacote Embark também mostra que o pacote principal não recebeu uma publicação estável recente.
O atual guia de frameworks de desenvolvimento da Ethereum explica a função dos frameworks full-stack, mas já não inclui o Embark entre os frameworks listados.
A ausência de lançamentos recentes significa que dependências antigas, sistemas de build, clientes blockchain, APIs JavaScript e pressupostos sobre redes podem não funcionar com segurança em uma máquina de desenvolvimento atual.Projetos Embark existentes ainda podem conter código, contratos, testes e histórico de implantação úteis.No entanto, as equipes responsáveis pela manutenção desses projetos devem auditar cada dependência e considerar a migração dos fluxos de trabalho críticos para componentes com manutenção ativa.Quem criou o Embark?
O Embark foi criado originalmente pelo desenvolvedor Iuri Matias e, posteriormente, desenvolvido por uma equipe mais ampla de código aberto.O projeto passou por diferentes organizações do GitHub à medida que seus mantenedores e o apoio organizacional mudavam.O principal código-fonte público está atualmente na organização Embark Labs do GitHub.O repositório contém milhares de commits históricos e diversos pacotes modulares voltados à interação com blockchain, implantação, testes, armazenamento, comunicação, geração de código e ferramentas de interface do usuário.O Embark foi lançado sob a Licença MIT, que permite aos desenvolvedores estudar, modificar e redistribuir o código, respeitando as condições da licença.O que é um framework de desenvolvimento de dApps?
Um framework de desenvolvimento de aplicativos descentralizados é um conjunto de ferramentas que coordena tarefas comuns de desenvolvimento blockchain.A documentação de desenvolvimento da Ethereum explica que os frameworks geralmente incluem ferramentas para blockchain local, compilação e testes de contratos, integrações com o front-end, configuração de redes, implantação e suporte à distribuição descentralizada.
Um framework não substitui o conhecimento sobre contratos inteligentes ou segurança blockchain.Ele automatiza etapas do processo de desenvolvimento.O framework pode gerar configurações, mas o desenvolvedor continua responsável por entender o que o código e as transações gerados fazem.O uso de um framework de desenvolvimento pode aumentar a produtividade, mas também introduz dependências e pressupostos específicos da ferramenta.O que significava serverless no Embark?
O Embark frequentemente descrevia aplicativos descentralizados como aplicativos HTML5 serverless que usavam uma ou mais tecnologias descentralizadas.Nesse contexto, serverless não significava necessariamente que não existiam servidores ou computadores.Nós blockchain, peers de armazenamento, gateways, serviços de carteira e infraestrutura de distribuição web ainda precisavam ser executados em algum lugar.O termo significava que o aplicativo podia reduzir sua dependência de um único servidor de aplicação tradicional, controlado por um operador.Os contratos inteligentes podiam armazenar a lógica e o estado compartilhados do aplicativo.O armazenamento descentralizado podia distribuir arquivos entre os nós participantes.Um front-end estático podia se comunicar diretamente com serviços blockchain ou de armazenamento pelo navegador do usuário.Muitos aplicativos reais ainda usavam serviços centralizados para indexação, análise, notificações, suporte ao usuário, cache, autenticação ou entrega mais rápida de dados.Gerenciamento de contratos inteligentes no Embark
O gerenciamento de contratos inteligentes era um dos principais recursos do Embark.O framework podia localizar arquivos-fonte de contratos, compilá-los, identificar suas dependências e implantá-los em uma rede EVM configurada.Ele rastreava quais contratos já haviam sido implantados e tentava evitar novas implantações desnecessárias.Se um contrato dependesse do endereço de outro, o Embark podia organizar a ordem de implantação e passar o endereço necessário ao contrato dependente.Isso era útil para aplicativos com contratos de token, registros, controle de acesso, fábricas, bibliotecas e outros componentes interligados.O sistema também gerava artefatos de contratos que o código JavaScript podia usar para chamar os contratos implantados.A implantação automatizada reduzia o trabalho repetitivo, mas os desenvolvedores ainda precisavam confirmar os argumentos do construtor, os endereços privilegiados, os IDs de rede, as configurações de gas e as contas de implantação.Reimplantação automática de contratos
Enquanto o ambiente de desenvolvimento estava em execução, o Embark podia monitorar alterações nos arquivos de contratos inteligentes.Quando um contrato era alterado, o framework podia recompilá-lo e determinar se uma nova implantação era necessária.Em seguida, podia atualizar os artefatos do aplicativo e reconstruir o front-end.Isso acelerava o ciclo de desenvolvimento, pois o desenvolvedor não precisava repetir cada comando manualmente.A reimplantação automática era conveniente principalmente em redes locais ou temporárias de desenvolvimento.A reimplantação de um contrato de produção cria um novo endereço e não transfere automaticamente o estado ou os ativos do contrato original.Um desenvolvedor nunca deve tratar a reimplantação em produção como se fosse uma simples atualização de aplicativo web.Contratos imutáveis e sistemas atualizáveis exigem procedimentos distintos de migração, governança e segurança.Configuração de contratos
Os projetos Embark usavam arquivos de configuração para descrever contratos e o comportamento de implantação.Uma configuração podia especificar se um contrato deveria ser implantado, quais argumentos de construtor eram necessários, qual conta deveria implantá-lo e como ele dependia de outros contratos.Configurações separadas podiam ser usadas para desenvolvimento local, redes privadas, ambientes públicos de teste e redes de produção.A separação de ambientes ajudava as equipes a evitar o uso dos mesmos endereços, credenciais ou regras de implantação em todos eles.Os arquivos de configuração ainda podiam se tornar perigosos quando continham chaves privadas, frases de recuperação, senhas ou endpoints remotos sem restrições.Credenciais confidenciais nunca devem ser incluídas em um repositório público de código-fonte.EmbarkJS
O EmbarkJS era a camada de integração JavaScript usada por aplicativos front-end desenvolvidos com o Embark.Ele permitia que o código do navegador acessasse contratos inteligentes implantados e outros serviços descentralizados configurados.O Embark gerava objetos de contrato com base nas interfaces binárias de aplicativos compiladas e nos endereços dos contratos implantados.Os desenvolvedores de front-end podiam usar esses objetos para chamar funções de contrato somente leitura, enviar transações e acompanhar eventos da blockchain.Quando habilitados, os módulos do EmbarkJS também ofereciam integrações com armazenamento, comunicação e serviços de nomes.Os objetos gerados reduziam o gerenciamento manual de endereços e ABIs.No entanto, o front-end ainda precisava lidar com acesso à conta, seleção da rede, confirmação de transações, assinaturas rejeitadas, transações revertidas e alterações no estado da blockchain.Promises JavaScript e operações assíncronas
O Embark disponibilizava muitas operações de contrato por meio de promises JavaScript.Isso correspondia à natureza assíncrona do desenvolvimento de aplicativos blockchain.Uma chamada de contrato pode exigir uma solicitação RPC a um nó remoto.Uma transação que altera o estado pode exigir aprovação do usuário, transmissão, inclusão em um bloco e várias confirmações.Os desenvolvedores precisavam distinguir uma transação enviada de uma transação executada com sucesso e confirmada de forma suficiente.A resolução de uma promise de envio nem sempre significava que a ação pretendida no contrato havia sido bem-sucedida.Os aplicativos precisavam verificar recibos, status de execução, eventos emitidos e informações de erro.Embark e redes EVM
O Embark foi projetado principalmente para a Ethereum e outras blockchains compatíveis com a Ethereum Virtual Machine.A EVM executa bytecode de contratos inteligentes e oferece um modelo comum para contas, armazenamento, mensagens, gas e chamadas de contrato.O Embark podia se conectar a nós locais, redes privadas, ambientes de teste ou redes públicas por meio de provedores configurados.Ele usava métodos JSON-RPC compatíveis com Ethereum para se comunicar com nós blockchain.A documentação JSON-RPC da Ethereum descreve a interface de solicitação padrão usada por aplicativos para consultar nós e enviar transações.
Um framework pode oferecer suporte à interface RPC e, ainda assim, ser incompatível com novos tipos de transação, mercados de taxas, versões de compiladores, parâmetros de clientes ou comportamentos de rede mais recentes.Desenvolvimento local em blockchain
O Embark podia iniciar ou conectar-se a um ambiente blockchain local para desenvolvimento e testes.Uma rede local permitia que os desenvolvedores implantassem contratos rapidamente sem gastar ativos de uma rede pública.Ela podia oferecer contas de teste com saldos simulados e produção de blocos mais rápida.O desenvolvimento local era útil para verificar a lógica dos contratos, a integração com o front-end, a ordem de implantação e os fluxos de transação.Uma blockchain local não reproduzia todas as condições encontradas em uma rede pública.As redes reais envolvem taxas variáveis, transações atrasadas, usuários maliciosos, protocolos externos, preços em mudança, congestionamento e comportamentos mais complexos de reorganização ou finalização.Sistemas de produção exigiam testes adicionais em ambientes e condições realistas.Testes no Embark
O Embark oferecia suporte ao desenvolvimento orientado a testes de contratos inteligentes usando JavaScript.Os desenvolvedores podiam escrever testes que implantavam contratos, chamavam funções, enviavam transações e verificavam o estado resultante.O framework gerenciava contas de teste e podia redefinir ou inicializar a blockchain de desenvolvimento para a execução dos testes.Os testes de contratos podiam verificar o comportamento da implantação, controles de acesso, saldos de tokens, eventos, reversões e interações entre contratos.Os testes automatizados eram um dos recursos mais valiosos do Embark, pois erros em contratos inteligentes podem se tornar permanentes após a implantação.A aprovação nos testes não comprovava que um contrato era seguro.Os testes cobriam apenas os cenários e pressupostos incluídos pelo desenvolvedor.O que os testes de contratos inteligentes devem abranger?
Uma boa suíte de testes deve incluir tanto o comportamento esperado dos usuários quanto situações deliberadamente maliciosas.Ela deve testar chamadas autorizadas e não autorizadas.Também deve testar valores zero e máximos, chamadas repetidas, ordenação inesperada, endereços inválidos, falhas em chamadas externas e condições-limite.É importante verificar se as alterações de estado continuam corretas quando uma transação é revertida.Também é necessário testar reentrância quando o contrato envia ativos ou chama contratos não confiáveis.Os testes devem abranger funções administrativas, caminhos de atualização, controles de pausa, saques de emergência e transferências de titularidade.As orientações de segurança do Solidity explicam riscos comuns, incluindo reentrância, loops limitados por gas, proxies autorizados, informações privadas e chamadas externas.
Artefatos de contratos do Embark
Um artefato de contrato é um arquivo gerado que contém as informações necessárias para implantar ou interagir com um contrato inteligente.Ele pode incluir a ABI do contrato, bytecode, endereço implantado, informações da rede, saída do compilador e referências ao código-fonte.O Embark gerava artefatos para que o código do front-end e dos testes pudesse acessar os contratos sem copiar manualmente seus endereços e interfaces.Os artefatos precisavam corresponder à rede de implantação pretendida.O uso de um endereço da rede errada poderia levar o aplicativo a chamar um contrato não relacionado ou um endereço sem código.Aplicativos de produção devem verificar o chain ID da blockchain e o bytecode do contrato, em vez de confiar apenas em um arquivo de artefato local.Pipeline de build do Embark
O Embark incluía um pipeline de build para preparar os recursos de front-end de um aplicativo descentralizado.O pipeline podia copiar, transformar ou agrupar arquivos JavaScript, HTML, folhas de estilo, imagens e artefatos blockchain gerados.Ele podia trabalhar com ferramentas comuns de desenvolvimento web e bibliotecas de front-end, sem exigir uma única tecnologia fixa de interface do usuário.Essa flexibilidade permitia que os desenvolvedores mantivessem práticas conhecidas de desenvolvimento para navegadores e adicionassem integrações blockchain.Os pipelines de build criam riscos à cadeia de suprimentos de software, pois executam pacotes e scripts durante a instalação ou compilação.Um projeto antigo pode depender de pacotes desatualizados que contenham vulnerabilidades, não possam mais ser instalados corretamente ou tenham sido removidos da fonte original.Embark Cockpit
O Embark incluía uma interface gráfica de desenvolvimento conhecida como Cockpit.O Cockpit foi concebido para oferecer aos desenvolvedores uma visão visual do ambiente de aplicativos descentralizados em execução.Ele podia exibir contratos, transações, logs, processos, serviços e o status do desenvolvimento.A interface também incluía ferramentas para interagir com contratos e explorar atividades durante o desenvolvimento.Um painel visual podia tornar o framework mais fácil de usar do que várias janelas de linha de comando separadas.Os desenvolvedores ainda precisavam entender as transações subjacentes, pois um painel podia simplificar ou omitir detalhes importantes.Os componentes históricos do Cockpit podem ser especialmente difíceis de executar atualmente, pois as dependências de front-end e o comportamento dos navegadores mudaram desde os últimos lançamentos.Console do Embark
O console do Embark oferecia um ambiente interativo de comandos conectado a um projeto configurado e a uma rede blockchain.Os desenvolvedores podiam usá-lo para inspecionar contas, acessar objetos de contrato gerados, chamar funções de leitura e enviar transações.Um console interativo era útil para depuração e testes manuais.Também era perigoso quando conectado a uma conta de produção que detinha ativos valiosos.Os comandos podiam implantar contratos, alterar estados, transferir ativos ou conceder permissões.Chaves privadas e contas desbloqueadas nunca devem ser expostas por meio de um console desprotegido ou endpoint RPC acessível publicamente.Embark e armazenamento descentralizado
O Embark integrava-se a sistemas de armazenamento descentralizado para que os aplicativos pudessem carregar, recuperar e publicar arquivos fora da blockchain.Armazenar arquivos grandes de um aplicativo diretamente no armazenamento de contratos EVM geralmente é caro.Uma rede de armazenamento descentralizado pode guardar arquivos do front-end, imagens, metadados, documentos ou outros conteúdos, enquanto a blockchain armazena uma referência ou identificador de conteúdo.O EmbarkJS oferecia uma interface comum para os aplicativos acessarem os serviços de armazenamento compatíveis.O Embark também podia implantar o front-end estático de um aplicativo por meio de armazenamento descentralizado.Isso reduzia a dependência de um servidor web tradicional, mas não garantia que o conteúdo continuaria disponível para sempre.Embark e IPFS
O IPFS era uma das principais integrações de armazenamento descentralizado do Embark.O IPFS usa endereçamento por conteúdo: um arquivo pode ser identificado por uma descrição criptográfica de seu conteúdo, e não apenas pela localização em um servidor.A documentação oficial do IPFS explica como os identificadores de conteúdo permitem solicitar dados com base no que eles contêm.
Normalmente, a alteração de um arquivo produz um identificador de conteúdo diferente.Isso ajuda os usuários a detectar mudanças no conteúdo.Não há garantia automática de disponibilidade, pois pelo menos um participante acessível precisa continuar armazenando e disponibilizando os dados.Projetos precisam de um plano de pinning, replicação ou persistência para os arquivos importantes do aplicativo.Embark e Swarm
O Embark também incluía suporte histórico ao armazenamento baseado em Swarm e à implantação de aplicativos.O framework podia publicar arquivos do front-end e recuperar fontes de contratos ou conteúdo de aplicativos por meio das integrações de armazenamento compatíveis.As APIs de armazenamento e o comportamento das redes evoluíram desde a última versão estável do Embark.Por isso, uma configuração antiga pode ser incompatível com nós, gateways, versões de pacotes ou regras de endereçamento atuais.Desenvolvedores responsáveis pela manutenção de um projeto histórico devem testar cada operação de armazenamento de forma independente antes de usá-la em produção.Comunicação descentralizada
O Embark incluía integrações com sistemas de comunicação descentralizados ou peer-to-peer.A documentação do projeto mencionava Whisper e Orbit como tecnologias de comunicação compatíveis.Essas integrações tinham o objetivo de permitir que aplicativos descentralizados enviassem e recebessem mensagens por canais, sem depender totalmente de um único servidor de mensagens convencional.Uma camada de comunicação podia oferecer suporte a notificações, chat, coordenação ou troca de dados específica do aplicativo.Entrega de mensagens, proteção contra spam, identidade, criptografia, acesso offline e armazenamento de longo prazo continuavam sendo desafios de projeto distintos.As integrações históricas de comunicação podem não funcionar mais com os softwares de rede atuais.Plugins do Embark
O Embark usava uma arquitetura modular de plugins para ampliar seus recursos principais.Os plugins podiam adicionar clientes blockchain, sistemas de armazenamento, serviços de comunicação, compiladores, ferramentas de teste, comportamentos de implantação, comandos de console ou integrações de aplicativos.O sistema de plugins tornava o framework mais flexível, pois os desenvolvedores não precisavam modificar o projeto principal para cada novo serviço.Os plugins também aumentavam os riscos de cadeia de suprimentos e de compatibilidade.Um plugin podia executar código local, ler configurações, acessar contas, alterar arquivos gerados ou afetar o comportamento da implantação.Antes de instalar um plugin, os desenvolvedores devem revisar seu código-fonte, mantenedores, histórico de lançamentos, dependências e permissões.Comandos do Embark
O Embark fornecia comandos de linha de comando para criar, executar, testar, compilar e interagir com projetos.O comando histórico de instalação era
O comando
O comando
O comando
O comando
O comando
Configuração de ambientes do Embark
Um projeto Embark podia definir ambientes diferentes para vários alvos blockchain.Um ambiente local podia usar contas geradas automaticamente e uma blockchain simulada.Um ambiente público de testes podia se conectar a um nó remoto e implantar contratos por meio de uma conta de teste com saldo.Um ambiente de produção podia usar controles de assinatura mais rigorosos, endereços fixos de contratos e configurações de gas cuidadosamente revisadas.A separação de ambientes reduzia o risco de usar acidentalmente configurações de teste em produção.No entanto, apenas nomear os ambientes não garantia segurança.Os scripts de implantação ainda precisavam verificar explicitamente o chain ID e aplicar procedimentos seguros de gerenciamento de chaves.Embark e dependências de contratos
Aplicativos descentralizados de grande porte geralmente contêm contratos que dependem de outros contratos.Um construtor pode exigir o endereço de um token, registro, biblioteca, administrador ou oráculo.O Embark permitia que a configuração de implantação fizesse referência a outros contratos e resolvesse seus endereços implantados.Com essas informações sobre dependências, o framework podia determinar a ordem correta de implantação.A automação de dependências reduzia a cópia manual de endereços, mas podia ocultar relações de confiança importantes.Os desenvolvedores ainda precisavam verificar se o contrato referenciado era a versão pretendida e se suas permissões correspondiam ao projeto de segurança do aplicativo.Embark e nomes de aplicativos
O Embark incluía integrações históricas com sistemas de nomes descentralizados.Um sistema de nomes pode associar um nome legível por humanos a uma conta, contrato, identificador de conteúdo ou outro recurso blockchain.Isso pode melhorar a usabilidade, pois os usuários não precisam digitar endereços hexadecimais longos.Os nomes podem expirar, ser transferidos, apontar para um novo destino ou ser controlados por contas comprometidas.Um aplicativo não deve tratar um nome legível como prova permanente da identidade de um contrato.Ações de alto valor devem verificar o endereço resolvido e a rede.Quais eram os benefícios do Embark Framework?
O Embark oferecia um fluxo de trabalho unificado para contratos, código de front-end, testes, implantação, armazenamento e comunicação.Ele gerava automaticamente objetos de contrato JavaScript e artefatos de implantação.Monitorava arquivos-fonte e recompilava ou reimplantava componentes quando necessário.Oferecia gerenciamento de dependências entre vários contratos.Disponibilizava redes locais de desenvolvimento e testes em JavaScript.Permitia configurações diferentes para vários ambientes blockchain.Fornecia um painel visual e um console interativo.Também ajudou a apresentar aos desenvolvedores a ideia de que um aplicativo descentralizado podia usar mais do que apenas uma blockchain.Quais eram as limitações do Embark Framework?
O Embark tentava coordenar muitas tecnologias diferentes, o que tornava o framework grande e complexo.Seu funcionamento dependia de inúmeros pacotes Node.js, clientes blockchain, compiladores, ferramentas de armazenamento, bibliotecas de front-end e plugins.Uma alteração incompatível em qualquer dependência importante podia afetar todo o ambiente de desenvolvimento.A implantação automática e a geração de código podiam dificultar a compreensão, principalmente para iniciantes, dos comandos e transações executados.O amplo conjunto de recursos também aumentava o tempo de instalação e a complexidade da solução de problemas.A ausência de versões estáveis recentes agora gera sérias preocupações de compatibilidade e cadeia de suprimentos de software.Por que frameworks de desenvolvimento antigos criam riscos de segurança
Um framework antigo pode conter dependências desatualizadas com vulnerabilidades documentadas publicamente.Sua árvore de dependências pode incluir pacotes sem manutenção.Os scripts de instalação podem depender de registros, downloads de binários ou comandos de sistema obsoletos.O framework pode não compreender o comportamento atual do compilador Solidity ou os recursos modernos da EVM.Pode gerar pressupostos inseguros sobre gas ou usar opções de nós descontinuadas.Bibliotecas de front-end antigas podem conter vulnerabilidades de navegador ou comportamentos incompatíveis com integrações de carteiras.Uma instalação bem-sucedida não comprova que o ambiente de desenvolvimento resultante é seguro.Risco à cadeia de suprimentos de software
A instalação de um framework de desenvolvimento JavaScript pode executar código de muitos pacotes diretos e indiretos.Um pacote comprometido pode ler variáveis de ambiente, modificar arquivos-fonte, roubar credenciais de assinatura ou inserir código malicioso em builds gerados.Arquivos de lock legados podem resolver dependências de forma diferente quando versões históricas de pacotes não estão disponíveis.Os desenvolvedores devem instalar projetos antigos em um ambiente isolado, sem chaves privadas valiosas.Também devem revisar o arquivo de lock, os checksums dos pacotes, os scripts de instalação e o grafo de dependências.A assinatura de produção deve permanecer separada de um ambiente de build legado não confiável ou reconstruído recentemente.Segurança de chaves privadas
O Embark precisava acessar uma conta para implantar contratos ou enviar transações de desenvolvimento.Armazenar uma chave privada ou frase de recuperação sem criptografia na configuração do projeto cria um grave risco de segurança.Uma exposição no sistema de controle de versão poderia revelar todos os ativos controlados por essa chave.Uma dependência maliciosa também poderia ler arquivos de configuração locais ou variáveis de ambiente.Implantações de produção devem usar um processo de assinatura controlado, com fundos limitados e revisão clara das transações.Uma conta de desenvolvimento nunca deve ser reutilizada como conta de tesouraria ou administrativa de longo prazo.Verificação de contratos inteligentes
Implantar um contrato pelo Embark não comprovava automaticamente que o código-fonte público correspondia ao bytecode implantado.A verificação de contratos permite que os usuários comparem o código-fonte publicado e as configurações do compilador com o código on-chain.Os desenvolvedores devem preservar a versão exata do compilador, as configurações do otimizador, os argumentos do construtor, as bibliotecas e os arquivos-fonte usados na implantação.Reproduzir artefatos de projetos legados pode se tornar difícil quando binários de compiladores antigos ou dependências desaparecem.Por isso, builds reproduzíveis e registros de implantação arquivados são importantes para manter um projeto Embark.Migração do Embark
Migrar do Embark não exige necessariamente reimplantar todos os contratos inteligentes.Uma equipe pode preservar os contratos implantados e substituir os fluxos locais de compilação, testes, implantação e build do front-end.O primeiro passo é inventariar os endereços dos contratos, arquivos-fonte, ABIs, configurações do compilador, argumentos do construtor, bibliotecas e contas administrativas.Em seguida, é necessário reproduzir os contratos em um ambiente de build moderno e isolado.Quando possível, os testes devem comparar os novos artefatos com o bytecode histórico implantado.Depois, o código do front-end pode ser atualizado para carregar ABIs e endereços verificados sem depender de artefatos gerados pelo Embark.A reimplantação só deve ocorrer quando for necessário alterar os próprios contratos e os riscos da migração estiverem compreendidos.Preservação de um projeto Embark existente
Uma equipe que mantém um aplicativo Embark antigo deve arquivar todo o repositório de código-fonte e o arquivo de lock.Também deve registrar a versão necessária do Node.js, o sistema operacional, a versão do compilador, o cliente blockchain, as variáveis de ambiente e o comportamento do gerenciador de pacotes.Imagens de contêiner ou máquinas virtuais podem ajudar a preservar um ambiente histórico reproduzível.Essas imagens devem ser verificadas e isoladas, pois preservar um ambiente também significa preservar suas vulnerabilidades.Os contratos críticos devem ser documentados independentemente do framework, para que os desenvolvedores possam interagir com eles mesmo que o Embark deixe de funcionar.Os endereços de implantação e as funções administrativas devem ser verificados diretamente on-chain.Desenvolvedores devem iniciar um novo projeto com o Embark?
Em geral, desenvolvedores não devem escolher o Embark como base para um novo aplicativo de criptomoedas de produção em 2026.O framework não recebe uma versão estável desde abril de 2020.Suas integrações e dependências documentadas foram projetadas para uma versão mais antiga do ambiente de desenvolvimento da Ethereum.Um novo projeto precisa de ferramentas com manutenção ativa e suporte às versões atuais de compiladores, formatos de transação, comportamento de redes, métodos de teste e práticas de segurança.O Embark ainda pode ser útil para pesquisa histórica, manutenção de aplicativos legados, estudo das primeiras ferramentas de dApps ou extração de contratos e casos de teste reutilizáveis.Qualquer uso contínuo deve ocorrer em um ambiente controlado, sem chaves valiosas, até que toda a cadeia de dependências seja revisada.Importância histórica do Embark
O Embark ajudou a definir a ideia de um framework full-stack para aplicativos descentralizados.Ele tratava contratos inteligentes, código de front-end, armazenamento, comunicação, testes, implantação e interfaces de desenvolvimento como partes de um único aplicativo.Isso foi importante em uma época em que as ferramentas de desenvolvimento blockchain eram fragmentadas e difíceis de configurar.O Embark também tornou a geração automática de artefatos de contratos e a implantação baseada em dependências acessíveis a mais desenvolvedores JavaScript.Sua integração com armazenamento descentralizado incentivou os desenvolvedores a pensar além do uso do estado da blockchain para todos os tipos de dados.Muitos fluxos de trabalho de desenvolvimento modernos continuam tratando dos mesmos problemas, embora usem arquiteturas e ferramentas diferentes.Exemplo de um fluxo de desenvolvimento com Embark
Suponha que um desenvolvedor quisesse criar um aplicativo simples de votação baseado em tokens.Ele poderia criar contratos Solidity para o token e as regras de votação.A configuração do Embark poderia descrever o contrato do token e passar seu endereço implantado para o contrato de votação.O Embark poderia iniciar uma blockchain local, compilar os dois contratos, implantá-los na ordem necessária e gerar artefatos para o front-end.O aplicativo no navegador poderia usar o EmbarkJS para exibir saldos de tokens e enviar transações de votação.Testes JavaScript poderiam verificar se apenas detentores elegíveis de tokens poderiam votar e se uma conta não poderia votar duas vezes.O front-end concluído poderia ser compilado e carregado por meio da integração de armazenamento descentralizado configurada.Antes de uma implantação pública, ainda seria necessário revisar a segurança de todas as partes desse fluxo de trabalho.Erros comuns com o Embark Framework
Um erro comum é presumir que o Embark ainda recebe manutenção ativa porque seu repositório continua acessível publicamente.Outro erro é instalar diretamente o antigo pacote global em uma máquina que armazena chaves de criptomoedas valiosas.Um terceiro erro é considerar segura a implantação automática de contratos sem revisar os argumentos do construtor e as contas privilegiadas.Um quarto erro é presumir que testes locais reproduzem todas as condições de uma rede pública.Um quinto erro é armazenar chaves privadas de implantação em arquivos de configuração ou no controle de versão.Um sexto erro é presumir que o armazenamento descentralizado garante a disponibilidade permanente dos arquivos.Um sétimo erro é confundir o envio bem-sucedido de uma transação com a execução bem-sucedida do contrato inteligente.Um oitavo erro é usar artefatos gerados para a rede blockchain errada.Um nono erro é migrar ferramentas de build sem verificar se o bytecode recém-compilado corresponde aos contratos históricos.Um décimo erro é reimplantar um contrato de produção sem planejar a migração dos usuários, ativos, permissões e estado do aplicativo.Perguntas frequentes
O que é o Embark Framework?
O Embark Framework é uma ferramenta legada de código aberto para desenvolver, testar, implantar e gerenciar aplicativos descentralizados compatíveis com Ethereum.Quais linguagens de programação o Embark usava?
O Embark trabalhava principalmente com contratos inteligentes Solidity e código de aplicativos em JavaScript ou TypeScript.Quais blockchains o Embark suportava?
Ele foi projetado principalmente para a Ethereum e outras redes compatíveis com a Ethereum Virtual Machine e com interfaces JSON-RPC no estilo Ethereum.O Embark Framework ainda está ativo?
O framework não recebe uma versão estável desde a versão 6.0.0, lançada em 27 de abril de 2020, portanto deve ser tratado como software legado.Qual foi a última versão estável do Embark?
O repositório oficial lista a versão 6.0.0 como a última versão estável.Houve lançamentos depois da versão 6.0.0?
O changelog oficial registra duas compilações nightly 6.0.1, em agosto e outubro de 2020, mas nenhuma versão estável posterior.O que o Embark automatizava?
Ele automatizava a compilação de contratos, a implantação baseada em dependências, a geração de artefatos, a recompilação do front-end, os testes, os serviços locais e algumas integrações com armazenamento ou comunicação descentralizados.O que é EmbarkJS?
O EmbarkJS é a camada de integração JavaScript que disponibilizava contratos inteligentes configurados, armazenamento, comunicação e serviços relacionados para o código do aplicativo.O que era o Embark Cockpit?
O Cockpit era o painel gráfico de desenvolvimento do Embark, usado para visualizar contratos, transações, serviços, logs e atividades do projeto.O Embark podia executar uma blockchain local?
Sim. Ele podia iniciar ou conectar-se a uma rede local de desenvolvimento EVM para implantação e testes de contratos.O Embark oferecia suporte a testes de contratos inteligentes?
Sim. Ele oferecia suporte a testes de contratos baseados em JavaScript e a fluxos de desenvolvimento orientados a testes.O Embark oferecia suporte a armazenamento descentralizado?
Sim. Ele incluía integrações históricas com IPFS e armazenamento de arquivos baseado em Swarm, além da implantação de aplicativos.O Embark oferecia suporte a mensagens descentralizadas?
Sim. As versões históricas incluíam integrações com tecnologias de comunicação peer-to-peer, como Whisper e Orbit.O Embark podia implantar vários contratos conectados?
Sim. Ele podia rastrear dependências entre contratos e implantá-los em uma ordem que fornecia os endereços necessários aos contratos dependentes.O Embark oferecia suporte a frameworks de front-end?
Sim. Seu pipeline web foi projetado para funcionar com diferentes tecnologias de navegador e processos de build.O Embark era uma blockchain?
Não. O Embark era um software de desenvolvimento que se conectava a blockchains e outras tecnologias descentralizadas.O Embark era uma criptomoeda?
Não. Era um framework de desenvolvimento de código aberto e não exigia uma criptomoeda nativa.O Embark tornava os contratos inteligentes seguros?
Não. Ele oferecia suporte a testes e desenvolvimento, mas não podia garantir a segurança do código dos contratos, das permissões ou da lógica econômica.Os contratos Embark ainda podem funcionar on-chain?
Sim. Contratos implantados pelo Embark podem continuar funcionando de forma independente, desde que a rede e o bytecode permaneçam disponíveis.Um contrato Embark existente precisa do Embark para ser executado?
Não. Os contratos EVM implantados são executados pela blockchain e podem ser acessados por qualquer interface compatível que use o endereço e a ABI corretos.Uma equipe pode migrar do Embark sem mover seus contratos?
Sim. A equipe pode substituir o fluxo local de build e implantação e continuar interagindo com os contratos existentes.É seguro instalar o Embark hoje?
A instalação deve ser feita somente em um ambiente isolado, após revisar as dependências antigas e sem expor chaves privadas valiosas.Um novo projeto cripto deve usar o Embark?
Em geral, um novo projeto de produção deve usar componentes de desenvolvimento com manutenção ativa, em vez de depender da stack de dependências desatualizada do Embark.Por que o Embark é historicamente importante?
Ele foi um dos primeiros frameworks a combinar contratos inteligentes, desenvolvimento de front-end, implantação automatizada, testes, armazenamento, comunicação e ferramentas visuais em um único fluxo de trabalho de dApps.Conclusão
O Embark Framework é um ambiente de desenvolvimento legado e de código aberto, criado para simplificar o desenvolvimento full-stack de aplicativos descentralizados.Ele automatizava a compilação Solidity, a implantação de contratos, o gerenciamento de dependências, a geração de artefatos, a construção do front-end, os testes e a interação com blockchains.Também integrava tecnologias de armazenamento e comunicação descentralizados por meio do EmbarkJS e de uma arquitetura baseada em plugins.Recursos como reimplantação automática, gerenciamento de blockchain local, testes JavaScript, console interativo e painel Cockpit fizeram do Embark uma ferramenta influente durante a expansão inicial dos aplicativos Ethereum.Sua versão estável mais recente foi a 6.0.0, em 27 de abril de 2020, seguida por duas compilações nightly no mesmo ano.A ausência de lançamentos recentes significa que suas dependências, integrações com nós, módulos de armazenamento, ferramentas de build e pressupostos sobre carteiras podem ser incompatíveis com os sistemas atuais.Os contratos existentes implantados pelo Embark não precisam do framework para continuar funcionando on-chain.Equipes responsáveis por sistemas legados podem preservar os endereços dos contratos e o estado da blockchain enquanto migram os fluxos de compilação, testes, implantação e front-end para ferramentas com manutenção ativa.Desenvolvedores que analisarem o Embark devem isolar o ambiente, auditar as dependências, proteger as chaves privadas, verificar o bytecode dos contratos e testar cada integração histórica.O Embark continua sendo relevante na história do desenvolvimento de criptomoedas, mas não deve ser confundido com um framework de produção que recebe manutenção atualmente.Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

