Quantcast
Channel: Português - Cardano Forum
Viewing all articles
Browse latest Browse all 85

Qual é o futuro da escalabilidade Cardano?

$
0
0

Qual é o futuro da escalabilidade Cardano?

Autor: cardaniansio

Este artigo analisará a escalabilidade atual da Cardano e considerará o quanto os endossantes de entrada podem melhorá-la. Não cobriremos Hydra ou outras opções para escalar Cardano. A melhoria mais próxima da escalabilidade da primeira camada serão os endossantes de entrada (embora possa haver alguma melhoria parcial antes disso).

Escalabilidade atual da Cardano

As transações por segundo (TPS) podem nos dizer quantas pessoas podem usar a rede em um determinado período de tempo. TPS é o rendimento máximo da rede.

Para Cardano, o TPS não é uma métrica adequada. O modelo contábil baseado em UTxO permite o envio de múltiplos ativos para múltiplos destinatários em uma única transação. Tais transações podem enviar ativos para 100 destinatários e são significativamente menores do que se a rede tivesse que processar 100 transações individuais.

Veja o tipo de transações que Cardano processa atualmente. Você descobrirá que cerca de 60% são transações SC, 35% são transações simples (Alice envia ativos para Bob) e 5% são transações com metadados.

Para simplificar, usaremos a métrica TPS no artigo e, na maioria dos casos, consideraremos apenas transações simples.

Calcular o TPS é relativamente fácil. Para uma estimativa aproximada, precisamos apenas saber o tamanho do bloco, o tamanho médio da transação e a frequência do bloco. Cardano cria um novo bloco a cada 20 segundos. O tamanho máximo de um bloco e de uma transação é definido pelos seguintes parâmetros de protocolo:

  • Tamanho máximo do bloco: 90.112 bytes
  • Tamanho máximo do TX: 16.384 bytes

Uma simples transação Cardano pode ter um tamanho de 250 a 500 bytes. Na maioria das vezes você verá uma transação de 300 bytes. As transações SC ou transações com múltiplas entradas ou saídas são obviamente maiores.

Quanto mais entradas e saídas uma transação tiver, maior ela será. Normalmente, é obtida uma grande entrada, a partir da qual são criadas duas saídas. Uma saída é recebida pelo destinatário e a outra saída retorna parte dos ativos ao remetente. A transação deve conter uma testemunha (100-200 bytes).

Se considerarmos que só haverá transações com tamanho de 300 bytes no bloco, 300 delas caberiam no bloco. Se dividirmos esse número por 20 segundos (a frequência de cunhagem de blocos), obteremos um TPS de 15. Se considerarmos que haveria apenas grandes transações SC com tamanho de 16.000 bytes no bloco, cerca de 6 delas caberiam no bloco. O TPS seria de apenas 0,3.

No entanto, uma grande transação SC poderia conter cerca de 250 destinatários, de modo que 1.500 destinatários seriam atendidos em um bloco. Se calculássemos o TPS não por transações, mas por destinatários, obteríamos 75.

Considerando o tipo atual de transações, o rendimento máximo atual do Cardano é de aproximadamente 40-50 destinatários por segundo. Isso é cerca de 3x mais do que se considerássemos apenas o TPS e as transações simples.

É preciso perceber que o tamanho do bloco Cardano é relativamente pequeno comparado a outras blockchains.

Os blocos Bitcoin têm um tamanho máximo teórico de 4 megabytes (SegWit). Um tamanho máximo de bloco mais realista é de 2 megabytes. A média foi de cerca de 1,6 megabytes no ano passado. O Bitcoin extrai novos blocos em média a cada 10 minutos. O Bitcoin pode lidar com cerca de 7 TPS.

Ethereum cunha novos blocos em média a cada 12 segundos. O tamanho do bloco Ethereum não é fixo (não é limitado pelo tamanho do bloco em bytes), mas depende da quantidade de GAS utilizada pelas transações incluídas em cada bloco. O limite GAS (complexidade da execução das transações) determina o tamanho do bloco. Pode ser ajustado dinamicamente. Atualmente, o limite de GAS está definido para 15M. Nos últimos meses, os tamanhos dos blocos variam de 140 a 170 kilobytes. Ethereum cunha cerca de 7.200 blocos por dia e confirma cerca de 1 milhão de transações. Existem cerca de 140 transações em blocos. A transação média do Ethereum é de cerca de 1.000 bytes. Atualmente, o Ethereum está operando perto do seu limite de capacidade e seu TPS é 12.

Algorand tem um tamanho de bloco de 5 MB e um tempo de bloqueio de 3,3 segundos. Ele pode fazer 6.000 TPS e a equipe planeja melhorar para 10.000.

O Bitcoin tem um longo tempo de bloqueio, mas graças a isso pode ter um tamanho de bloco grande. O TPS é limitado principalmente pelo tempo de bloqueio. Ethereum tem cerca de metade do tempo de bloco menor que Cardano e, ao mesmo tempo, tamanho de bloco aproximadamente 2x maior. Ainda assim, o TPS atual é 12. Se contarmos apenas transações simples de, digamos, 500 bytes, o TPS poderia ser em torno de 30. Isso seria cerca de 2x mais do que Cardano.

Algorand tem um tamanho de bloco grande e ao mesmo tempo um tempo de bloco muito baixo. Esta é uma das razões para o elevado TPS. Falaremos mais sobre este projeto em conexão com os endossantes de entrada.

O tamanho dos blocos Cardano poderia muito provavelmente ser aumentado para 180 kilobytes e a frequência de cunhagem de blocos poderia ser definida para 15 segundos sem um impacto negativo no desempenho. Nesse caso, o TPS seria 40, um pouco superior ao Ethereum.

No entanto, um aumento de 10 TPS não faria uma diferença significativa. Blockchains devem ser capazes de escalar na ordem de milhares de TPS dentro de alguns anos. Diz-se que algumas redes já são capazes de fazer isso. A missão de Cardano exige chegar a números semelhantes. Cardano pode chegar lá por meio de endossantes de entrada?

Endossantes de entrada

Os endossantes de entrada podem aumentar o rendimento e a velocidade da Cardano, pois as transações podem ser transmitidas constantemente sem esperar por consenso. Em vez de ter um bloco que contém dados de transação, Cardano terá três tipos de blocos: blocos de classificação, blocos de endosso e blocos de entrada. As transações serão apenas em blocos de entrada. Os blocos de endosso farão referência a vários blocos de entrada.

Este é um conceito muito semelhante que Algorand já implementou. É chamado de pipelining de bloco. Algorand utiliza o conceito de referências de transação e esse é um dos motivos do alto TPS (claro que não é o único motivo). Antes de entrarmos nos Endossantes de Entrada, vamos explicar brevemente como funciona o pipelining de blocos na Algorand.

A rede Algorand seleciona aleatoriamente um comitê de usuários para cada bloco, que então propõe e vota no bloco em um único turno.

Existem dois tipos de blocos na Algorand: blocos-chave e microblocos. Blocos-chave são usados para alcançar consenso na rede. Além de outras coisas (informações sobre o proponente, o comitê, etc.), os blocos-chave fazem referência a vários microblocos. Microblocos são usados para armazenar dados de transações.

O comitê vota apenas em blocos-chave, não em microblocos. Os microblocos são verificados pelos nós participantes antes de serem incluídos no bloco chave.

Algorand inclui apenas referências às mudanças de estado nos blocos-chave, em vez de todo o estado do livro-razão. Uma referência é apenas um hash de 32B das mudanças de estado que ocorreram em um bloco. Hash é muito menor do que armazenar todo o estado. Isso reduz o tamanho dos blocos-chave e permite uma propagação e verificação mais rápidas dos blocos pela rede.

Endossantes de entrada e pipeline de bloco têm muitas semelhanças:

  • Ambos os recursos dividem o bloco em duas partes: uma para consenso e outra para transações.
  • Ambos os recursos permitem o streaming constante de blocos de transações, independentemente do processo de consenso.
  • Ambos os recursos visam aumentar o rendimento e a velocidade da rede, reduzindo os tempos de propagação dos blocos e permitindo taxas de transação mais altas.

Pode-se dizer que a equipe do IOG implementa uma solução semelhante que já funciona na prática. Por outro lado, também existem diferenças em ambas as soluções. A maior diferença é provavelmente que o pipeline de blocos da Algorand depende de uma única camada de blocos de endosso, enquanto os Endossantes de Entrada da Cardano dependem de uma estrutura hierárquica de blocos de entrada, endosso e classificação.

Vamos descrever os blocos que serão usados na Cardano após a entrega do recurso Input Endorsers. Nós o descrevemos de cima (o consenso da rede) para baixo (dados).

  • Os blocos de classificação são usados para alcançar consenso na rede Cardano. Eles são semelhantes aos blocos atuais, exceto pelo fato de não conterem nenhum dado de transação. Em vez disso, contêm uma referência a um conjunto de blocos de endosso compatíveis entre si. Além disso, cada bloco de classificação contém uma assinatura do produtor do bloco que o criou. Os blocos de classificação são produzidos pelos líderes dos slots, que são selecionados aleatoriamente pelo protocolo de acordo com a sua aposta. Os blocos de classificação são responsáveis por manter a segurança e a finalidade do blockchain. Eles podem ser produzidos a cada 15-30 segundos.
  • Os blocos de endosso contêm uma referência a um único bloco de entrada, juntamente com uma assinatura do endossante de entrada que o criou. Eles são produzidos e transmitidos por endossantes de insumos e estão sujeitos a uma verificação de validade pelos produtores de blocos. Os blocos de endosso têm um bloco pai, que é o último bloco de classificação na cadeia, e podem ter vários blocos filhos (compatíveis). Eles podem ser produzidos a cada 5 a 10 segundos.
  • Os blocos de entrada contêm os dados da transação. Eles são produzidos e transmitidos por endossantes de entrada, que são partes interessadas selecionadas aleatoriamente que podem escolher transações do pool de memória e propagá-las pela rede. Os blocos de entrada não possuem blocos pai ou filho e não participam do processo de consenso. Eles são simplesmente uma forma de transmitir transações para a rede. Eles podem ser produzidos a cada 0,2-2 segundos.

Os blocos de endosso contêm uma referência a apenas um bloco de entrada. Um bloco de endosso pode ser referenciado por outros blocos de endosso que sejam compatíveis com ele.

Por exemplo, se um bloco de endosso EB-1 faz referência a um bloco de entrada IB-1, e outro bloco de endosso EB-2 faz referência a um bloco de entrada IB-2, e tanto IB-1 quanto IB-2 não têm transações conflitantes, então EB- 2 pode fazer referência ao EB-1 como seu bloco pai. Dessa forma, o EB-2 se torna um bloco filho do EB-1, e tanto o EB-1 quanto o EB-2 são compatíveis entre si. Isso permite a criação de uma estrutura em forma de árvore de blocos de endosso, onde cada filial representa um conjunto diferente de transações que podem ser incluídas no razão através do próximo bloco de classificação.

O objetivo de ter vários blocos filhos para um bloco de endosso é aumentar as chances de encontrar um conjunto compatível de blocos de endosso para cada bloco de classificação. Um bloco de classificação pode fazer referência a um conjunto de blocos de endosso compatíveis entre si, o que significa que eles não possuem transações conflitantes em seus blocos de entrada referenciados. Ao ter vários blocos filhos para um bloco de endosso, o produtor do bloco pode escolher a melhor ramificação que maximiza o número de transações que podem ser incluídas no razão.

Explicaremos os endossantes de entrada com mais detalhes em outro artigo (incluindo fotos). Neste artigo, queríamos esclarecer os conceitos básicos.

A coisa mais importante a observar é que os blocos com transações podem ser cunhados (transmitidos) essencialmente de forma constante (a cada 0,2-2 segundos). Isso significa que, em vez de criar um bloco de dados a cada 20 segundos, de 10 a 100 blocos de entrada podem ser criados durante o mesmo tempo. A alta frequência de cunhagem de blocos de entrada não impede o consenso da rede.

Agora vamos nos concentrar no aumento potencial da escalabilidade.

Um bloco Cardano pode conter 300 transações simples. Se o tempo de bloqueio para blocos de entrada for definido como 2 segundos, 10 blocos serão criados em 20 segundos, o que corresponde a 3.000 transações. Se for definido como 0,2 segundos, haverá 100 blocos com 30.000 transações.

Portanto, o TPS aumentará para 150 a 1.500.

Se a camada de rede permitisse aumentar o tamanho dos blocos de entrada, teria um impacto positivo no TPS. Ao aumentar o bloco de entrada para 180 kilobytes, Cardano poderia ter um TPS em torno de 300 a 3.000.

O aumento da escalabilidade depende de muitas outras qualidades e tecnologias de rede, como pipeline de difusão, Mithril, etc. O recurso Input Endorsers pode ser usado de forma mais eficaz se outras propriedades individuais da rede puderem ser melhoradas.

É importante referir que os TPS que apresentamos são apenas indicativos. Na prática, haverá conflito entre as transações, portanto é possível que apenas parte dos blocos de endosso entre nos blocos de classificação em determinadas rodadas.

O aumento potencial na escalabilidade que os endossantes de entrada podem trazer não se trata apenas de blocos de entrada (e do número de transações neles), mas também de blocos de classificação.

Os blocos de classificação estão sujeitos a uma verificação de validade por parte dos produtores dos blocos, que devem garantir que seguem as regras do protocolo e os parâmetros de consenso. A verificação de validade exigirá mais recursos, pois será necessário verificar mais transações. Os blocos de classificação também têm tamanho e frequência de cunhagem limitados. Determina quantas referências podem ser incluídas em um bloco de classificação e com que frequência elas podem ser produzidas (15 a 30 segundos). A escalabilidade é, portanto, limitada não apenas pelos blocos de entrada, mas também pelos blocos de classificação.

As redes Blockchain não podem gerar um número ilimitado de transações, pois isso gera uma enorme quantidade de dados. A disponibilidade de dados é um dos aspectos cruciais da escalabilidade do blockchain. Numa rede descentralizada, a verificação de validade ocorre em nós localizados em todo o mundo. Os dados devem estar disponíveis para que eles possam fazer a verificação.

Quanto maior o tamanho do bloco, mais transações podem ser processadas no bloco, mas também mais largura de banda e armazenamento são necessários dos nós. Quanto menor o tempo de bloqueio, mais rapidamente as transações podem ser confirmadas, mas também maior o risco de bifurcações e blocos órfãos.

As equipes devem equilibrar cuidadosamente a descentralização e a escalabilidade. O aumento da escalabilidade pode ter um impacto negativo na descentralização, pois pode reduzir o número e a diversidade de nós que podem participar no consenso da rede e aumentar o poder de certos nós sobre outros.

Conclusão

Os endossantes de entrada podem não ser a última melhoria no protocolo Cardano. Costuma-se dizer que a fragmentação é essencial para alta escalabilidade. Contudo, o sharding também tem as suas desvantagens, resultantes principalmente da necessidade de comunicação e sincronização entre os shards. Cardano pode ter fragmentação após a implementação dos endossantes de entrada. Um fragmento poderia ter um TPS mais ou menos como a rede Cardano com endossantes de entrada. Portanto, um Cardano com 10 fragmentos poderia ter um TPS de cerca de 20.000. No entanto, isso está muito longe no futuro e muitos detalhes tecnológicos teriam que ser resolvidos. Por exemplo, fragmentar no nível de armazenamento, melhorar o Mithril e ter clientes leves, pensar em podar (jogar fora transações antigas), etc.

Você gostou deste artigo? Por favor, compartilhe, obrigado!

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 85