O que é um Esquema de Compromisso-Revelação em Blockchain? (2025)

Principiante11/22/2023, 6:46:03 PM
Explore a evolução de 2025 dos esquemas de Commit-Reveal em blockchain, apresentando redução da sobrecarga computacional, aplicações cross-chain, protocolos de segurança aprimorados, crescente adoção empresarial e integrações inovadoras de IA que fortalecem ainda mais a privacidade e a segurança em transações descentralizadas.

Atualizações de 2025 sobre Esquemas de Compromisso-Revelação

O esquema Commit-Reveal continua a evoluir em 2025 com vários avanços significativos que melhoram a sua utilidade e eficiência em aplicações de blockchain. Os seguintes desenvolvimentos representam a vanguarda desta tecnologia:

Métodos Avançados de Implementação

Inovações recentes têm se concentrado na redução do overhead computacional dos esquemas tradicionais de Commit-Reveal. Algoritmos otimizados agora permitem uma verificação mais rápida, mantendo a integridade da segurança. Essas melhorias levaram a uma adoção crescente em várias plataformas de blockchain além do Ethereum, incluindo soluções de Camada 2 que se beneficiam de:

  • Custos de gás reduzidos para operações de compromisso-revelação
  • Tempos de confirmação mais curtos entre as fases de compromisso e revelação
  • Proteção de privacidade melhorada através de técnicas criptográficas aprimoradas

Aplicações Cross-Chain

O paradigma Commit-Reveal expandiu-se para facilitar operações seguras entre cadeias, permitindo que compromissos numa blockchain sejam revelados e verificados noutra. Este avanço em interoperabilidade permite:

  • Transferências de ativos seguras entre diferentes blockchains
  • Mecanismos de votação entre cadeias com privacidade aprimorada
  • Sistemas de leilão multi-chain com acesso a um mercado mais amplo

Melhorias de Segurança

A pesquisa em 2025 abordou vulnerabilidades anteriores nas implementações de Commit-Reveal:

Adoção Empresarial

O setor empresarial demonstra um aumento do interesse em esquemas de Compromisso-Revelação para aplicações empresariais:

  • Os sistemas de gestão da cadeia de abastecimento utilizam o commit-reveal para processos de licitação selada.
  • As instituições financeiras implementam o esquema para sistemas de liquidação privados
  • As organizações de saúde utilizam o commit-reveal para o compartilhamento de dados sensíveis, mantendo a privacidade do paciente.

Integração com Sistemas de IA

Talvez o desenvolvimento mais emocionante seja a integração de esquemas de Commit-Reveal com inteligência artificial:

  • Mercados de previsão de IA onde modelos se comprometem com previsões antes dos eventos ocorrerem
  • Sistemas de aprendizagem automática descentralizados que protegem os dados de treino através de commit-reveal
  • Oráculos que fornecem aleatoriedade verificável por meio de processos colaborativos de compromisso-revelação entre nós de IA

Esses avanços demonstram como o esquema Commit-Reveal continua a servir como um mecanismo fundamental para aplicações de blockchain que requerem justiça, transparência e segurança. À medida que a tecnologia amadurece, sua implementação torna-se mais eficiente e adaptável, abrindo novas possibilidades para sistemas descentralizados em várias indústrias. O desenvolvimento contínuo desse protocolo destaca o compromisso da comunidade de blockchain em criar soluções robustas para desafios de privacidade e segurança em ambientes distribuídos.

A tecnologia Blockchain traz abordagens inovadoras para alcançar consenso, segurança e privacidade. Uma dessas inovações é o esquema commit-reveal, um protocolo criptográfico que melhora a privacidade e segurança para os usuários de blockchain. À medida que você navega por este curso, você desvelará 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 abrangente do esquema Commit-Reveal, sua implementação e seu impacto no panorama blockchain.

O que é Blockchain?

No seu cerne, um blockchain é como um livro-razão digital com uma reviravolta. Ao contrário dos livros-razão tradicionais, é descentralizado, o que significa que nenhuma entidade única tem controle sobre todo o blockchain, e é acessível a qualquer pessoa que faça parte da sua rede. Cada 'bloco' num blockchain transporta uma lista de transações. Assim que um bloco é preenchido com transações, um novo bloco é formado, criando uma 'cadeia' conectada de blocos - daí o nome, 'blockchain.'

Uma das características brilhantes do blockchain é a sua ênfase na confiança e na transparência. Qualquer pessoa na rede tem acesso e pode visualizar cada transação em um blockchain. Esta abertura desencoraja a desonestidade e promove a confiança entre a comunidade. Você pode estar se perguntando, como ele alcança tal nível de transparência? A resposta está em seus mecanismos de consenso únicos e princípios criptográficos, que iremos explorar à medida que avançamos neste curso.

Introdução ao Esquema de Commit-Reveal

Agora que você teve uma ideia do que é blockchain, vamos introduzir um sabor especial - o esquema Commit-Reveal. É como um show de mágica onde um mágico (o usuário) primeiro se compromete a um certo ato sem revelá-lo ao público (a rede) e depois, em uma fase posterior, revela o ato. Em termos de blockchain, este é um processo em duas etapas: a ‘Fase de Compromisso’ e a ‘Fase de Revelação’.

Na Fase de Compromisso, um utilizador submete uma versão hashed da sua informação ao blockchain. Esta versão hashed é como uma versão embaralhada da informação original que oculta o conteúdo real. A magia da função de hash é que é uma jornada unidirecional; não se pode desfazer o hash de volta à sua forma original, mantendo assim a informação secreta por enquanto. Depois vem a Fase de Revelação, onde o utilizador revela a informação original, que é então verificada pela rede através de um novo hashing e comparando-a com o hash comprometido inicial; se coincidir, voilà! A rede confirma a revelação, e o truque mágico está completo.

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

A Fase de Compromisso

À medida que navegamos nas profundezas do esquema Commit-Reveal, a nossa primeira paragem é a ‘Fase de Compromisso.’ Nesta fase, os utilizadores “comprometem-se” a um certo valor, mas fazem-no 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 qual é, você coloca-o numa caixa trancada e a mostra a todos. Eles sabem que você tem um número, mas não sabem qual é. É disso que se trata o compromisso em blockchain!

Agora, como é que trancamos o nosso valor secreto? No mundo da blockchain, usamos algo chamado função hash para fazer isso. Uma função hash é como um liquidificador mágico. Você coloca o seu valor secreto e ele produz uma versão embaralhada, conhecida como hash. Este hash é único; até uma pequena alteração no valor original cria um hash completamente diferente. A beleza disso é que é um processo unidirecional - uma vez que o valor é hashado, não há uma maneira fácil de descobrir o valor original a partir do hash. Portanto, quando os utilizadores comprometem o seu valor, o que realmente estão a fazer é partilhar o hash do seu valor com todos na blockchain.

A Fase de Revelação

Após a suspense construída na Fase de Compromisso, é hora da grande revelação! A Fase de Revelação é onde os valores comprometidos são finalmente desvendados a todos os participantes na blockchain. Voltando à nossa analogia da caixa trancada, este é o momento em que a caixa é aberta e todos podem ver qual número você tinha escondido. No mundo da blockchain, revelar é um processo direto, mas crucial, que proporciona transparência e equidade em várias aplicações.

Quando um utilizador revela o seu valor comprometido, a rede pode facilmente verificar a sua autenticidade ao fazer o hash do valor revelado e compará-lo com o hash original partilhado durante a Fase de Compromisso. Se os hashes coincidirem, isso 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, garantindo que todos os jogadores cumprem os termos acordados.

Implementando Commit-Reveal em Smart Contracts

Agora que desvendamos a magia do esquema Commit-Reveal, vamos ver como ele ganha vida no mundo da blockchain através de contratos inteligentes. Um contrato inteligente é como um contrato tradicional, mas é digital e autoexecutável. Imagine um robô imparcial que garante automaticamente que todas as partes cumpram os seus acordos, e você tem a ideia de um contrato inteligente. É a ferramenta que leva 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 onde cada passo segue um ritmo definido. Vamos percorrer essa coreografia passo a passo.

Criando o Contrato

Comece criando um contrato inteligente em uma plataforma de blockchain como o Ethereum. Este contrato terá as regras de envolvimento para o esquema Commit-Reveal codificadas nele.

A Função Commit

Desenhe uma função de compromisso dentro do contrato inteligente. Esta função permitirá que os usuários enviem os seus valores hash (a fase de compromisso) para o contrato.

Armazenamento de Valores Comprometidos

À medida que os usuários comprometem seus valores, o contrato inteligente armazenará esses hashes de forma segura no blockchain, aguardando a fase de revelação.

A Função de Revelação

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

Verificação e Validação

Ao revelar, o contrato inteligente verificará os valores revelados através da sua hash e compará-los-á com as hashes inicialmente comprometidas. Se tudo corresponder, a revelação é validada.

Finalização

Uma vez que todas as revelações são recolhidas e verificadas, o contrato inteligente pode executar automaticamente os próximos passos, seja contando votos, determinando vencedores de leilões, ou qualquer outra ação específica da aplicação.

Auditoria e Teste

Antes de implementar, teste minuciosamente o contrato inteligente para garantir que ele funcione conforme o esperado e esteja seguro contra possíveis explorações. Através dessas etapas, o contrato inteligente orquestra a dança Commit-Reveal, garantindo um processo justo e transparente.

Exemplo de Código

SPDX-License-Identifier: solidez MITpragma ^0.8.0; contract CommitReveal {struct Commit { bytes32 hash;    bool revelou;}mapeamento(endereço => Commit) compromissos públicos; mapping(address => uint256) public revealedValues;// A função commit permite que os usuários enviem seus valores hashadosfunction commit(bytes32 _hash) public { require(commits[msg.sender].hash == 0, "Already committed");    commits[msg.sender].hash = _hash;}A função reveal permite que os usuários revelem seus valores originaisfunção reveal(uint256 _value, string memory _salt) public { require(commits[msg.sender].revealed == false, "Already revealed");    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes não correspondem");    commits[msg.sender].revealed = verdadeiro;    revealedValues[msg.sender] = _value;}Um exemplo de função de finalização que poderia contabilizar votosfunção tallyVotes() public view returns (uint256) { uint256 totalVotes = 0;    for (address addr = address(0); addr < address(-1); addr++) { if (commits[addr].revealed) { totalVotes += revealedValues[addr];        } } retornar totalVotos;}Uma função para auditar o estado do contrato (apenas um exemplo, não prático para grandes conjuntos de dados)function audit() public view returns (mapping(address => uint256) memory) { return revealedValues;} }

Explicação:

  • Criando O Contrato: O contrato CommitReveal é criado.
  • A Função Commit: A função de commit aceita um valor hash (_hash) e o armazena contra o endereço do remetente.
  • Armazenando Valores Comprometidos:Os valores hashed são armazenados em um mapeamento chamado commits.
  • A Função de Revelação: A função de revelação permite que os utilizadores submetam o seu valor original (_value) e um sal (_salt). Ela verifica se o hash destes corresponde ao hash inicialmente comprometido.
  • 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 você pode contar votos. Ela itera por todos os endereços possíveis (impraticável para grandes conjuntos de dados) e soma os valores revelados.
  • Auditoria e Teste:A função de auditoria é um exemplo muito simplista de como você pode verificar o estado do contrato.

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

Casos de Uso do Esquema Commit-Reveal em Blockchain

Aprimorando as Plataformas de Leilão

Os leilões online são uma das aplicações quintessenciais do esquema Commit-Reveal. Para impedir que outros usem os valores das ofertas como alavanca, os participantes podem submeter suas ofertas de forma encoberta durante a fase de compromisso. Quando o período de licitação termina, a fase de revelação entra em ação, permitindo que os participantes divulguem suas ofertas. A maior oferta válida é determinada, garantindo um processo de leilão justo e competitivo.

Criando 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. Neste sistema, durante eleições ou qualquer evento de votação, os eleitores comprometem-se com as suas escolhas na fase de compromisso sem as revelar a outros, garantindo a integridade e o segredo dos votos. Uma vez que o período de votação termina, inicia-se a fase de revelação, permitindo que os eleitores divulguem os seus votos. Estes são então contabilizados para determinar o resultado, promovendo um processo de votação justo e transparente.

Contratos de Licitação Secreta

Nos contratos de licitação selada, os licitantes submetem as suas propostas de forma oculta usando o esquema Commit-Reveal. Este processo garante que nenhum dos licitantes saiba os montantes das propostas dos outros, promovendo uma competição justa. Após o período de submissão das propostas, ocorre a fase de revelação, e o contrato é atribuído ao licitante qualificado com a melhor oferta.

Cenários de Jogo

O esquema Commit-Reveal encontra uma aplicação divertida em cenários de jogo, como uma versão digital de Pedra, Papel e Tesoura. Os jogadores comprometem as suas escolhas sem revelá-las, garantindo um jogo justo. Uma vez que ambos os jogadores tenham se comprometido, segue-se a fase de revelação, determinando o vencedor com base nas escolhas feitas.

Mitigando Problemas de Front-running

Em ambientes de blockchain, o front-running é uma preocupação onde atores maliciosos podem potencialmente beneficiar-se do conhecimento de transações pendentes. O esquema Commit-Reveal ajuda a mitigar tais problemas ao esconder inicialmente os detalhes das transações. Quando a fase de revelação chega, já é tarde demais para os atores maliciosos agirem com base nas informações, preservando assim a integridade da transação.

Arquiteturas de Compromisso e Revelação de Baixa Latência

Novas arquiteturas como F3B evoluíram para reduzir a sobrecargaassociado a esquemas tradicionais de Commit-Reveal. O F3B minimiza a escrita de dados na blockchain, oferecendo uma arquitetura de Commit-and-Reveal de baixa latência. Este desenvolvimento é notável, pois significa a contínua otimização e inovação nos esquemas de Commit-Reveal, tornando-os mais eficientes para aplicações do mundo real.

Geração de Números Aleatórios

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

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 em aplicações de blockchain. Tivemos uma prévia de como a tecnologia blockchain poderia 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 jornada 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, você está bem posicionado para se aprofundar mais no blockchain, explorar suas infinitas possibilidades e contribuir para moldar um futuro digital transparente, justo e descentralizado.

Autor: Piero
Tradutor(a): Cedar
Revisor(es): Matheus、Edward、Ashley He
* As informações não se destinam a ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecido ou endossado pela Gate.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem fazer referência à Gate. A violação é uma violação da Lei de Direitos de Autor e pode estar sujeita a ações legais.

O que é um Esquema de Compromisso-Revelação em Blockchain? (2025)

Principiante11/22/2023, 6:46:03 PM
Explore a evolução de 2025 dos esquemas de Commit-Reveal em blockchain, apresentando redução da sobrecarga computacional, aplicações cross-chain, protocolos de segurança aprimorados, crescente adoção empresarial e integrações inovadoras de IA que fortalecem ainda mais a privacidade e a segurança em transações descentralizadas.

Atualizações de 2025 sobre Esquemas de Compromisso-Revelação

O esquema Commit-Reveal continua a evoluir em 2025 com vários avanços significativos que melhoram a sua utilidade e eficiência em aplicações de blockchain. Os seguintes desenvolvimentos representam a vanguarda desta tecnologia:

Métodos Avançados de Implementação

Inovações recentes têm se concentrado na redução do overhead computacional dos esquemas tradicionais de Commit-Reveal. Algoritmos otimizados agora permitem uma verificação mais rápida, mantendo a integridade da segurança. Essas melhorias levaram a uma adoção crescente em várias plataformas de blockchain além do Ethereum, incluindo soluções de Camada 2 que se beneficiam de:

  • Custos de gás reduzidos para operações de compromisso-revelação
  • Tempos de confirmação mais curtos entre as fases de compromisso e revelação
  • Proteção de privacidade melhorada através de técnicas criptográficas aprimoradas

Aplicações Cross-Chain

O paradigma Commit-Reveal expandiu-se para facilitar operações seguras entre cadeias, permitindo que compromissos numa blockchain sejam revelados e verificados noutra. Este avanço em interoperabilidade permite:

  • Transferências de ativos seguras entre diferentes blockchains
  • Mecanismos de votação entre cadeias com privacidade aprimorada
  • Sistemas de leilão multi-chain com acesso a um mercado mais amplo

Melhorias de Segurança

A pesquisa em 2025 abordou vulnerabilidades anteriores nas implementações de Commit-Reveal:

Adoção Empresarial

O setor empresarial demonstra um aumento do interesse em esquemas de Compromisso-Revelação para aplicações empresariais:

  • Os sistemas de gestão da cadeia de abastecimento utilizam o commit-reveal para processos de licitação selada.
  • As instituições financeiras implementam o esquema para sistemas de liquidação privados
  • As organizações de saúde utilizam o commit-reveal para o compartilhamento de dados sensíveis, mantendo a privacidade do paciente.

Integração com Sistemas de IA

Talvez o desenvolvimento mais emocionante seja a integração de esquemas de Commit-Reveal com inteligência artificial:

  • Mercados de previsão de IA onde modelos se comprometem com previsões antes dos eventos ocorrerem
  • Sistemas de aprendizagem automática descentralizados que protegem os dados de treino através de commit-reveal
  • Oráculos que fornecem aleatoriedade verificável por meio de processos colaborativos de compromisso-revelação entre nós de IA

Esses avanços demonstram como o esquema Commit-Reveal continua a servir como um mecanismo fundamental para aplicações de blockchain que requerem justiça, transparência e segurança. À medida que a tecnologia amadurece, sua implementação torna-se mais eficiente e adaptável, abrindo novas possibilidades para sistemas descentralizados em várias indústrias. O desenvolvimento contínuo desse protocolo destaca o compromisso da comunidade de blockchain em criar soluções robustas para desafios de privacidade e segurança em ambientes distribuídos.

A tecnologia Blockchain traz abordagens inovadoras para alcançar consenso, segurança e privacidade. Uma dessas inovações é o esquema commit-reveal, um protocolo criptográfico que melhora a privacidade e segurança para os usuários de blockchain. À medida que você navega por este curso, você desvelará 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 abrangente do esquema Commit-Reveal, sua implementação e seu impacto no panorama blockchain.

O que é Blockchain?

No seu cerne, um blockchain é como um livro-razão digital com uma reviravolta. Ao contrário dos livros-razão tradicionais, é descentralizado, o que significa que nenhuma entidade única tem controle sobre todo o blockchain, e é acessível a qualquer pessoa que faça parte da sua rede. Cada 'bloco' num blockchain transporta uma lista de transações. Assim que um bloco é preenchido com transações, um novo bloco é formado, criando uma 'cadeia' conectada de blocos - daí o nome, 'blockchain.'

Uma das características brilhantes do blockchain é a sua ênfase na confiança e na transparência. Qualquer pessoa na rede tem acesso e pode visualizar cada transação em um blockchain. Esta abertura desencoraja a desonestidade e promove a confiança entre a comunidade. Você pode estar se perguntando, como ele alcança tal nível de transparência? A resposta está em seus mecanismos de consenso únicos e princípios criptográficos, que iremos explorar à medida que avançamos neste curso.

Introdução ao Esquema de Commit-Reveal

Agora que você teve uma ideia do que é blockchain, vamos introduzir um sabor especial - o esquema Commit-Reveal. É como um show de mágica onde um mágico (o usuário) primeiro se compromete a um certo ato sem revelá-lo ao público (a rede) e depois, em uma fase posterior, revela o ato. Em termos de blockchain, este é um processo em duas etapas: a ‘Fase de Compromisso’ e a ‘Fase de Revelação’.

Na Fase de Compromisso, um utilizador submete uma versão hashed da sua informação ao blockchain. Esta versão hashed é como uma versão embaralhada da informação original que oculta o conteúdo real. A magia da função de hash é que é uma jornada unidirecional; não se pode desfazer o hash de volta à sua forma original, mantendo assim a informação secreta por enquanto. Depois vem a Fase de Revelação, onde o utilizador revela a informação original, que é então verificada pela rede através de um novo hashing e comparando-a com o hash comprometido inicial; se coincidir, voilà! A rede confirma a revelação, e o truque mágico está completo.

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

A Fase de Compromisso

À medida que navegamos nas profundezas do esquema Commit-Reveal, a nossa primeira paragem é a ‘Fase de Compromisso.’ Nesta fase, os utilizadores “comprometem-se” a um certo valor, mas fazem-no 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 qual é, você coloca-o numa caixa trancada e a mostra a todos. Eles sabem que você tem um número, mas não sabem qual é. É disso que se trata o compromisso em blockchain!

Agora, como é que trancamos o nosso valor secreto? No mundo da blockchain, usamos algo chamado função hash para fazer isso. Uma função hash é como um liquidificador mágico. Você coloca o seu valor secreto e ele produz uma versão embaralhada, conhecida como hash. Este hash é único; até uma pequena alteração no valor original cria um hash completamente diferente. A beleza disso é que é um processo unidirecional - uma vez que o valor é hashado, não há uma maneira fácil de descobrir o valor original a partir do hash. Portanto, quando os utilizadores comprometem o seu valor, o que realmente estão a fazer é partilhar o hash do seu valor com todos na blockchain.

A Fase de Revelação

Após a suspense construída na Fase de Compromisso, é hora da grande revelação! A Fase de Revelação é onde os valores comprometidos são finalmente desvendados a todos os participantes na blockchain. Voltando à nossa analogia da caixa trancada, este é o momento em que a caixa é aberta e todos podem ver qual número você tinha escondido. No mundo da blockchain, revelar é um processo direto, mas crucial, que proporciona transparência e equidade em várias aplicações.

Quando um utilizador revela o seu valor comprometido, a rede pode facilmente verificar a sua autenticidade ao fazer o hash do valor revelado e compará-lo com o hash original partilhado durante a Fase de Compromisso. Se os hashes coincidirem, isso 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, garantindo que todos os jogadores cumprem os termos acordados.

Implementando Commit-Reveal em Smart Contracts

Agora que desvendamos a magia do esquema Commit-Reveal, vamos ver como ele ganha vida no mundo da blockchain através de contratos inteligentes. Um contrato inteligente é como um contrato tradicional, mas é digital e autoexecutável. Imagine um robô imparcial que garante automaticamente que todas as partes cumpram os seus acordos, e você tem a ideia de um contrato inteligente. É a ferramenta que leva 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 onde cada passo segue um ritmo definido. Vamos percorrer essa coreografia passo a passo.

Criando o Contrato

Comece criando um contrato inteligente em uma plataforma de blockchain como o Ethereum. Este contrato terá as regras de envolvimento para o esquema Commit-Reveal codificadas nele.

A Função Commit

Desenhe uma função de compromisso dentro do contrato inteligente. Esta função permitirá que os usuários enviem os seus valores hash (a fase de compromisso) para o contrato.

Armazenamento de Valores Comprometidos

À medida que os usuários comprometem seus valores, o contrato inteligente armazenará esses hashes de forma segura no blockchain, aguardando a fase de revelação.

A Função de Revelação

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

Verificação e Validação

Ao revelar, o contrato inteligente verificará os valores revelados através da sua hash e compará-los-á com as hashes inicialmente comprometidas. Se tudo corresponder, a revelação é validada.

Finalização

Uma vez que todas as revelações são recolhidas e verificadas, o contrato inteligente pode executar automaticamente os próximos passos, seja contando votos, determinando vencedores de leilões, ou qualquer outra ação específica da aplicação.

Auditoria e Teste

Antes de implementar, teste minuciosamente o contrato inteligente para garantir que ele funcione conforme o esperado e esteja seguro contra possíveis explorações. Através dessas etapas, o contrato inteligente orquestra a dança Commit-Reveal, garantindo um processo justo e transparente.

Exemplo de Código

SPDX-License-Identifier: solidez MITpragma ^0.8.0; contract CommitReveal {struct Commit { bytes32 hash;    bool revelou;}mapeamento(endereço => Commit) compromissos públicos; mapping(address => uint256) public revealedValues;// A função commit permite que os usuários enviem seus valores hashadosfunction commit(bytes32 _hash) public { require(commits[msg.sender].hash == 0, "Already committed");    commits[msg.sender].hash = _hash;}A função reveal permite que os usuários revelem seus valores originaisfunção reveal(uint256 _value, string memory _salt) public { require(commits[msg.sender].revealed == false, "Already revealed");    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes não correspondem");    commits[msg.sender].revealed = verdadeiro;    revealedValues[msg.sender] = _value;}Um exemplo de função de finalização que poderia contabilizar votosfunção tallyVotes() public view returns (uint256) { uint256 totalVotes = 0;    for (address addr = address(0); addr < address(-1); addr++) { if (commits[addr].revealed) { totalVotes += revealedValues[addr];        } } retornar totalVotos;}Uma função para auditar o estado do contrato (apenas um exemplo, não prático para grandes conjuntos de dados)function audit() public view returns (mapping(address => uint256) memory) { return revealedValues;} }

Explicação:

  • Criando O Contrato: O contrato CommitReveal é criado.
  • A Função Commit: A função de commit aceita um valor hash (_hash) e o armazena contra o endereço do remetente.
  • Armazenando Valores Comprometidos:Os valores hashed são armazenados em um mapeamento chamado commits.
  • A Função de Revelação: A função de revelação permite que os utilizadores submetam o seu valor original (_value) e um sal (_salt). Ela verifica se o hash destes corresponde ao hash inicialmente comprometido.
  • 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 você pode contar votos. Ela itera por todos os endereços possíveis (impraticável para grandes conjuntos de dados) e soma os valores revelados.
  • Auditoria e Teste:A função de auditoria é um exemplo muito simplista de como você pode verificar o estado do contrato.

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

Casos de Uso do Esquema Commit-Reveal em Blockchain

Aprimorando as Plataformas de Leilão

Os leilões online são uma das aplicações quintessenciais do esquema Commit-Reveal. Para impedir que outros usem os valores das ofertas como alavanca, os participantes podem submeter suas ofertas de forma encoberta durante a fase de compromisso. Quando o período de licitação termina, a fase de revelação entra em ação, permitindo que os participantes divulguem suas ofertas. A maior oferta válida é determinada, garantindo um processo de leilão justo e competitivo.

Criando 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. Neste sistema, durante eleições ou qualquer evento de votação, os eleitores comprometem-se com as suas escolhas na fase de compromisso sem as revelar a outros, garantindo a integridade e o segredo dos votos. Uma vez que o período de votação termina, inicia-se a fase de revelação, permitindo que os eleitores divulguem os seus votos. Estes são então contabilizados para determinar o resultado, promovendo um processo de votação justo e transparente.

Contratos de Licitação Secreta

Nos contratos de licitação selada, os licitantes submetem as suas propostas de forma oculta usando o esquema Commit-Reveal. Este processo garante que nenhum dos licitantes saiba os montantes das propostas dos outros, promovendo uma competição justa. Após o período de submissão das propostas, ocorre a fase de revelação, e o contrato é atribuído ao licitante qualificado com a melhor oferta.

Cenários de Jogo

O esquema Commit-Reveal encontra uma aplicação divertida em cenários de jogo, como uma versão digital de Pedra, Papel e Tesoura. Os jogadores comprometem as suas escolhas sem revelá-las, garantindo um jogo justo. Uma vez que ambos os jogadores tenham se comprometido, segue-se a fase de revelação, determinando o vencedor com base nas escolhas feitas.

Mitigando Problemas de Front-running

Em ambientes de blockchain, o front-running é uma preocupação onde atores maliciosos podem potencialmente beneficiar-se do conhecimento de transações pendentes. O esquema Commit-Reveal ajuda a mitigar tais problemas ao esconder inicialmente os detalhes das transações. Quando a fase de revelação chega, já é tarde demais para os atores maliciosos agirem com base nas informações, preservando assim a integridade da transação.

Arquiteturas de Compromisso e Revelação de Baixa Latência

Novas arquiteturas como F3B evoluíram para reduzir a sobrecargaassociado a esquemas tradicionais de Commit-Reveal. O F3B minimiza a escrita de dados na blockchain, oferecendo uma arquitetura de Commit-and-Reveal de baixa latência. Este desenvolvimento é notável, pois significa a contínua otimização e inovação nos esquemas de Commit-Reveal, tornando-os mais eficientes para aplicações do mundo real.

Geração de Números Aleatórios

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

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 em aplicações de blockchain. Tivemos uma prévia de como a tecnologia blockchain poderia 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 jornada 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, você está bem posicionado para se aprofundar mais no blockchain, explorar suas infinitas possibilidades e contribuir para moldar um futuro digital transparente, justo e descentralizado.

Autor: Piero
Tradutor(a): Cedar
Revisor(es): Matheus、Edward、Ashley He
* As informações não se destinam a ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecido ou endossado pela Gate.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem fazer referência à Gate. A violação é uma violação da Lei de Direitos de Autor e pode estar sujeita a ações legais.
Comece agora
Registe-se e ganhe um cupão de
100 USD
!