Aumentando o Desempenho de Blockchains Públicas Através da Execução Paralela de Transações
Paralelismo, Blockchain, Conflitos
As soluções para blockchains geralmente executam transações sequencialmente pelos mineradores, permitindo que validadores reproduzam esta execução para validar o seu resultado. Porém, tal abordagem é incapaz de explorar os recursos multi-core modernos de forma eficiente, limitando assim o desempenho e aumentando a latência das aplicações.
Neste sentido, este trabalho pretende realizar estudos a respeito de conceitos, modelos e problemas envolvendo execuções paralelas em blockchains públicas e, a partir dos mesmos, propor novas técnicas e protocolos para permitir paralelismo tanto dentro de um nó da rede quanto através do emprego de sharding.
Soluções existentes que permitem execução paralela de uma parte das transações por um nó da rede geralmente fazem uso de análise estática (antes da execução) ou utilizam um grafo acíclico dirigido (DAG) para lidar com conflitos/dependências entre transações. Este trabalho propõe uma nova solução para permitir execuções paralelas em uma blockchain utilizando análise dinâmica de conflitos através da utilização de um DAG onde os conflitos de uma transação podem ser auto-verificados pelos validadores.
Por outro lado, os protocolos existentes para sharding utilizam o poder de sincronização de uma cadeia (blockchain) global para lidar com transações que acessam mais de um shard e também para distribuir os nós entre os \textit{shards} de forma a impedir que algum dos shards seja comprometido por receber uma quantidade maior de nós desonestos. Esta blockchain global representa um ponto central e pode prejudicar o desempenho do sistema. Assim, este trabalho busca propor uma solução completamente descentralizada que não utiliza esta blockchain ou qualquer outro mecanismo custoso de sincronização.
Finalmente, pretende-se avaliar experimentalmente os ganhos de cada uma das técnicas
propostas, ou delas combinadas, considerando-se diferentes aplicações.