Sentei-me com Mahnush, que faz parte da equipe DFINITY há muito tempo, para discutir as diversas inovações que a DFINITY irá lançar. Os tópicos abrangem termos como assinaturas de limite, beacons aleatórios e geração de chave distribuída. Não discutimos apenas esses conceitos, mas também por que eles são tão importantes.
Olá e bem-vindo a mais um episódio de Inside DFINITY. Hoje vou conversar com Mahnush, que se juntou a nós desde muito cedo como pesquisador. Ela é de Yale e hoje vamos dar uma olhada no que ela faz no DFINITY, o que ela fez antes, e depois também nos dará alguns insights sobre algumas das tecnologias e inovações que o DFINITY desenvolveu.
Obrigado, você ingressou no DFINITY muito cedo. Você tem sido uma parte fundamental de nossa equipe de pesquisa desde nossos primeiros dias. Talvez para pessoas que ainda não ouviram falar de você: “O que você está fazendo aqui?”
Então, sou um pesquisador e o que faço é ajudar e projetar a camada de consenso e provar a segurança da camada de consenso e dos beacons aleatórios.
Meu trabalho diário é coletar ideias da equipe, torná-las mais formais para que possamos entendê-las entre si e escrevê-las formalmente, e então gosto de provar que são seguras para que possamos usá-las.
Acho que uma boa maneira que você me descreveu ontem é: “Pego tudo o que propomos e certifico que é seguro”. Certifico que é seguro, para o que estamos tentando construir com DFINITY. Algo que considero um atributo muito importante.
O que o levou a esta posição? o que você fez antes? De onde você é?
Antes de ingressar no DFINITY, fiz pós-doutorado na Universidade de Yale. Antes disso, eu era estudante de doutorado. No meu doutorado, trabalhei com segurança, como computação multipartidária.
Computação multipartidária segura
A computação multipartidária segura é onde você deve garantir que todas as partes cheguem a um acordo. Uma parte importante da computação é a saída, com a qual todos devem concordar. Portanto, o consenso e o acordo bizantino são partes importantes do protocolo MPC. É por isso que estou interessado em protocolos de consenso.
Depois, enquanto estava em Yale, tentei construir um protocolo de consenso que se estendesse a milhões de partidos, utilizando um protocolo baseado em comités. Aí conheci Timo e Dominic e descobri que o DFINITY estava tentando fazer a mesma coisa, o que foi interessante para mim.
É ótimo ter você. Sei que fizemos muito progresso desde que você entrou, incluindo o white paper que lançamos no início deste ano, e sei que você passou muitas noites sem dormir trabalhando nisso.
computação em nuvem
Que enigma ou alguma questão interessante estamos tentando resolver aqui? Acho que o que estamos tentando fazer no DFINITY é uma nova versão da computação em nuvem, que, se você pensar bem, é na verdade um replicador de estado.
Porque você precisa ter muitas réplicas para não perder computação ou dados, mas todas elas devem ter um acordo. Porque se alguns deles pensam que algo é final e algumas outras cópias pensam que outra coisa é final, então os usuários não saberão qual versão está correta.
Portanto, garantir que todas essas cópias sejam consistentes é uma parte muito importante do DFINITY. É por isso que os protocolos de consenso são frequentemente muito importantes para o DFINITY.
Agora, se todas as réplicas forem honestas, isso será muito mais fácil porque podemos garantir que, por exemplo, se no Google Cloud você tiver várias réplicas e tiver certeza de que todas as réplicas são controladas pelo Google, então... certo, Portanto, como todos são controlados pelo Google, você pode ter certeza de que todos os computadores podem aplicar o mesmo algoritmo.
É isso que você está dizendo: "Eles são todos honestos!" Sim, é muito mais fácil para eles, já que todos pertencem a um grupo central, mas ao mesmo tempo você precisa confiar no Google para garantir o algoritmo que eles usam. correr é honesto.
réplica
No entanto, na DFINITY queremos garantir que todas as pessoas no mundo possam ter uma cópia, em vez de assumir que todas as cópias são propriedade da DFINITY. Portanto, é uma abordagem mais aberta à computação em nuvem.
Os usuários não precisam confiar no DFINITY, mas podem confiar nos protocolos executados pelo DFINITY. Em algum momento, também será de código aberto, certo? O que significa que todos podem ver o código e todos podem ter uma cópia?
Basicamente, isso significa que todos podem se tornar mineradores em nosso sistema, enquanto os mineradores ainda são necessários no DFINITY. Embora não resolvam o quebra-cabeça da prova de trabalho, eles constituem o poder de computação distribuído no DFINITY.
Eles estão ajudando nos cálculos, ajudando na manutenção dos dados e ajudando na manutenção dos cálculos dos dados.
Protocolo Prático de Tolerância a Falhas Bizantinas
Se as réplicas forem diferentes, como computadores em domínios diferentes, algumas delas poderão estar corrompidas ou adversárias. Na ciência da computação, chamamos isso de Bizantino porque vem do Problema dos Generais Bizantinos.
Bem, resolver esse problema é um problema muito difícil que persiste na ciência da computação nos últimos 40 anos. E todos estão tentando melhorar a solução porque é um problema muito básico.
Se você resolver esse problema de forma eficaz, resolverá muitos problemas além dele. Agora, diferentes tentativas são novas formas de resolver o problema.
Então, quando você diz que o problema já existe há muito tempo, uma solução, na minha opinião, é se eu tiver três cópias independentes, duas dizendo uma coisa e a terceira dizendo outra coisa, eu sempre acredito na maioria. O que realmente está acontecendo na rede agora? Até que ponto é completamente diferente?
Esta é a primeira resposta que os cientistas da computação encontraram: se você tiver múltiplas cópias, digamos três cópias, então não poderá obter a maioria. Então, depois de obter a maioria, todos devem enviar suas opiniões a todos e é como um circuito com grande profundidade de comunicação.
Até porque se você concordar com apenas um ponto parecido, a maioria pode dar certo. Mas se você concordar como uma corda, mesmo grupos honestos poderão discordar. Portanto, uma das soluções para utilização do protocolo PBFT é escolher um líder.
Protocolo PBFT (tolerância a falhas bizantinas)
O que significa o PBFT? É como a tolerância a falhas bizantinas (BFT), eles chamam de "lado ruim" ou "lado bizantino", e o P em PBFT vem da praticidade.
Neste protocolo, os servidores réplica elegem um líder, então, assim como no mundo real, se você quiser chegar a um acordo, a melhor forma é eleger um líder, e então o líder diz o que fazer a seguir, todo mundo faz a mesma coisa e eles chegam a um acordo.
Assim, semelhante ao protocolo PBFT, eles escolhem um líder e se o líder for honesto, oferecerá o mesmo valor a todos na rede antes que possam chegar a um acordo.
Mas o problema é que, se o líder não for honesto, não será possível chegar a um consenso e o líder terá de ser substituído. Verifique se o líder é honesto e oferece o mesmo valor a todos e é um negócio muito caro sem mudar o líder (eles chamam isso de mudança de perspectiva), por isso requer comunicação geral, o que é muito caro.
Protocolo Blockchain
Então surgem protocolos blockchain como o Bitcoin e eles decidem não mudar o líder desde que ele seja desonesto, e decidem, bem, não, precisamos realmente mudar o líder apenas se o líder for desonesto. síncrono, então mudamos o líder a cada nova época, a cada nova rodada.
Então eles precisam encontrar uma maneira de escolher um líder, porque você tem que escolher o líder, e depois o próximo líder, e o próximo líder.
Você não precisa ficar verificando se o líder é honesto, basta continuar construindo em cima do protocolo, em cima dos registros. Há uma boa chance de que um desses líderes chegue a um acordo honesto e saudável. O problema agora se reduz à seleção de um líder que requer números aleatórios.
Porque se você tiver um número aleatório, como um dado, poderá usar esse número aleatório para escolher um líder, e é aí que a Prova de Trabalho (POW) ajuda.
prova de trabalho
Em sua essência, os protocolos blockchain são protocolos bizantinos porque usam essencialmente prova de trabalho para selecionar líderes. Apenas executando a prova de trabalho, a primeira pessoa a encontrar uma solução de prova de trabalho é o líder, o que é um processo aleatório.
Então, quando converso com pais ou outras pessoas interessadas em blockchain, e faço muito isso, pergunto a eles: como você seleciona aleatoriamente uma das pessoas nesta sala, digamos que há 10 pessoas na sala?
Primeiro, todo mundo pensa que é fácil, como se estivéssemos apenas jogando dados. Eu penso. Então, quem joga os dados? Dizem que apenas somamos todas as datas de nascimento, começando por você, e depois circulamos até chegar a esse número. Mas então, como você escolhe com quem começar?
Portanto, esta parece uma pergunta muito simples. Mas se você realmente quiser torná-lo aleatório, é difícil. Essa foi a grande inovação do Bitcoin, encontrar uma maneira de basicamente concordar em escolhas aleatórias entre pares.
Essencialmente, usar prova de trabalho para criar aleatoriedade é uma maneira muito cara de criar aleatoriedade porque é preciso consumir muita eletricidade.
Portanto, para os esforços atuais como o Bitcoin, é como uma nação poderosa queimando para resolver a prova de trabalho, e é por isso que é inerentemente muito caro.
Na verdade, não usamos muito Bitcoin, e se você quisesse escalar usando Bitcoin para muita computação, teria que queimar todo o mundo dele. Se compararmos onde o Bitcoin está agora e onde ele precisa ir para alcançar a visão, ainda teremos que usar o Bitcoin dez ou cem vezes.
Você mencionou que basicamente consome muita energia. Portanto, estamos procurando um método mais eficiente de seleção de líderes para selecionar pessoas aleatórias entre pares.
Prova de trabalho como protocolo de sincronização
Outra razão pela qual estamos tentando mudar a maneira como o Bitcoin cria aleatoriedade é porque a prova de trabalho é inerentemente um protocolo síncrono, portanto, essencialmente, o tempo que você gasta fazendo a prova de trabalho é uma ordem de magnitude maior que a latência da rede.
Caso contrário, você não sabe se as pessoas preferem queimar eletricidade para resolver prova de trabalho ou perder tempo resolvendo prova de trabalho, ou se suas informações se perdem na rede.
Essencialmente, as cadeias de prova de trabalho ou o consenso de prova de trabalho têm baixo rendimento e você não pode executar ticks rapidamente porque, essencialmente, é necessário esperar mais do que a latência da rede para que a próxima aleatoriedade seja criada.
É por isso que você não pode ter um protocolo de alto rendimento além disso, e é por isso que as transações também se tornam muito caras, porque apenas um número limitado de transações cabe em cada bloco. Não podemos aumentar o número de blocos por unidade de tempo sem atrapalhar o protocolo.
Como DFINITY cria números aleatórios
DFINITY está tentando resolver esse problema, então o primeiro pensamento é: agora precisamos de uma nova maneira de criar aleatoriedade, mas agora como criamos aleatoriedade?
Como eu disse, esta é uma questão muito difícil. Portanto, uma abordagem é fazer com que uma pessoa crie a aleatoriedade, mas se essa pessoa for desonesta, ela não poderá influenciar a aleatoriedade.
Agora precisamos de um grupo para criar a aleatoriedade, mas se escolhermos um grupo, então se eu for a primeira pessoa a criar a aleatoriedade e você for a segunda pessoa, então a última pessoa poderá olhar para o nosso número aleatório e escolher o seu. aleatoriedade, o resultado é o que ele quer, chamamos isso de preconceito do último homem.
Não podemos ter um grupo onde a última pessoa escolhe a aleatoriedade, por isso usamos criptografia de limite.
criptografia de limite
O que a criptografia de limite significa é que, em vez de ter um grupo de n pessoas, mas todas as n pessoas precisam criar aleatoriedade, há um grupo de n pessoas, mas apenas K delas precisam participar.
Se você estiver esperando por K pessoas, se receber informações de K menos 1 participante, estará aguardando uma entrada. Mas qualquer outra parte com n menos K pode ser a última pessoa. Portanto, não há preconceito de última pessoa.
Se a última pessoa decidir “Não quero participar”, então há outra parte, mas isso não é suficiente. Porque agora se os membros deste grupo de K pessoas geram aleatoriedade, e o comportamento de outro grupo de K pessoas gera aleatoriedade, se estas duas aleatoriedades forem diferentes, o adversário (ao determinar se quero participar neste grupo) pode influenciar o protocolo. É por isso que precisamos de exclusividade.
singularidade
A singularidade da aleatoriedade significa que não importa qual parte K participa na criação da aleatoriedade, o resultado é sempre único e o resultado é sempre o mesmo. Primeiro de tudo, esta é uma propriedade incrível. Por mais contra-intuitivo que pareça, “Como chegamos lá?”
Se você tiver uma mensagem e usar assinaturas BLS para assinatura de limite, precisará de K participantes. Se o limite for K, você precisa que K participantes o assinem, não importa quem os k participantes assinem, então você obterá um resultado de identidade exclusivo. Este é um atributo chave das assinaturas BLS.
Esta é uma tecnologia de criptografia baseada em emparelhamento. Portanto, é novo, mas não muito novo, porque se o esquema for muito novo você se preocupa com a segurança e se foi comprovado corretamente. Se um número suficiente de pessoas revisar, deixe comentários e teste.
Em Stanford, um número suficiente de pessoas olhou para ele e o grupo trabalhou por muito tempo para garantir que fosse seguro e fosse um protocolo muito seguro, com boas implementações em torno dele. Portanto, temos uma implementação de BLS muito rápida, de código aberto e que todos podem usá-la.
Talvez, apenas dê uma visão geral, e então também poderemos falar sobre beacons aleatórios e o que exatamente eles são. Mas você mencionou isso, e acho que é uma boa explicação de por onde começar e onde a prova de trabalho não vai além de um certo ponto em termos de rendimento e uso de energia.
Então, o problema de usar o viés da última pessoa para criar esse número aleatório, resolvemos por k a partir das assinaturas de limite de n pessoas. E a assinatura BLS que usamos é exclusiva para k pessoas entre n pessoas e ainda é aleatória. Estas são duas propriedades que ainda tenho dificuldade em ver sempre como se encaixam.
Então o que deveríamos fazer? Vamos voltar aos blockchains de Satoshi Nakamoto e ver como eles funcionam. Portanto, o blockchain de Nakamoto é como criar completamente a aleatoriedade para cada bloco, o que significa que para cada bloco você resolve a prova de trabalho desde o início e não reutiliza nenhuma aleatoriedade ali.
Essa é uma das razões pelas quais é tão caro. Portanto, não queremos fazer isso aqui porque sabemos que a criptografia de limite é muito cara, assim como no mundo da prova de trabalho. Não é tão caro, mas ainda é uma operação muito cara.
Queremos ter certeza de que a maioria das operações caras podem ser feitas off-line e, quando estamos on-line, fazemos muito poucas delas. Se você observar o esquema de assinatura, verá que existem diferentes métodos que precisam ser tratados e que precisam funcionar. Então uma delas é a criação de chaves, chamamos isso de Geração Distribuída de Chaves (DKG).
DKG (geração de chave distribuída)
DKG (Geração de Chave Distribuída) é uma operação muito cara porque você precisa que todos concordem com a chave pública que desejam assinar, e todos geram uma chave para si mesmos que faz parte de uma chave maior para o grupo, para que possam usá-la para assinar entrada.
Todo o processo é caro, você precisa usar uma chave para autenticar, então é um processo caro. Apenas para uma discussão rápida, acho que este é um tópico interessante também, basicamente significa que estamos todos do lado de fora, estamos todos conversando uns com os outros, mas todos concordamos com uma chave não pública.
É incrível que possamos falar sobre isso... mas também significa que ambos criamos corretamente a chave privada para ser usada com essa chave pública, e mesmo que não tenhamos mencionado nossa chave privada para mais ninguém, todos os nossos dados privados as teclas também funcionam juntas de alguma forma.
O bom é que você pode executar o processo DKG uma vez e depois assinar várias vezes com a mesma chave, o que significa que você precisa amortizar o custo do caro DKG várias vezes. Você poderia fazer uma rodada e executar o DKG em um grupo e então, depois que eles tiverem sua própria chave, eles poderão usá-la para assinar diferentes entradas.
Cada vez que eles assinam novamente, eles recebem um novo número aleatório, é um novo número pseudo-aleatório, na verdade não é mais um número aleatório porque o primeiro foi aleatório, mas depois disso é uma função pseudo-aleatória. Ele atua como um número pseudo-aleatório para você.
Então, desta forma, podemos tornar o esquema de assinatura não interativo, o que significa “Não preciso falar com você para assinar”.
Eu faço o meu melhor, eu assino, você faz a sua parte, você assina, mas podemos juntar essas assinaturas e mesclá-las e obter uma assinatura mesclada sem precisar conversar um com o outro.
Isso é o que eles chamam de não interativo. Esta é uma propriedade interessante, pois torna o esquema de assinatura muito mais rápido do que a versão não interativa.
A forma como o DFINITY funciona é criando o grupo, depois fazemos o DKG, agora assinamos a primeira aleatoriedade, depois obtemos uma aleatoriedade para esta rodada, depois na próxima rodada assinamos a aleatoriedade anterior para a próxima rodada Crie uma nova rodada de aleatoriedade e então, procedemos com a assinatura.
Por quanto tempo queremos reutilizar a mesma aleatoriedade original? Você pode reutilizá-lo por um longo tempo, pode reutilizá-lo por alguns meses, ou talvez cerca de um mês ou dois meses. Portanto, a mesma aleatoriedade pode ser reutilizada desde que haja participantes suficientes no grupo que ainda sejam ativos e honestos. Você também mencionou grupos.
Existem grupos diferentes sobre como o DFINITY opera? Temos essa criptografia de limite, temos o processo DKG, mas se você quiser executar esse processo em um grande número de participantes, como 5 milhões de Bitcoins, esse é um processo muito caro porque você tem que enviar uma mensagem para todos, todos devem assinar .
Este ainda é um processo muito caro. Analisamos o sistema e descobrimos que não é necessária a assinatura de todos, não é necessária a participação de todos na aleatoriedade. Você pode se envolver na aleatoriedade selecionando aleatoriamente os partidos, assim como realizar eleições em um país.
Então, se você quiser decidir algo que não exija que todos elaborem uma lei ou tomem uma decisão, você pode ter um comitê, pode ter representantes em vez de todos, deveríamos escolher um grupo, mas como escolhemos um grupo?
Ainda assim, podemos reutilizar a nossa própria aleatoriedade, portanto, como um grupo é escolhido aleatoriamente, esse grupo tem propriedades semelhantes ao número quadrado total real. Em vez de executar o protocolo inteiro entre 5 milhões de pessoas, você pode executar o protocolo entre 500 pessoas e é dez vezes mais rápido.
Quer haja 100.000 pessoas participando em toda a rede ou 100 milhões de pessoas participando, o processo pelo qual o grupo passa é sempre semelhante porque o tamanho do grupo é constante. Outro benefício de escolher grupos é que você não apenas obtém escalabilidade, mas também paralelismo, porque agora podemos ter múltiplas cadeias em vez de apenas uma cadeia.
Fragmentação
Cada grupo é responsável por uma cadeia, então você pode criar múltiplas cadeias em paralelo, que geralmente chamamos de fragmentos em um blockchain. Esta é uma maneira natural de fragmentar.
É por isso que acho que o DFINITY tem uma ótima maneira de fragmentar que é inerente ao DFINITY porque temos grupos e então cada grupo pode ter seu próprio fragmento. Então, quais são os maiores problemas com os quais estamos lidando agora?
Atualmente, temos provas completas nas configurações de sincronização. No modelo de computação síncrona ou comunicação síncrona, quando uma parte honesta envia uma mensagem, ela será recebida por todas as partes honestas dentro da faixa Delta.
Por exemplo, no Bitcoin, quando uma pessoa honesta envia uma mensagem, ela será recebida em cerca de um minuto, o que equivale a menos de um minuto para todas as pessoas do mundo. O protocolo sabe disso e usa isso.
Portanto, no Bitcoin, a duração da prova de trabalho depende da latência da rede e deve ser muito mais longa, cerca de 10 minutos para o Bitcoin, porque eles acham que o Bitcoin é 10 vezes mais longo.
A suposição de sincronização é válida, mas o problema é que se a suposição de sincronização estiver incorreta em uma rede real, o protocolo não será mais seguro.
Provas completas em redes assíncronas
O que fizemos no DFINITY é que temos provas de segurança em um modelo totalmente síncrono e estamos atualizando nossas provas para torná-las utilizáveis também em redes assíncronas.
Essa é uma das áreas em que estou trabalhando agora e a outra área em que estou trabalhando é o processo DKG interativo que estamos em andamento no processo DKG, o que significa que todo participante que quiser participar a atividade está executando o DKG. Deve ser possível usar o DKG ao fazer o acordo.
DKG não interativo (geração de chave distribuída)
Queremos torná-lo não interativo, o que significa que as partes podem participar e retornar quando o acordo for concluído. Portanto, é uma maneira mais natural de executá-lo. DKG é a versão não interativa em vez da versão interativa.
A terceira coisa em que estou trabalhando é a parte da fragmentação, da qual acabei de falar. Estamos projetando um sistema de fragmentação para DFINITY. Projetamos um sistema de sharding para uma rede semelhante ao Bitcoin e usamos o mesmo conceito e nosso artigo será publicado no CCS. Este é um bom artigo, então você deveria lê-lo.
Talvez apenas para responder à questão: “Quais são os requisitos para o DFINITY? Quantas pessoas podem ser desonestas e a rede ainda sobreviver?”
Normalmente, se você estiver trabalhando em um ambiente assíncrono ou semissíncrono, o número de partes que um protocolo pode tolerar é de um terço. Portanto, a fração de partes desonestas é sempre um terço no modelo assíncrono, que é o limite inferior, pelo que não pode tolerar nada superior a isso.
Sistema de fragmentação do DFINTY
O DFINITY está trabalhando neste modelo, o que significa que a proporção de partes desonestas em toda a rede deveria ser de um terço, mas em cada grupo só podemos tolerar metade da proporção, então passamos de um terço para metade. “Já sabemos quão grandes serão esses grupos?”
O tamanho do grupo depende do nível de segurança que você deseja alcançar; quanto maior o grupo, melhor segurança você ganha. Atualmente, para um nível de segurança em torno de 86-90, um tamanho de conjunto de 400 a 800 parece lógico, o que significa que a probabilidade de erro seria em torno de 86. Você nunca perde seus tokens.
Tempo de bloqueio e finalidade
Outra questão antes de encerrar é que falamos sobre eficiência energética e mencionamos alguns dos tempos de bloqueio do blockchain Bitcoin, que você mencionou é de cerca de dez minutos. Então, qual é o tempo de bloqueio que alcançamos no DFINITY?
Atualmente, em nossa rede de teste, os tempos de bloqueio estão em torno de um segundo, menos de um segundo.
Outra diferença entre DFINITY e Bitcoin é que para chegar ao fim com o Bitcoin, como eles não possuem um protocolo de consenso real, é necessário esperar seis blocos. Para DFINITY, precisamos de dois blocos.
Então isso significa 2 segundos, 1 segundo por bloco, 2 segundos de finalidade, o que significa que temos 2 segundos de finalidade, enquanto a finalidade do Bitcoin é de cerca de 1 hora.
Basicamente é isso que acontece no DFINITY com Bitcoin para permitir uma transação semelhante a um cartão de crédito e concluir a transação, se eu for a uma cafeteria comprar um café, na pior das hipóteses terei que esperar uma hora antes de poder usar meu Bitcoin. Certifique-se de que a transação realmente seja concluída, o que pode levar até dois segundos no DFINITY.
Na melhor das hipóteses, se o criador do bloco for otimista e honesto, você só precisa esperar dois segundos para que o estado final seja alcançado no DFINITY, então isso é como um sistema de alto rendimento.
Obrigado a Mahnush por dedicar seu tempo para nos explicar alguns dos desafios e inovações do DFINITY.

Conteúdo IC que lhe interessa
Progresso Tecnológico | Informações do Projeto |

Colete e siga o canal IC Binance
Mantenha-se atualizado com as informações mais recentes
