Pular para o conteúdo

Arquitetura do Cardano

Por volta de 4 min

Esta seção descreve a arquitetura de alto nível do Cardano, fornecendo detalhes sobre os componentes principais e suas interações.

Arquitetura de alto nível do Cardano

O diagrama a seguir esboça a interação entre os componentes do sistema do Cardano:

componentes_cardano

Componentes do sistema

A implementação atual do Cardano é altamente modular. Ela inclui os seguintes componentes (diferentes casos de uso de implantação usarão combinações diferentes de componentes):

Nós e nós remotos

Um sistema de blockchain consiste em um conjunto de nós distribuídos em uma rede que se comunicam entre si para alcançar consensoopen in new window sobre o estado do sistema.

Os nós são responsáveis por:

  • Executar o protocolo Ouroborosopen in new window
  • Validar e retransmitir blocos
  • Produzir blocos (alguns nós)
  • Fornecer informações sobre o estado do blockchain para outros clientes locais

Você só pode confiar nos nós executados por você ou sua organização. É por isso que o Daedalusopen in new window executa um nó em segundo plano.

Processo do Nó

O cardano-node é o nível superior para o nó e consiste nos outros subsistemas, dos quais os mais significativos são consenso, ledgeropen in new window e redes com configuração auxiliar, CLI, registro e monitoramento.

Protocolo IPC Nó-para-Nó

O objetivo do protocolo de Comunicação Inter-Processos (IPC) nó-para-nó é permitir a troca de blocos e transações entre nós como parte do algoritmo de consenso Ouroboros.

O protocolo de nó-para-nó é um protocolo composto, consistindo de três 'mini-protocolos':

  • chain-sync: Usado para seguir a cadeia e obter cabeçalhos de blocos.
  • block-fetch: Usado para obter corpos de blocos.
  • tx-submission: Usado para encaminhar transações.

Esses mini-protocolos são multiplexados em uma única conexão longa de Protocolo de Controle de Transmissão (TCP) entre nós. Eles podem ser executados em ambas direções na mesma conexão TCP para permitir configurações de peer-to-peer (P2P).

O projeto do protocolo é modular e evolutivo: a negociação de versões é usada para concordar com o conjunto de mini-protocolos a serem usados, o que permite que mini-protocolos adicionais ou atualizados sejam adicionados ao longo do tempo sem causar problemas de compatibilidade.

IPC Nó-para-Cliente

O objetivo do protocolo IPC nó-para-cliente é permitir que aplicativos locais interajam com o blockchain por meio do nó. Isso inclui aplicativos como backends de carteira ou exploradores de blockchain. O protocolo nó-para-cliente permite que esses aplicativos acessem os dados brutos da cadeia e consultem o estado atual do ledger. Ele também fornece a capacidade de enviar novas transações para o sistema.

O protocolo nó-para-cliente usa o mesmo design que o protocolo nó-para-nó, mas com um conjunto diferente de mini-protocolos e usando pipes locais em vez de conexões TCP. Como tal, é uma interface estreita relativamente de baixo nível que expõe apenas o que o nó pode fornecer nativamente. Por exemplo, o nó fornece acesso a todos os dados brutos da cadeia, mas não fornece uma maneira de consultar dados na cadeia. A tarefa de fornecer serviços de dados e APIs de nível mais alto mais convenientes é delegada a clientes dedicados, como cardano-db-sync e o backend da carteira.

O protocolo nó-para-cliente consiste em três mini-protocolos:

  • chain-sync: Usado para seguir a cadeia e obter blocos
  • local-tx-submission: Usado para enviar transações
  • local-state-query: Usado para consultar o estado do ledger

A versão de sincronização de cadeia nó-para-cliente usa blocos completos, em vez de apenas cabeçalhos de blocos. É por isso que não é necessário um protocolo de busca de blocos separado. O protocolo de submissão de transações local é semelhante ao protocolo de submissão de transações nó-para-nó, mas mais simples, e retorna os detalhes das falhas de validação da transação. O protocolo de consulta de estado local fornece acesso de consulta ao estado atual do ledger, que contém muitos dados interessantes que não são diretamente refletidos na própria cadeia.

Leia mais sobre o design do protocolo de rede e os protocolos de comunicação do nó Cardano.open in new window

Interface de linha de comando (CLI)

A ferramenta CLI do nó é a 'faca suíça' do sistema. Ela pode fazer quase tudo, mas é bastante de baixo nível e não muito conveniente porque é baseada em texto e não possui uma interface gráfica do usuário (GUI).

A ferramenta CLI pode:

  • Consultar o nó para obter informações
  • Enviar transações
  • Construir e assinar transações
  • Gerenciar chaves criptográficas

Carteira Daedalus

Daedalus é uma carteira de nó completa que ajuda os usuários a gerenciar suas ada e pode enviar e receber pagamentos na blockchain Cardano. Daedalus consiste em um frontend de carteira e um backend. O frontend é o aplicativo gráfico que os usuários veem e interagem. O backend é um processo de serviço que monitora o estado da carteira do usuário e realiza todo o 'trabalho pesado', como seleção de moeda, construção e envio de transações. O backend interage com um nó local via o protocolo IPC nó-para-cliente, e interage com o frontend via uma API HTTP. O backend também fornece uma CLI que permite a interação com a carteira. O backend da carteira também pode ser usado sozinho -sem Daedalus- por meio de sua API. Esta é uma maneira conveniente para desenvolvedores de software integrar Cardano com outros aplicativos e sistemas.

Recomendamos que a maioria dos usuários avançados que pretendem usar o Cardano comecem com o Daedalus.

cardano-db-sync

O nó do Cardano armazena apenas a própria blockchain e informações associadas necessárias para validar a blockchain. Este princípio de design é sobre minimizar a complexidade do código e reduzir o custo computacional e o uso de recursos, para manter o as interfaces locais do nó o mais mínimas possível e usar clientes externos para fornecer uma variedade de interfaces convenientes e funcionalidades extras. Em particular, o nó não fornece uma interface de consulta conveniente para informações históricas sobre a blockchain. Este serviço de dados é fornecido por um componente separado usando um banco de dados SQL.

Saiba mais sobre:

Última atualização:
Contribuidores: cauechianca