Otimizando Cardano - Gustavo Kennedy Renkel

O caminho para a otimização da rede reside em ajustes graduais passo a passo

Como #blockchain de prova de aposta, o Cardano foi desenvolvido para ser altamente seguro e resistente a falhas de rede. Impulsionado pelo algoritmo de consenso #Ouroboros, Haskell integrado que usa métodos formais e pesquisa acadêmica revisada por pares, Cardano foi projetado para fornecer um ambiente sólido para processar milhões de transações globalmente, de maneira descentralizada e altamente escalável.

O Cardano foi construído para ser flexível. Ele é projetado para maximizar o rendimento e, ao mesmo tempo, permitir a capacidade de resposta à crescente demanda. Conforme a rede cresce, estamos ajustando os parâmetros do protocolo para ajustar as flutuações de preços, estender as propriedades de escalabilidade e taxa de transferência. Portanto, vamos dar uma olhada mais de perto em como estaremos otimizando o desempenho da rede ao longo do tempo.

Definindo congestionamento

Sistemas eficientes – de redes a estradas – são construídos para minimizar o congestionamento, enquanto permitem um gerenciamento eficaz quando isso acontece. Em termos de blockchain, o congestionamento implica que a rede está supersaturada e enfrenta dificuldades ao processar grandes volumes de transações e assinar blocos associados. Em média, os blocos Cardano são aproximadamente 25% utilizados em uma determinada época, o que mostra que, geralmente, a rede não está congestionada e há capacidade sobressalente significativa para processar um número ainda maior de transações.

Cardano é projetado para ser justo e altamente resiliente, mesmo sob forte saturação. Vamos nos lembrar sobre as configurações de parâmetros atuais e olhar para as otimizações futuras que estão planejadas. As métricas de desempenho atuais dependem das seguintes medidas:

  • Taxa de transferência – o volume de dados transferidos. O tamanho do bloco atual é definido como 64 KB. Uma única transação de script Plutus está atualmente limitada a 16 KB, e transações simples podem normalmente ocupar cerca de 300 bytes. Essas medidas foram balanceadas para garantir uma boa utilização da rede e, ao mesmo tempo, minimizar as latências de transação. Se for aumentado significativamente e de uma só vez, os usuários enfrentarão um atraso maior no tempo de adoção do bloco. Isso ocorre porque a taxa de transferência e a pontualidade estão em conflito – maximizar a taxa de transferência implica em melhor desempenho da rede, mas isso pode vir à custa de um atraso maior quando o sistema está muito saturado.
  • Oportunidade – ou seja, o tempo de adoção do bloco. O ‘orçamento’ total para adoção de bloco é definido em 5 segundos para um bloco se propagar pela rede (95% da aposta) com um orçamento de aproximadamente 50 milissegundos disponíveis para scripts Plutus. Isso é projetado para permitir que o bloco inclua scripts e transações simples sem monopolização.

Recentemente, os usuários registraram um aumento no tempo de espera para o processamento de transações, causado por grandes quedas de NFT (token não fungível). A razão para esta supersaturação reside no fato de que uma grande quantidade de NFTs foi liberada de uma vez, o que causou o seguinte:

  • um grande número de transações NFT simultâneas
  • vários usuários tentando comprar o mesmo NFT e, portanto, tentando processar transações ao mesmo tempo
  • transações de reembolso simultâneas para usuários que não conseguiram comprar o NFT

Este cenário criou escassez de rede para a venda de NFT e, portanto, uma grande demanda no serviço – 43.000% da oferta. É importante notar também que o período de ‘congestionamento’ durou menos de uma hora.

Este é um mercado em crescimento e os criadores de NFT já estão começando a iterar seus processos para minimizar o impacto de tais quedas na experiência do usuário. Ainda é cedo e estamos todos aprendendo rápido. Deve-se notar que o processo de cunhagem de NFTs é perfeitamente paralelizável, o que significa que não há limite para este processo. Depois de cunhados, os NFTs que armazenam o código de troca programável e os ativos necessários para a transação estão prontos para interagir com o mercado.

Mas, pelo menos a curto e médio prazo, trata-se de construir sistemas de tráfego mais eficientes, em vez de alargar as estradas. Alguns desenvolvedores já estão produzindo tais sistemas especificamente para quedas de NFT, o que deve reduzir custos, bem como cargas de rede de curto prazo.

Trocas descentralizadas (DEXs)

Muitos dos primeiros DApps sendo construídos no Cardano são DEXs ou Trocas Descentralizadas. E, em alguns aplicativos, os usuários tendem a ter contenção ao fazer seus pedidos. Como os pré-requisitos de design DApp de que todo o estado é mantido em um UTXO (em vez de espalhar por vários UTXOs), ocorre uma dependência de uma transação futura em uma saída de uma transação anterior. Isso tem sido amplamente referido como o ‘problema’ de simultaneidade. No entanto, apresentando novamente aquela analogia com o automóvel, não é mais um “problema” do que dirigir pela esquerda é um “problema” no Reino Unido ou no Japão. Exige uma curva de aprendizado, mas, em última análise, é apenas uma maneira diferente de fazer as coisas. E se um desenvolvedor não fizer isso, sim, eles vão encontrar problemas! Nem é inerentemente mais complexo – requer apenas uma abordagem diferente.

O modelo EUTXO da Cardano é diferente do modelo baseado em conta. Os DApps construídos no Cardano devem se afastar do estilo de máquina de estado de thread único e descer um nível de abstração para o EUTXO diretamente, construindo uma solução que envolve bordas concorrentes no gráfico EUTXO. É importante usar diferentes conjuntos de UTXOs, reforçando assim o paralelismo que irá melhorar o rendimento do sistema enquanto mantém o mesmo desempenho de operações individuais. Claro, isso exige uma mudança de mentalidade para qualquer desenvolvedor acostumado com a abordagem do Ethereum. Ainda assim, o modelo baseado em UTXO é mais seguro do que o modelo baseado em conta porque manter todo o estado em uma única conta é mais vulnerável a ataques. Se estiver usando técnicas de paralelismo corretamente, os usuários desfrutarão de melhores resultados em termos de rendimento e escalabilidade, enquanto as soluções fora da cadeia são mais aplicáveis ​​a livros UTXO. Para mais detalhes, leia opostagem no blog de simultaneidade e como construir um Plutus DApp escalonável . Publicaremos mais conteúdo sobre isso no devido tempo para fornecer orientação adicional sobre como aproveitar ao máximo o modelo.

O roteiro de otimização

Nosso foco no lançamento sempre foi fornecer capacidade básica e correção, antes de otimizar. Este sempre foi nosso objetivo declarado. Continuamos monitorando o desempenho e os ajustes de benchmark. Conforme a rede cresce e o Cardano funciona com maior capacidade, estaremos ajustando a parametrização para acompanhar a demanda da rede. Essas são atualizações graduais que serão implementadas passo a passo nos próximos meses para garantir que as mudanças atendam aos requisitos da rede e não comprometam as diferentes propriedades.

Realizamos análises extensas e começamos a implementar métricas de nós que medem com precisão o tempo de difusão de dados. A difusão de dados é o processo de distribuição de transações e blocos entre nós que verificam o blockchain. É essencial fornecer aos nós as informações necessárias para que o algoritmo de consenso possa tomar suas decisões.

Provavelmente estaremos implementando um tempo médio de espera desde o envio da transação até a adoção da transação. Junto com isso, estamos investigando e analisando cenários que irão impulsionar o desempenho da rede iterativamente em curto e longo prazo, incluindo:

  • Aumento do tamanho do bloco – o tamanho do bloco aumentado significa mais transações em um bloco. A vantagem é que haverá menos tempo de espera para que as transações sejam adotadas por um bloco durante os períodos de saturação da rede. No entanto, há uma compensação. Blocos maiores demoram mais para se propagar pela rede. Isso também significa que os nós precisarão de mais tempo para verificar as transações. Embora o aumento do tamanho do bloco seja uma opção para aumentar o desempenho da rede, tais alterações devem ser executadas com cautela. Para garantir que o aumento não comprometa o tempo de adoção do bloco, iremos alterar gradualmente os parâmetros e avaliar os resultados durante os períodos de alta saturação. Esta não é uma atualização de uma etapa, mas sim uma abordagem iterativa que nos fornecerá resultados claros e ajudará a garantir os ajustes mais eficientes.
  • Tamanho do mempool – atualmente, o tamanho do mempool é definido como 128 KB, que é o dobro do tamanho do bloco atual. O mempool funciona como o buffer de rede e pode causar um pequeno atraso ao incluir transações em um bloco. No entanto, o aumento do tamanho do mempool não melhorará o rendimento da rede – as filas de transações permanecerão as mesmas. O mempool permite uma adoção justa de novas transações que entram nele aleatoriamente com base no nó de produção que é escolhido pelo algoritmo de loteria.
  • Compactação de script – dado que o tamanho da transação atual está definido para 16 KB, continuamos trabalhando na compactação, que permite ao protocolo ‘compactar’ o código de maneira transparente. Isso significa mais transações de script em um bloco devido ao seu tamanho reduzido – os desenvolvedores poderão enviar um código mais sofisticado, compactando-o para 16 KB ou menos, e haverá mais espaço para outras transações.

Architecting for EUTXO

Conforme descrito em nossa postagem anterior no blog sobre simultaneidade , o modelo EUTXO de Cardano elimina classes inteiras de problemas ao projetar aplicativos DeFi. Além da capacidade nativa do EUTXO de processar transações em paralelo, a natureza determinística do modelo garante que os desenvolvedores e usuários possam evitar o desperdício de ‘gás’.

Dito isso, o modelo EUTXO não é o mesmo que o modelo baseado em conta. Elevar e mudar a arquitetura de aplicativo destinada a sistemas baseados em contas para um sistema baseado em EUTXO resultará em um design de aplicativo abaixo do ideal. Os aplicativos projetados especificamente para o modelo EUTXO da Cardano proporcionarão a melhor experiência do usuário.

Em breve publicaremos um mergulho técnico mais profundo sobre como os desenvolvedores podem otimizar o envio e o processamento de pedidos, por exemplo, para o modelo EUTXO.

Iteração e Melhoria

Portanto, há muito trabalho sendo feito nos bastidores à medida que continuamos a evoluir e iterar. Ainda estamos no início e iremos avaliar continuamente o desempenho da rede e ajustar os parâmetros conforme avançamos. No curto prazo, seremos capazes de aliviar o congestionamento da queda do NFT, distribuindo de maneira mais uniforme a distribuição da aposta e o cálculo da distribuição de recompensa. Isso, por sua vez, nos permitirá aumentar o tamanho do bloco, eliminar pausas e congestionamentos nos limites de época e remover picos computacionais (que podem causar uma propagação de bloco mais lenta). O aumento gradual do tamanho do bloco também nos permitirá avaliar os melhores cenários de desempenho da rede e esses resultados logo estarão visíveis na rede.

Também planejamos mover o estado do razão para armazenamento em disco para facilitar o carregamento na cadeia, junto com a compactação de script e implementação de recursos de compartilhamento na cadeia. Quando finalizados, eles complementarão muito os ajustes de rede.

No médio prazo, Hydra trará capacidade adicional. A longo prazo, nosso cientista-chefe e equipe continuam pesquisando outros métodos e mecanismos em torno de estruturas de preços e aprimorando o protocolo Ouroboros para aumentar o rendimento da transação. Mais sobre isso em futuras postagens do blog!

Dois meses em

Passamos apenas dois meses desde o início da era dos contratos inteligentes em Cardano. Seja qual for o peso da expectativa e antecipação em torno do ‘lançamento’, isso nunca seria uma atualização de um só clique. Assim como sempre levaria tempo para que o ecossistema ganhasse impulso, sempre haveria um período de assentamento e ajuste, conforme as demandas na rede aumentassem. Estamos em uma jornada e entender o feedback da comunidade continua sendo fundamental. Conversando com muitos dos novos e empolgantes projetos #BuildingOnCardano, estamos construindo uma melhor compreensão de seus planos e objetivos – junto com quaisquer problemas que eles estejam enfrentando – para que possamos apoiar e servir conforme necessário. Também estamos acompanhando de perto o debate da comunidade.

Fonte: Optimizing – Cardano