O que é um Esquema de Commit-Reveal em Blockchain?

PrincipianteNov 22, 2023
Saiba mais sobre o método Commit-Reveal, uma inovação blockchain que melhora a privacidade e a segurança em transações digitais descentralizadas.
O que é um Esquema de Commit-Reveal em Blockchain?

A tecnologia Blockchain traz abordagens inovadoras para alcançar consenso, segurança e privacidade. Uma dessas inovações é o esquema de revelação do comité, um protocolo criptográfico que aumenta a privacidade e a segurança dos utilizadores de blockchain. À medida que navega neste curso, irá desdobrar as camadas de confiança, transparência e inovação que o esquema Commit-Reveal traz para o domínio digital descentralizado. Cada módulo deste artigo é meticulosamente elaborado para fornecer uma compreensão aprofundada do esquema Commit-Reveal, a sua implementação e o seu impacto no cenário blockchain.

O que é Blockchain?

No seu núcleo, uma blockchain é como um livro-razão digital com uma reviravolta. Ao contrário dos livros tradicionais, é descentralizado, o que significa que nenhuma entidade tem controlo sobre toda a cadeia de blocos e é acessível a qualquer pessoa que faça parte da sua rede. Cada 'bloco' numa cadeia de blocos contém uma lista de transações. Uma vez que um bloco é preenchido com transações, um novo bloco é formado, criando uma 'cadeia' de blocos conectada - daí o nome, 'blockchain. '

Uma das características brilhantes da blockchain é a sua ênfase na confiança e transparência. Qualquer pessoa na rede tem acesso e pode ver todas as transações numa cadeia de blocos. Esta abertura desencoraja a desonestidade e fomenta a confiança entre a comunidade. Pode estar a perguntar-se, como é que consegue esse nível de transparência? A resposta está nos seus mecanismos de consenso únicos e princípios criptográficos, nos quais vamos nos aprofundar à medida que progredimos neste curso.

Introdução ao Commit-Reveal Scheme

Agora que tem um gostinho do que é blockchain, vamos apresentar um sabor especial a ele - o esquema Commit-Reveal. É como um espetáculo de mágica onde um mágico (o utilizador) primeiro se compromete com um determinado ato sem o revelar ao público (a rede) e depois, numa fase posterior, revela o acto. Em termos de blockchain, este é um processo de duas etapas: a 'Fase de Compromete' e a 'Fase de revelação'.

Na Fase de Compromisso, um utilizador submete uma versão com hash das suas informações para a cadeia de blocos. Esta versão em hash é como uma versão embaralhada da informação original que esconde o conteúdo real. A mágica da função hash é que é uma viagem só de ida; não pode desenfrear o hash de volta à sua forma original, mantendo assim a informação em segredo por enquanto. Depois vem a Fase de Revelação, onde o utilizador revela a informação original, que é então verificada pela rede ao fazer hash novamente e compará-la com o hash inicial confirmado se corresponder, voila! A rede confirma a revelação e o truque de mágica está completo.

Através do esquema Commit-Reveal, as redes blockchain podem atingir um novo nível de envolvimento em aplicações como leilões, sistemas de votação e muito mais, que exploraremos em detalhe nos próximos módulos.

A Fase de Compromisso

À medida que navegamos para as profundezas do esquema Commit-Reveal, a nossa primeira paragem é a 'Fase de Comprometo'. Nesta fase, os utilizadores “comprometem-se” com um determinado valor, mas o fazem de uma forma que mantém o valor real em segredo. Imagine que tem um número secreto em mente, mas em vez de dizer a todos o que é, coloca-o numa caixa trancada e mostra-o a todos. Sabem que tem um número mas não sabem o que é. É disso que se trata o compromisso na blockchain!

Agora, como é que bloqueamos o nosso valor secreto? No mundo blockchain, usamos algo chamado função hash para fazer isso. Uma função de hash é como um liquidificador mágico. Coloca o seu valor secreto e exala uma versão embaralhado dele, conhecida como hash. Este hash é único; mesmo uma pequena alteração no valor original cria um hash totalmente diferente. A beleza disso é que é um processo unidirecional - uma vez que o valor é hash, não há maneira fácil de descobrir o valor original a partir do hash. Então, quando os utilizadores comprometem o seu valor, o que estão realmente a fazer é partilhar o hash do seu valor com todos na cadeia de blocos.

A Fase de Revelação

Depois do suspense incorporado na Fase de Compromisso, é hora da grande revelação! A Fase de Revelação é onde os valores comprometidos são finalmente revelados a todos os participantes na cadeia de blocos. Voltando à nossa analogia da caixa trancada, este é o momento em que a caixa é aberta e todos podem ver o número que escondeu. No mundo blockchain, revelar é um processo simples mas crucial que fornece transparência e justiça em várias aplicações.

Quando um utilizador revela o seu valor comprometido, a rede pode facilmente verificar a sua autenticidade através do hashing do valor revelado e comparando-o com o hash original partilhado durante a Fase de Confirmar. Se os hashes corresponderem, confirma que o utilizador não mudou de ideia a meio do caminho. Este processo de verificação simples mas poderoso ajuda a manter um ambiente de confiança onde todos jogam de acordo com as regras. É como ter um árbitro num jogo, garantir que todos os jogadores cumpram os termos acordados.

Implementando o Commit-Reveal em Contratos Inteligentes

Agora que desvendamos a magia do esquema Commit-Reveal, vamos ver como ele ganha vida no mundo blockchain através de contratos inteligentes. Um contrato inteligente é como um contrato tradicional, mas é digital e auto-executável. Imagine um robô imparcial que garante automaticamente que todas as partes cumpram os seus acordos, e tem a ideia de um contrato inteligente. É a ferramenta que pega a ideia teórica do Commit-Reveal e a torna prática no reino digital. Implementar um esquema Commit-Reveal através de um contrato inteligente é como coreografar uma dança em que cada passo segue um ritmo definido. Vamos percorrer esta coreografia passo a passo.

Criando o Contrato

Comece por criar um contrato inteligente numa plataforma blockchain como o Ethereum. Este contrato terá as regras de compromisso para o esquema Commit-Reveal codificadas nele.

A Função Commit

Projetar uma função de compromisso dentro do contrato inteligente. Esta função permitirá que os utilizadores submetam os seus valores de hash (a fase de compromisso) ao contrato.

Armazenar Valores Comprometidos

À medida que os utilizadores comprometem os seus valores, o contrato inteligente irá armazenar estes hashes de forma segura na cadeia de blocos, aguardando a fase de revelação.

A Função Revelar

Em seguida, dentro do contrato inteligente, crie uma função de revelação. Quando chegar a hora, esta função permitirá que os utilizadores revelem os seus valores originais.

Verificação e Validação

Ao revelar, o contrato inteligente verificará os valores revelados, fazendo-os hash e comparando-os com os hashes inicialmente cometidos. Se tudo corresponder, a revelação é validada.

Finalização

Assim que todas as revelações forem recolhidas e verificadas, o contrato inteligente pode executar automaticamente os próximos passos, seja a contagem de votos, a determinação dos vencedores do leilão ou qualquer outra ação específica da aplicação.

Auditoria e Testes

Antes de implantar, teste minuciosamente o contrato inteligente para garantir que funciona como pretendido e está protegido contra potenciais explorações. Através destes passos, o contrato inteligente orquestra a dança Commit-Reveal, garantindo um processo justo e transparente.

Exemplo de código

//Identificador de licença SPDX: MIT

solidez do pragma ^0.8.0;

contrato CommitReveal {

struct Commit {

    bytes32 hash;

    bool revealed;

}



mapeamento (endereço = > Commit) commits públicos;

mapeamento (endereço = > uint256) public RevealedValues;



//A função de compromisso permite que os utilizadores enviem os seus valores com hash

função commits (bytes32 _hash) público {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



//A função de revelação permite aos utilizadores revelar os seus valores originais

função revelação (uint256 _value, string memory _salt) público {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



//Um exemplo de função de finalização que poderia contabilizar votos

função tallyVotes () retornos de vista pública (uint256) {

 uint256 Total de votos = 0;

 para (endereço addr = endereço (0); addr & lt; endereço (-1); addr++) {

 if (commits [addr] .revelado) {

            totalVotes += revealedValues[addr];

        }

    }

    devolver TotalVotes;

}



//Uma função para auditar o estado do contrato (apenas um exemplo, não é prático para grandes conjuntos de dados)

função auditoria () retornos de vista pública (mapeamento (endereço = > uint256) memória) {

    return revealedValues;

}

 }

Explicação:

  • Criando o Contrato: O contratoCommitReveal é criado.
  • A Função Commit: A função de compromisso aceita um valor com hash (_hash) e o armazena no endereço do remetente.
  • Armazenando Valores Comprometidos: Os valores com hash são armazenados num mapeamento chamado commits.
  • A Função Revelar: A função de revelação permite aos utilizadores enviar o seu valor original (_value) e um sal (_salt). Verifica se o hash destes corresponde ao hash inicialmente cometido.
  • Verificação e Validação: Isso é feito dentro da função de revelação comparando hashes.
  • Finalização: A função TallyVotes é um exemplo simplificado de como pode fazer a contagem de votos. Ele itera através de todos os endereços possíveis (impraticável para grandes conjuntos de dados) e soma os valores revelados.
  • Auditoria e Testes: A função de auditoria é um exemplo muito simplista de como pode verificar o estado do contrato.

Este é um exemplo muito simplificado e carece de muitas considerações práticas necessárias para um sistema de produção (como prevenir transbordamentos, otimizar o uso de gás, gerir grandes conjuntos de dados e adicionar um controlo de acesso adequado). A função de finalização, em particular, é impraticável devido à iteração em todos os endereços possíveis e precisaria de um design diferente num cenário do mundo real. Este código pretende ser um ponto de partida e uma ferramenta educativa, não uma solução pronta para produção.

Casos de Uso do Esquema Commit-Reveal em Blockchain

Melhorar as Plataformas de Leilões

Os leilões online são uma das aplicações por excelência do esquema Commit-Reveal. Para evitar que outros usem os valores dos lances como alavancagem, os participantes podem apresentar as suas propostas secretamente durante a fase de compromisso. Quando o período de licitação termina, a fase de revelação começa, permitindo que os participantes divulgem as suas propostas. A oferta válida mais alta é determinada, garantindo um processo de leilão justo e competitivo.

Criação de sistemas de votação justos

Os sistemas de votação podem beneficiar significativamente do esquema Commit-Reveal, especialmente em cenários que exigem anonimato e honestidade dos eleitores. Nesta configuração, durante as eleições ou qualquer evento de votação, os eleitores comprometem-se com as suas escolhas na fase de compromisso sem revelá-las a outros, garantindo a integridade e o sigilo dos votos. Assim que o período de votação terminar, a fase de revelação começa, permitindo que os eleitores divulgem os seus votos. Estes são então registados para determinar o resultado, promovendo um processo de votação justo e transparente.

Contratos de licitação selada

Nos contratos de licitação selada, os licitantes apresentam as suas propostas ocultos usando o esquema Commit-Reveal. Este processo garante que nenhum dos licitantes saiba os valores das propostas de outros, promovendo uma concorrência justa. Após o período de apresentação da proposta, ocorre a fase de revelação e o contrato é adjudicado ao licitante qualificado com a melhor oferta.

Cenários do Jogo

O esquema Commit-Reveal encontra cenários divertidos de aplicação no jogo, como uma versão digital de Rock, Paper e Scissor. Os jogadores comprometem as suas escolhas sem revelá-las, garantindo um jogo justo. Depois que ambos os jogadores se comprometerem, segue-se a fase de revelação, determinando o vencedor com base nas escolhas feitas.

Mitigando Problemas Front-Running

Em ambientes blockchain, o front-running é uma preocupação em que os agentes mal-intencionados podem potencialmente beneficiar do conhecimento de transações pendentes. O esquema Commit-Reveal ajuda a mitigar esses problemas ocultando os detalhes da transação inicialmente. Quando chega a fase de revelação, é tarde demais para os agentes mal-intencionados agirem com base nas informações, preservando assim a integridade da transação.

Arquiteturas de Commit-and-Reveal de Baixa Latência

Arquiteturas mais recentes como o F3B evoluíram para reduzir a sobrecarga associada aos esquemas tradicionais do Commit-Reveal. O F3B minimiza a gravação de dados no blockchain, oferecendo uma arquitetura Commit-and-Reveal de baixa latência. Este desenvolvimento é notável porque significa a contínua otimização e inovação nos esquemas Commit-Reveal, tornando-os mais eficientes para aplicações do mundo real.

Geração de números aleatórios

Em ambientes blockchain, gerar números aleatórios pode ser um desafio devido à natureza determinística dos protocolos blockchain. O esquema Commit-Reveal serve como uma alternativa descentralizada para gerar números aleatórios na cadeia de blocos Ethereum. Por exemplo, o Randao, uma implementação do Commit-Reveal RNG, utiliza feeds de dados públicos e incentiva a participação na geração aleatória de números.

Conclusão

À medida que este olhar interessante sobre o esquema Commit-Reveal chega ao fim, é importante considerar como este mecanismo simples mas poderoso ajuda a construir confiança e abertura nas aplicações blockchain. Demos uma espiada em como a tecnologia blockchain pode mudar muitos campos, tornando os leilões justos, os sistemas de votação honestos e os cenários de jogos mais criativos, entre outras coisas, com o esquema Commit-Reveal. A viagem não termina aqui; a natureza em constante evolução da tecnologia blockchain apresenta novos horizontes a explorar. Armado com o conhecimento adquirido através deste curso, está bem posicionado para mergulhar mais fundo na blockchain, explorar as suas infinitas possibilidades e contribuir para moldar um futuro digital transparente, justo e descentralizado.

Autor: Piero
Übersetzer: Cedar
Rezensent(en): Matheus、Edward、Ashley He
* Die Informationen sind nicht als Finanzberatung gedacht und stellen auch keine Empfehlung irgendeiner Art dar, die von Gate.io angeboten oder unterstützt wird.
* Dieser Artikel darf ohne Bezugnahme auf Gate.io nicht reproduziert, übertragen oder kopiert werden. Zuwiderhandlung ist eine Verletzung des Urheberrechtsgesetzes und kann gerichtlich verfolgt werden.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!
Benutzerkonto erstellen