Dfinity: entenda mais sobre a tecnologia que serve de alicerce ao “Internet Computer”
Confira, na segunda parte do superartigo escrito por 💥️Mira Christanto e 💥️Wilson Withiam, da Messari, do que se trata o projeto Dfinity e seu “Internet Computer” (Imagem: Medium/Dfinity)
💥️Parte 1
Tecnologia
O propósito do Internet Computer é estender a internet pública para que também seja a plataforma computacional do mundo. 💥️Dfinity publicou o 💥️código-fonte em 10 de maio.
Antes disso, as informações técnicas e de design do ICP e o quebra-cabeças criptográfico que faz o Internet Computer funcionar não estavam disponíveis.
Porém, o público sabia que a empresa e a tecnologia continuaram a evoluir, pois alguns métodos discutidos nos últimos anos foram descartados e alterados. Abaixo, resumimos o que Dfinity e sua comunidade compartilharam:
O Internet Computer é um protocolo blockchain computacional, criado da hierarquia de alicerces.
Na base da pirâmide estão os centros independentes de dados espalhados pelo mundo. Hospedam hardwares de nós específicos para o ICP, que se comunicam para atingir um consenso sobre o estado do ICP. Uma coleção de nós que garantem a descentralização é chamado de sub-rede (ou “subnet”).
Centros de dados hospedam nós, combinados para criar “sub-redes” – representação de centros de dados, nós e subnets (Imagem: Messari)
Sub-redes são comparadas a blockchains dentro do IC, os alicerces essenciais de toda a rede. São responsáveis por armazenar um subconjunto distinto de “💥️canisters” de software.
Um canister é um agrupamento de códigos que desenvolvedores podem criar a partir de qualquer linguagem de programação de alto nível (como Rust ou a própria linguagem 💥️Motoko da Dfinity) para criar programas.
Programas podem incluir sites simples, aplicações descentralizadas (💥️dapps) ou softwares empresariais completos. Por exemplo, uma versão descentralizada do Facebook seria hospedada em milhões de canisters. O estado desses canisters é replicado em todos os nós.
Sub-redes hospedam um subconjunto de canisters – representação de centros de dados, nós, sub-redes e canisters (Imagem: Messari)
Já que canisters são unidades computacionais que consistem tanto de códigos como de dados, podem ser análogos a um contrato autônomo avançado da 💥️Ethereum ou um sistema operacional do Windows.
Por exemplo, um sistema operacional pode executar certos processos, como a manipulação de arquivos e a comunicação com dispositivos próximos.
De forma parecida, o IC fornece interfaces de programação de aplicações (API) pública para canisters para que possam interagir entre si, realizar pagamentos, criar e gerenciar outros canisters, gerenciar permissões e obter o tempo do sistema.
Porém, diferente de um sistema operacional, um canister é replicado por todos os nós em uma sub-rede.
Para que o IC escale de forma segura, acrescente novos recursos ou resista a eventos imprevisíveis como desastres naturais — o número e a composição de sub-redes podem ser ajustados.
Por exemplo, novas sub-redes podem ser acrescentadas ou divididas, nós podem ser acrescentados, determinados ou movidos. Como resultado, o IC precisa ser capaz de decidir como evoluir o protocolo. Para tal, o protocolo possui um 💥️Sistema Nervoso da Rede (NNS).
Sistema Nervoso da Rede (NNS)
NNS é responsável por controlar todos os aspectos da rede e é o alicerce do ecossistema Dfinity (Imagem: Medium/Dfinity)
Uma sub-rede é criada pelo NNS, um sistema algorítmico de governança que supervisiona a rede. Como o nome sugere, é o sistema nervoso — controla todos os aspectos da rede. Dentre outras coisas, pode realizar:
& divisões e fusões de sub-redes para equilibrar o processamento em toda a rede. Por exemplo, uma sub-rede pode ter uma dúzia de canisters e se o NNS dividir a sub-rede, uma porção de canisters continuariam com a sub-rede original enquanto o restante seria hospedado sob a nova sub-rede;
& atualizações ao protocolo e do software usado por máquinas de nós;
& combinações de diferentes máquinas de nós de centros de dados discretos. Isso acontece por conta de diversos fatores, como os requisitos da rede, o nível de segurança desejado, a capacidade disponível nos centros de dados e falhas imprevisíveis no hardware;
& configurações de parâmetros econômicos que controlam quanto deve ser pago a usuários por capacidade computacional;
& proteções à rede de agentes maliciosos.
A robustez das sub-redes pode ser melhorada ao acrescentar novos nós para eles ao longo do tempo. Esses nós colaboram usando os protocolos blockchain computacionais do ICP para replicar os dados e computações relacionadas aos canisters de software que hospedam.
O protocolo pode substituir nós falhos ou incomunicáveis por novos nós e também reativar sub-redes completas se muitos dos nós tiverem falhado. Isso permite que o ICP conserte falhas na rede de forma fácil e atualizar novos recursos.
O NNS possui dois canisters importantes: (1) um canister de registro, que armazena a configuração de todo o IC para que todo mundo veja; e (2) um canister de governança que armazena propostas e neurônios para determinar quem tem permissão para participar da governança.
Velocidade
CKT permitem que o IC finalize transações e atualize dados em uma questão de segundos (Imagem: Medium/Dfinity)
No gênese, o IC teve uma taxa de um bloco por segundo (BPS) e, até o fim do ano, a previsão é que aumente para mil BPS. Segundo Williams, teoricamente, 💥️não existe um limite superior de BPS.
Isso é difícil de compreender, de um ponto de vista de blockchain tradicional, mas isso é possível por meio da “Tecnologia de Correntes” (do inglês “Chain Key Technology” ou CKT).
CKT permitem que o IC finalize transações e atualize dados em uma questão de segundos.
Consiste em um conjunto de protocolos criptográficos que orquestram os nós, permitindo que o IC tenha uma chave pública única. Isso indica que qualquer dispositivo podem verificar rapidamente a autenticidade dos dados no IC.
CKT permite que canisters (semelhantes a um contrato autônomo avançado) para todos os canisters armazenem em qualquer sub-rede (assim como um blockchain). Esse modelo distribuído não usa um núcleo (“hub”), diferente de um modelo “hub and spoke” da Polkadot.
O IC espera integrar a componibilidade de serviço. Na versão descentralizada do Facebook e qualquer outro aplicativo teria a permissão para solicitar códigos ou dados do “Facebook Aberto”, como jogos ou filtros de imagem.
O IC pode hospedar inúmeros contratos autônomos, ou seja, os dados estão completamente no blockchain (“on-chain”).
Para superar problemas de escalabilidade, o ICP executa um grande número de canisters de forma simultânea. Isso significa que o blockchain é repartido desde o início (“sharding”). Porém, blockchains repartidos não se comunicam entre si em tempo real.
Canisters fornecem suporte a pedidos de atualizações, limitados pela taxa de processamento do blockchain, mas só leva alguns segundos. No entanto, são diferentes de consultas, que não preservam alterações e são descartadas depois de serem executadas.
Um canister pode atender centenas de consultas ao mesmo tempo. São baratas e finalizadas em poucos milissegundos, permitindo que usuários tenham a experiência de usuários com a qual estão familiarizados na internet tradicional.
Por exemplo, Dscvr.ne é a versão do IC do Reddit. Quando um usuário navega pelo fórum, visualizações personalizadas do conteúdo são apresentadas em seu navegador de internet por solicitações de consulta, operados em milissegundos por um nó próximo.
Porém, se um usuário quiser criar uma publicação ou dar uma recompensa a um autor, envolveria um pedido de atualização, que demoraria alguns segundos.
No futuro, esse atraso seria ocultado pela “execução otimista” — que considera que o pagamento é válido e irá funcionar e, em seguida, poderá ser contestado e revertido.
Consenso
Cada sub-rede tem uma chave de verificação única e permanente ao longo de sua vida útil (Imagem: Medium/Dfinity)
Dado que o ICP une diferentes máquinas ao redor do mundo, cada máquina (ou réplica) deve atingir o consenso sobre quais informações incluir e em qual ordem. Isso garante que o sistema mantenha um estado coerente.
Cada software é executado e replicado por muitas máquinas de nós em todo o mundo e a maioria dos nós, juntos, define o verdadeiro estado do software. Isso significa que exceções, ou máquinas que relatam um estado falso, não farão diferença ao consenso.
Cada sub-rede tem uma chave de verificação única e permanente ao longo de sua vida útil. Os nós na sub-rede terão de estar de acordo (ao atingir um certo limite) e colaborar para assinarem uma mensagem para que a sub-rede possa criar uma assinatura em nome de seus canisters.
Embora um número suficiente de nós seja necessário para que esse limite seja atingido, nem todos os nós precisam concordar — abrindo espaço para defeitos no hardware ou nós maliciosos.
Geração Distribuída e não Interativa de Chaves
No IC, o conjunto de nós que operam uma sub-rede irá evoluir conforme nós podem entrar ou sair de suas respectivas sub-redes. Com nós em fluxo, significa que o grupo de assinantes evolui ao longo do tempo, impedindo que nós registrem e distribuam novas chaves públicas.
Como solução, Dfinity apresentou a Geração Distribuída e não Interativa de Chaves (💥️NI-DKG) — simplificando o gerenciamento de chaves ao sempre referenciar a mesma sub-rede por uma chave pública e estática.
NI-DKG fornece segurança proativa. Esse protocolo de recompartilhamento de chaves é ideal para um ambiente assíncrono, permitindo intervalos mais rápidos entre blocos e escalabilidade ilimitada. Cada um dos assinantes antigos só precisa transmitir uma única mensagem aos novos assinantes.
Para garantir a segurança, muitos conceitos são utilizados — incluindo provas de conhecimento zero (ZPK) não interativas e criptografia com sigilo encaminhado (do inglês “forward secrecy”, ou FS).
💥️Parte 3
O que você está lendo é [Dfinity: entenda mais sobre a tecnologia que serve de alicerce ao “Internet Computer”].Se você quiser saber mais detalhes, leia outros artigos deste site.
Wonderful comments