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
!
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.