Lançada a versão 1.7 da plataforma P2P Radicle, voltada para a criação de um serviço descentralizado de desenvolvimento e armazenamento de código, semelhante ao GitHub e GitLab, mas sem estar vinculado a servidores específicos, livre de censura e que opera com os recursos dos participantes da rede P2P. A plataforma suporta elementos padrão de interação social entre desenvolvedores, como issues, patches e revisões de código. O desenvolvimento do projeto foi realizado na linguagem Rust e é distribuído sob as licenças Apache 2.0 e MIT. Compilações estão disponíveis para Linux e macOS. Adicionalmente, um cliente desktop, uma interface web e uma interface de console estão em desenvolvimento.
O Radicle permite que o desenvolvimento e a distribuição de código fiquem independentes de plataformas e corporações centralizadas, cuja vinculação traz riscos adicionais (ponto único de falha, a empresa pode fechar ou mudar as condições de operação). Para gerenciar o código no Radicle, é utilizado o Git tradicional, ampliado com ferramentas de definição de repositórios na rede P2P. Todos os dados são, em primeiro lugar, salvos localmente (conceito local-first) e sempre acessíveis no computador do desenvolvedor, independentemente do estado da conexão de rede.
Os participantes fornecem acesso ao seu código e a artefatos associados, como patches e discussões sobre correções de bugs (issues), que são salvos localmente e replicados em nós de outros desenvolvedores interessados conectados à rede P2P descentralizada compartilhada. Como resultado, forma-se um repositório Git global descentralizado, cujos dados são replicados e duplicados em diferentes sistemas dos participantes.
Para identificar nós adjacentes na rede P2P, é aplicado o protocolo Gossip, e para replicação de dados entre nós, utiliza-se o protocolo Heartwood, baseado no Git. Como o protocolo é baseado no Git, a plataforma é facilmente integrada com as ferramentas existentes para desenvolvimento no Git. Para identificação de nós e verificação de repositórios, é usada criptografia baseada em chaves públicas, sem a utilização de contas. A autenticação e a autorização são realizadas com base em chaves públicas, sem entidades de certificação centralizadas. servidores.
Cada repositório em uma rede P2P possui um identificador único e é auto-certificado, ou seja, todas as ações no repositório, como adição de commits e comentários em issues, são assinadas pelo proprietário com uma assinatura digital, permitindo verificar a precisão dos dados em outros nós sem a utilização de autoridades certificadoras centralizadas. Para acessar o repositório, basta que haja pelo menos um nó online que tenha sua cópia replicada.
Os nós na rede P2P podem se inscrever em repositórios específicos e receber atualizações. É possível criar repositórios privados, acessíveis apenas a nós determinados. A gestão e propriedade do repositório utilizam o conceito de 'delegados'. Um delegado pode ser um usuário individual, um bot ou um grupo, associado a um identificador especial. Delegados podem aceitar patches no repositório, fechar issues e definir permissões de acesso ao repositório. Vários delegados podem ser vinculados a cada repositório.
Os repositórios Radicle são armazenados nos sistemas dos usuários como repositórios git comuns, nos quais existem espaços de nomes adicionais para o armazenamento de dados de pares e forks com os quais se está trabalhando no momento. Discussões, patches propostos e componentes para organização de revisão também são armazenados no repositório git na forma de objetos colaborativos (COB — Collaborative Objects) e replicados entre os pares.
No novo lançamento:
- Reestruturada a implementação de referências assinadas (sigrefs — Signed References), que agora possui proteção contra reutilização de assinaturas. A antiga estrutura de repositório permitia substituir o código por uma versão anterior, reutilizando uma assinatura antiga e válida. Para bloquear esse problema, a nova implementação adicionou um ponteiro para a entrada anterior, coberta pela assinatura atual, formando uma cadeia contínua de alterações, cuja integridade pode ser rastreada em relação à raiz.
- Ampliadas as capacidades de bloqueio de nós, que agora são bloqueados no nível de gerenciamento de conexões. Se anteriormente só se bloqueava a recepção de dados, sem limitar a conexão do nó, agora o bloqueio é aplicado na fase de estabelecimento de conexão com um nó bloqueado e ao receber conexão de um nó bloqueado.
- Permitido o uso de quaisquer referências a objetos externos do Git, exceto ramificações temporárias. Anteriormente, apenas referências a ramificações externas, tags, metadados Radicle, notas e objetos de colaboração eram permitidas.
- Aumentada a clareza das mensagens de erro que surgem ao tentar executar operações para as quais o usuário não possui permissões suficientes.
- A eficiência de entrada/saída foi aumentada. Os desenvolvedores descobriram que, em nós em execução por muito tempo, a combinação das configurações "journal_mode = WAL" e "synchronous = FULL" na base de dados SQLite, utilizada para armazenar o estado local, resulta em um grande volume de operações de entrada/saída. Para reduzir a carga, o parâmetro "synchronous" agora está definido como "NORMAL" por padrão, e foram adicionadas configurações no arquivo de configuração do Radicle para permitir que o usuário altere o valor desses parâmetros.
- Uma vulnerabilidade foi corrigida, cujas informações serão divulgadas em 23 de março. Atualmente, é informado apenas que a equipe de desenvolvedores fez uma varredura em todos os repositórios públicos do Radicle e não encontrou evidências de exploração do problema.
Fonte: opennet.ru
