Cosmos, conheça o CometBFT

Feb 02 2023
Hoje anunciamos o lançamento do CometBFT, um mecanismo de replicação de máquina de estado para o interchain e além! O CometBFT é um fork e sucessor do Tendermint Core e servirá como o mecanismo de replicação oficial que alimenta o Interchain Stack. A visão de longo prazo do CometBFT é ser a principal escolha de mecanismo de replicação para blockchains específicos de aplicativos confiáveis, seguros e de grande escala.

Hoje anunciamos o lançamento do CometBFT, um mecanismo de replicação de máquina de estado para o interchain e além! O CometBFT é um fork e um sucessor do Tendermint Core e servirá como o mecanismo de replicação oficial que alimenta o Interchain Stack . A visão de longo prazo do CometBFT é ser a principal escolha de mecanismo de replicação para blockchains específicos de aplicativos confiáveis, seguros e de grande escala. Comprometa seus blocos com o CometBFT hoje!

A Interchain Foundation, a Informal Systems, a equipe Cosmos SDK e várias outras equipes do ecossistema Cosmos têm trabalhado juntas para preparar este lançamento. Este post aborda algumas das questões mais importantes sobre este lançamento. Fique tranquilo, temos trabalhado duro para tornar a atualização ou adoção do CometBFT o mais suave possível. Abordaremos os detalhes do histórico, a visão e os objetivos do CometBFT, as equipes por trás desse esforço e as próximas etapas em termos de implicações técnicas.

Porque agora?

Decidimos desenvolver o principal mecanismo de consenso do Cosmos com esse novo nome para marcar várias mudanças importantes que estão ocorrendo no ecossistema.

No lado técnico, o interchain evoluiu significativamente nos últimos dois anos. Estamos vivendo em um mundo multi-cadeia nativo do IBC. O ABCI 2.0 é uma peça crítica que falta no Interchain Stack, assim como os aspectos de design ou garantia de qualidade, como modularidade, integração ou testes rigorosos. Além disso, o abandono das versões v0.35 e v0.36 do Tendermint Core expôs limitações técnicas sobre como o desenvolvimento era feito; veja aqui para mais detalhes.

Em 2022, as organizações que mantêm o Interchain Stack iniciaram uma abordagem estratégica para mitigar as limitações técnicas acima. Essa abordagem envolveu a construção e dedicação de uma equipe completa ao Tendermint Core na Informal Systems. Além disso, ao preparar os lançamentos, começamos a priorizar a qualidade e a integração com o restante do Interchain Stack (ou seja, Cosmos SDK, IBC e os blocos de construção interchain mais amplos).

No lado administrativo, não possuímos a organização GitHub tendermint nem os direitos de marca registrada sobre “Tendermint''. Tudo em Bits (AiB) é o proprietário. O desenvolvimento do software Tendermint Core ocorreu fora da All in Bits nos últimos três anos. No entanto, a propriedade da marca registrada pela AiB representava um risco contínuo de ação de marca registrada. Sem acordos complicados com o AiB, não seria possível mitigar totalmente esse risco que paira sobre as cabeças dos desenvolvedores de uma parte mais crítica do Interchain Stack.

Como mencionamos anteriormente no Twitter e de acordo com esta discussão , AiB decidiu unilateralmente arquivar o repositório Tendermint Core. Assim, o caminho a seguir para continuar a trajetória de desenvolvimento, e conforme incentivado pela AiB, foi bifurcar o repositório Tendermint Core. O CometBFT se baseará nas bases estabelecidas pelo Tendermint Core, com desenvolvimento renovado com foco em usuários, qualidade e integração.

Em linha com essas preocupações técnicas e administrativas, as mudanças mais importantes estão na visão de longo prazo, nos objetivos e na administração do projeto. Isso nos leva à próxima parte desta discussão.

Qual é o próximo?

Como administradora comprometida do Cosmos e do ecossistema interchain, a Interchain Foundation serve como um host confiável para financiamento e ativos de bens públicos. A ICF é proprietária da marca registrada “Cosmos” desde o início e protege seu uso no melhor interesse da comunidade em geral. Da mesma forma, a ICF registrou o nome “CometBFT” e criou a organização CometBFT GitHub , e pretende administrar ambos a longo prazo no melhor interesse da crescente rede intercadeia. O CometBFT permanecerá como Apache2.0 de código aberto e licenciado. Convidamos todas as partes interessadas a contribuir para o crescimento e desenvolvimento deste software e a promover seus valores de código aberto.

Como mencionado anteriormente, o mandato de longo prazo para o CometBFT é ser a principal escolha do mecanismo de replicação para o interchain. A equipe do CosmosSDK, as equipes do IBC, os mantenedores do CometBFT e as inúmeras equipes de engenharia que compõem o interchain, tanto no nível do aplicativo quanto nos bens públicos, compartilham a visão comum de tornar o CometBFT um local onde as equipes podem experimentar novos recursos, construir e iterar com otimizações e garantir um alto grau de flexibilidade para os usuários, mantendo a integridade e robustez da pilha. Se você é um colaborador do Interchain Stack, operando validadores ou nós, integrando-se com outros ecossistemas ou encontrando seu caminho no Cosmos como um novo usuário, sua ajuda seria muito apreciada para tornar isso uma realidade. Veja nas “Referências” abaixo como entrar em contato conosco.

Quais são os objetivos do CometBFT?

Conforme descrito acima e anteriormente , isso marca uma nova fase na intercadeia. Seu mecanismo de consenso está evoluindo para ser um bloco de construção especializado para um mundo nativo de IBC. Procuramos continuar trabalhando de perto com a equipe do Cosmos SDK e os usuários atuais, ao mesmo tempo em que facilitamos a adoção para o crescente ecossistema de desenvolvedores de aplicativos construídos acima da ABCI e com a IBC. O objetivo subjacente de longo prazo da CometBFT é desempenhar um papel fundamental no apoio ao crescimento da rede intercadeia.

Mais especificamente, os objetivos do CometBFT são:

  1. Forte foco no usuário , com uma estratégia de produto claramente articulada que leva as necessidades de seus usuários em primeiro lugar. Esta é uma escolha estratégica para garantir que o CometBFT seja relevante e forneça utilidade.
  2. Melhorar a garantia de qualidade e garantias de correção, visando especificar e testar rigorosamente nossa implementação usando técnicas avançadas como teste baseado em modelo. Estamos trazendo nossa experiência em especificações e métodos formais para reforçar o controle de qualidade existente, que já foi complementado com esforços de teste em larga escala.
  3. Modularidade , com foco nos limites corretos da abstração, permitindo que o sistema seja separado se e onde necessário, permitindo uma integração fragmentada em projetos que dependem dele. Queremos permitir que o CometBFT seja usado cada vez mais como uma biblioteca e minimizar bifurcações e fragmentação, fornecendo novas interfaces para dar suporte à crescente variedade de casos de uso.
  4. Implementação mais rápida da funcionalidade sem sacrificar a qualidade por meio da atualização progressiva da arquitetura do sistema para atuar como uma plataforma sólida para mudanças, bem como pela coordenação mais suave do projeto em todo o Interchain Stack.

Quem está por trás do CometBFT?

O lançamento do CometBFT foi uma decisão multiorganizacional. O CometBFT é administrado pela Informal Systems em colaboração com um grande número de partes interessadas do Cosmos. O lançamento envolveu o trabalho de várias equipes na intercadeia, incluindo Cosmos SDK, IBC, Osmosis, Cosmos Hub e coordenação com Agoric, Axelar, Oasis, Penumbra, Celestia, Anoma, Skip, Umee, Confio, Nomic, Numia, Sei, Evmos , Sommelier, Andrômeda, Cronos entre muitos outros.

A equipe CometBFT da Informal é composta por alguns dos colaboradores mais talentosos e apaixonados do Cosmos. Seguiremos no Twitter com uma introdução dos membros da equipe principal, bem como membros contribuintes de outras equipes interchain. No momento, basta dizer que a equipe principal inclui engenheiros de pesquisa, DevOps veteranos e engenheiros de software com décadas de experiência combinada, bem como líderes de projeto, produto e tecnologia com mais de 10 anos de experiência combinada no Cosmos.

Quais são os próximos passos imediatos?

O lançamento do CometBFT é um esforço substancial que ainda está em andamento. Aqui estão algumas coisas importantes a saber.

Se o seu trabalho depende do CometBFT , considere participar das chamadas da comunidade, que são organizadas quinzenalmente às quintas-feiras:https://groups.google.com/g/cometbft-community/. Além do repositório GitHub, a chamada da comunidade é um fórum importante para discutir o desenvolvimento do CometBFT. É o lugar para os desenvolvedores coletarem feedback de você, responderem perguntas e para você, como usuário, trocar conhecimentos valiosos com outros usuários.

Se seu aplicativo estiver sendo criado no Cosmos SDK: Novas versões do SDK para as linhas 0.45, 0.46 e 0.47 serão lançadas pela equipe do Cosmos SDK. Esses lançamentos usarão o CometBFT v0.34 em vez do Tendermint Core 0.34, por acordo entre os colaboradores e projetos do Interchain Stack. A atualização para esta versão do SDK não requer uma atualização coordenada, pois é uma pequena alteração de versão. O log de alterações do Cosmos SDK documentará as alterações relevantes para seu aplicativo.

Se você estiver construindo diretamente sobre o Tendermint Core: Como mantenedores, recomendamos que você troque do Tendermint Core v0.34 para o CometBFT v0.34. Forneceremos instruções de atualização assim que cortarmos nossos primeiros lançamentos. Fique de olho no repositório do Github aqui .

Se você estiver mantendo uma bifurcação do Tendermint Core: Recomendamos fazer a transição para o CometBFT o mais rápido possível, por exemplo, rebaseando ou escolhendo a dedo suas alterações relevantes para uma bifurcação do CometBFT. Teremos todo o gosto em ajudar neste processo. Além disso, receberemos seus comentários e informações sobre seus requisitos específicos para eliminar a necessidade de você manter um fork (consulte a referência “comunidade” abaixo).

Referências

Aqui você encontrará links oficiais e instruções relevantes para o Comet:

  • Onde encontrar o mecanismo de consenso CometBFT?https://github.com/cometbft/cometbft/. Não se esqueça de marcar o repo com uma estrela!
  • Como encontrar suporte? Se você é um desenvolvedor, o melhor lugar para suporte é o servidor Cosmos Network Discord, no canal `#cometbft` .
  • Introduzimos um canal do Telegram para permitir feedback e comunicação rápidos e para lidar com esse período de transição. Por favor, junte-se aqui:https://t.me/CometBFT
  • Link para a documentação:https://docs.cometbft.com/
  • As novas alças para o projeto, como segue. Organização do GitHub:https://github.com/cometbft/. Discord: No servidor Cosmos Network , entre no canal `#cometbft` . O canal `#tendermint-core` existente será descontinuado.
  • Twitter: Anúncios e atualizações serão feitos por @cometbft e @informalinc .
  • Para informações gerais: [email protected] .
  • Para segurança ou vulnerabilidades: [email protected] .

Qual é o algoritmo de consenso subjacente ao CometBFT?

O algoritmo de consenso subjacente ao CometBFT é atualmente baseado (ou seja, é uma implementação do) Tendermint Consensus .

O CometBFT se afastará do algoritmo de consenso Tendermint?

Não nas versões iniciais. Nosso objetivo é construir o CometBFT como uma biblioteca de consenso composta onde o algoritmo de consenso padrão pode ser facilmente trocado por outros, mas não limitado aos implementados pelos mantenedores principais.

Também planejamos trabalhar com equipes que fizeram alterações ou otimizações no algoritmo de consenso ou em outro lugar (consulte bifurcações de LINE , PeggyJV , SeiNetwork ou Celestia Org ) para upstreaming das modificações que outros usuários precisam na linha de desenvolvimento principal.

Haverá vários forks concorrentes do Tendermint Core alimentando o interchain?

É tudo de código aberto, então pode haver. No entanto, os blocos de construção canônicos serão construídos sobre o CometBFT. As cadeias do Cosmos são construídas com o SDK do Cosmos (@cosmossdk), que será construído sobre o CometBFT. O desenvolvimento do Cosmos SDK continuará normalmente.

No nível do IBC, as bibliotecas continuarão a oferecer suporte a clientes light Tendermint; O CometBFT contém uma implementação do algoritmo de consenso do Tendermint, portanto, os clientes light do Tendermint continuarão trabalhando com o CometBFT como de costume.

Qualquer equipe pode fazer um fork do CometBFT e substituir o mecanismo de replicação em seus aplicativos. Mas recomendamos que você entre em contato conosco se precisar de mudanças significativas (consulte “Como encontrar suporte?” acima). Levaremos em consideração suas necessidades e adaptaremos nosso roteiro técnico de acordo para evitar, se possível, bifurcações desnecessárias ou inseguras.

Isso fará com que alguma corrente se bifurque?

Um firme “não”. Sistemas baseados em Tendermint Core v0.34 podem ser atualizados para CometBFT v0.34. E a linha CometBFT v0.34 permanecerá compatível com Tendermint Core v0.34.

Se eu estiver validando em uma rede baseada em Tendermint Core, há alguma preocupação com minhas operações?

Sinalizaremos cuidadosamente as alterações de última hora no changelog da versão, e as alterações de última hora serão mínimas. O nome binário do Tendermint Core será alterado, mas a maioria dos aplicativos possui um binário específico do aplicativo (como `osmosisd` , `gaiad` ) com o Tendermint Core compilado em (substituído pelo CometBFT). A menos que você execute um binário Tendermint Core separado, isso não afetará suas operações. Uma mudança relevante é que o env var `TMHOME` será renomeado para `CMTHOME` . Subcomandos como `gaiad tendermint` podem ser renomeados no devido tempo, dependendo da equipe que mantém o binário. Isso também será claramente marcado no changelog.

O que acontece com tendermint-rs
(
https://github.com/informalsystems/tendermint-rs/ )?

Vamos renomear este projeto em breve para cometbft-rs e continuar o desenvolvimento.

O que acontece com tm-db ou tm-load-test?

Nós bifurcamos e renomeamos tm-db para cometbft-db e continuaremos o desenvolvimento. Nenhuma API foi quebrada e o uso é o mesmo, exceto que é um módulo Go diferente: `github.com/cometbft/cometbft-db`.

Moveremos e renomearemos tm-load-test para cmt-load-test e continuaremos o desenvolvimento. Nota: Alguns dos nomes acima ainda podem estar em fluxo.

PS. Por um golpe de alegria cósmica, o lançamento do CometBFT coincide com o Comet C/2022 E3 (ZTF) fazendo sua maior aproximação ao nosso planeta . O brilho do cometa está definido para atingir o pico hoje e proporcionar uma experiência visual inesquecível para quem o observa.