O que é um esquema de Commit-Reveal na Blockchain? (2025)

iniciantes11/22/2023, 6:46:03 PM
Explore a evolução de 2025 dos esquemas Commit-Reveal em Blockchain, com redução da sobrecarga computacional, aplicações cross-chain, protocolos de segurança aprimorados, crescente adoção por empresas 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 aumentam 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 em reduzir a sobrecarga computacional dos esquemas tradicionais de Commit-Reveal. Algoritmos otimizados agora permitem uma verificação mais rápida enquanto mantêm 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 aprimorada por meio de técnicas criptográficas melhoradas

Aplicações Cross-Chain

O paradigma Commit-Reveal se expandiu para facilitar operações seguras entre cadeias, permitindo que compromissos em uma blockchain sejam revelados e verificados em outra. Essa quebra de 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

Aprimoramentos de Segurança

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

Adoção Empresarial

O setor empresarial mostra um interesse crescente em esquemas de Commit-Reveal para aplicações comerciais:

  • Sistemas de gerenciamento da cadeia de suprimentos usam commit-reveal para processos de licitação selada.
  • As instituições financeiras implementam o esquema para sistemas de liquidação privados
  • Organizações de saúde utilizam commit-reveal para compartilhamento de dados sensíveis enquanto mantêm a privacidade do paciente

Integração com Sistemas de IA

Talvez o desenvolvimento mais empolgante seja a integração de esquemas de Compromisso-Revelação com inteligência artificial:

  • Mercados de previsão de IA onde modelos se comprometem a previsões antes que os eventos ocorram
  • Sistemas de aprendizado de máquina descentralizados que protegem os dados de treinamento 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 exigem justiça, transparência e segurança. À medida que a tecnologia amadurece, sua implementação se torna mais eficiente e adaptável, abrindo novas possibilidades para sistemas descentralizados em várias indústrias. O desenvolvimento contínuo deste protocolo destaca o compromisso da comunidade de blockchain em criar soluções robustas para os 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 de commit-reveal, um protocolo criptográfico que melhora a privacidade e a 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 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-razão tradicionais, é descentralizada, o que significa que nenhuma entidade única tem controle sobre toda a blockchain, e é acessível a qualquer pessoa que faça parte de sua rede. Cada ‘Bloquear’ em uma blockchain contém uma lista de transações. Uma vez que um Bloquear é preenchido com transações, um novo Bloquear é formado, criando uma ‘cadeia’ conectada de Bloqueares - daí o nome, ‘blockchain.’

Uma das características brilhantes do Blockchain é sua ênfase na confiança e transparência. Qualquer um na rede tem acesso e pode visualizar cada transação em um Blockchain. Essa abertura desencoraja a desonestidade e fomenta 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 aprofundar à medida que avançamos neste curso.

Introdução ao Esquema de Compromisso-Revelação

Agora que você tem uma ideia do que é blockchain, vamos introduzir um sabor especial - o esquema de Commit-Reveal. É como um show de mágica onde um mágico (o usuário) primeiro se compromete a um determinado 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 usuário envia uma versão hash de suas informações para a blockchain. Esta versão hash é como uma versão embaralhada das informações originais que oculta o conteúdo real. A mágica da função hash é que é uma jornada unidirecional; você não pode desembaralhar o hash de volta à sua forma original, mantendo assim as informações em segredo por enquanto. Em seguida, vem a Fase de Revelação, onde o usuário revela as informações originais, que são então verificadas pela rede ao fazer o hash novamente e compará-las 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 blockchain podem alcançar um novo nível de engajamento em aplicações como leilões, sistemas de votação e mais, que exploraremos em detalhes nos próximos módulos.

A Fase de Compromisso

À medida que navegamos nas profundezas do esquema Commit-Reveal, nossa primeira parada é a ‘Fase de Compromisso.’ Nessa fase, os usuários “comprometem-se” a um certo valor, mas fazem isso de uma maneira que mantém o valor real em segredo. Imagine que você tem um número secreto em mente, mas em vez de contar a todos qual é, você o coloca em uma caixa trancada e a mostra a todos. Eles sabem que você tem um número, mas não sabem qual é. Isso é o que significa comprometer-se no blockchain!

Agora, como fazemos para trancar nosso valor secreto? No mundo do blockchain, usamos algo chamado função hash para fazer isso. Uma função hash é como um liquidificador mágico. Você coloca seu valor secreto e ele gera uma versão embaralhada dele, conhecida como hash. Este hash é único; até mesmo uma pequena mudança 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 usuários comprometem seu valor, o que eles realmente estão fazendo é compartilhar o hash de seu valor com todos no blockchain.

A Fase de Revelação

Após a suspense criado 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 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, a revelação é um processo simples, mas crucial, que proporciona transparência e justiça em várias aplicações.

Quando um usuário revela seu valor comprometido, a rede pode facilmente verificar sua autenticidade ao hash do valor revelado e compará-lo com o hash original compartilhado durante a Fase de Compromisso. Se os hashes coincidirem, isso confirma que o usuário não mudou de ideia no meio do caminho. Esse processo de verificação simples, mas poderoso, ajuda a manter um ambiente confiável onde todos jogam de acordo com as regras. É como ter um árbitro em um jogo, garantindo que todos os jogadores cumpram os termos acordados.

Implementando Commit-Reveal em Contratos Inteligentes

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 seus acordos, e você tem a ideia de um contrato inteligente. É a ferramenta que transforma a ideia teórica do Commit-Reveal em algo prático no reino digital. Implementar um esquema Commit-Reveal via um contrato inteligente é como coreografar uma dança onde cada passo segue um ritmo definido. Vamos passar por essa coreografia passo a passo.

Criando O Contrato

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

A Função Commit

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

Armazenando Valores Comprometidos

À medida que os usuários comprometem seus valores, o contrato inteligente armazenará esses hashes de forma segura na 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, essa 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 por meio de hash e os comparará com os hashes inicialmente comprometidos. Se tudo coincidir, a revelação é validada.

Finalização

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

Auditoria e Teste

Antes de implantar, 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 de Commit-Reveal, garantindo um processo justo e transparente.

Exemplo de Código

// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract CommitReveal {struct Commit {    bytes32 hash;    bool revealed;}mapping(address => Commit) public commits;mapping(address => uint256) public revealedValues;// A função de commit permite que os usuários enviem seus valores hashfunction commit(bytes32 _hash) public {    require(commits[msg.sender].hash == 0, "Já foi feito o commit");    commits[msg.sender].hash = _hash;}// A função de reveal permite que os usuários revelem seus valores originaisfunction reveal(uint256 _value, string memory _salt) public {    require(commits[msg.sender].revealed == false, "Já foi revelado");    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Os hashes não correspondem");    commits[msg.sender].revealed = true;    revealedValues[msg.sender] = _value;}// Uma função de finalização de exemplo que poderia contar os votosfunction tallyVotes() public view returns (uint256) {    uint256 totalVotes = 0;    for (address addr = address(0); addr < address(-1); addr++) {        if (commits[addr].revealed) {            totalVotes += revealedValues[addr];        }    }    return totalVotes;}// 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 hash são armazenados em um mapeamento chamado commits.
  • A Função de Revelação: A função de revelação permite que os usuários enviem seu valor original (_value) e um sal (_salt). Ela verifica se o hash desses 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 contabilizar votos. Ela 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 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 uma solução pronta para produção.

Casos de Uso do Esquema de Compromisso-Revelação em Blockchain

Aprimorando Plataformas de Leilão

Os leilões online são uma das aplicações essenciais do esquema Commit-Reveal. Para evitar que outros usem os valores das ofertas como alavanca, os participantes podem enviar suas ofertas de forma secreta durante a fase de compromisso. Quando o período de licitação termina, a fase de revelação começa, 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 Justa

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

Contratos de Licitação Secreta

Em contratos de licitação em envelopes fechados, os licitantes submetem suas propostas de forma oculta usando o esquema Commit-Reveal. Esse processo garante que nenhum dos licitantes saiba os valores 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 é concedido 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 suas escolhas sem revelá-las, garantindo um jogo justo. Uma vez que ambos os jogadores tenham se comprometido, a fase de revelação segue, 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 poderiam potencialmente se beneficiar do conhecimento de transações pendentes. O esquema Commit-Reveal ajuda a mitigar tais problemas ao ocultar os detalhes da transação inicialmente. 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

Arquiteturas mais recentes como F3B evoluiu para reduzir a sobrecargaassociado a esquemas tradicionais de Compromisso-Revelação. O F3B minimiza a gravação de dados na blockchain, oferecendo uma arquitetura de Compromisso e Revelação de baixa latência. Este desenvolvimento é notável, pois significa a contínua otimização e inovação nos esquemas de Compromisso-Revelação, 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 esta interessante análise do esquema de Commit-Reveal chega ao fim, é importante considerar como esse mecanismo simples, mas poderoso, ajuda a construir confiança e transparência em aplicativos 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 de Commit-Reveal. A jornada não termina aqui; a natureza em constante evolução da tecnologia blockchain apresenta novos horizontes a serem explorados. Armado com o conhecimento adquirido por meio deste curso, você está bem posicionado para se aprofundar no blockchain, explorar suas possibilidades infinitas e contribuir para a construção de um futuro digital transparente, justo e descentralizado.

Autor: Piero
Tradutor: Cedar
Revisores: Matheus、Edward、Ashley He
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.

O que é um esquema de Commit-Reveal na Blockchain? (2025)

iniciantes11/22/2023, 6:46:03 PM
Explore a evolução de 2025 dos esquemas Commit-Reveal em Blockchain, com redução da sobrecarga computacional, aplicações cross-chain, protocolos de segurança aprimorados, crescente adoção por empresas 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 aumentam 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 em reduzir a sobrecarga computacional dos esquemas tradicionais de Commit-Reveal. Algoritmos otimizados agora permitem uma verificação mais rápida enquanto mantêm 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 aprimorada por meio de técnicas criptográficas melhoradas

Aplicações Cross-Chain

O paradigma Commit-Reveal se expandiu para facilitar operações seguras entre cadeias, permitindo que compromissos em uma blockchain sejam revelados e verificados em outra. Essa quebra de 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

Aprimoramentos de Segurança

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

Adoção Empresarial

O setor empresarial mostra um interesse crescente em esquemas de Commit-Reveal para aplicações comerciais:

  • Sistemas de gerenciamento da cadeia de suprimentos usam commit-reveal para processos de licitação selada.
  • As instituições financeiras implementam o esquema para sistemas de liquidação privados
  • Organizações de saúde utilizam commit-reveal para compartilhamento de dados sensíveis enquanto mantêm a privacidade do paciente

Integração com Sistemas de IA

Talvez o desenvolvimento mais empolgante seja a integração de esquemas de Compromisso-Revelação com inteligência artificial:

  • Mercados de previsão de IA onde modelos se comprometem a previsões antes que os eventos ocorram
  • Sistemas de aprendizado de máquina descentralizados que protegem os dados de treinamento 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 exigem justiça, transparência e segurança. À medida que a tecnologia amadurece, sua implementação se torna mais eficiente e adaptável, abrindo novas possibilidades para sistemas descentralizados em várias indústrias. O desenvolvimento contínuo deste protocolo destaca o compromisso da comunidade de blockchain em criar soluções robustas para os 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 de commit-reveal, um protocolo criptográfico que melhora a privacidade e a 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 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-razão tradicionais, é descentralizada, o que significa que nenhuma entidade única tem controle sobre toda a blockchain, e é acessível a qualquer pessoa que faça parte de sua rede. Cada ‘Bloquear’ em uma blockchain contém uma lista de transações. Uma vez que um Bloquear é preenchido com transações, um novo Bloquear é formado, criando uma ‘cadeia’ conectada de Bloqueares - daí o nome, ‘blockchain.’

Uma das características brilhantes do Blockchain é sua ênfase na confiança e transparência. Qualquer um na rede tem acesso e pode visualizar cada transação em um Blockchain. Essa abertura desencoraja a desonestidade e fomenta 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 aprofundar à medida que avançamos neste curso.

Introdução ao Esquema de Compromisso-Revelação

Agora que você tem uma ideia do que é blockchain, vamos introduzir um sabor especial - o esquema de Commit-Reveal. É como um show de mágica onde um mágico (o usuário) primeiro se compromete a um determinado 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 usuário envia uma versão hash de suas informações para a blockchain. Esta versão hash é como uma versão embaralhada das informações originais que oculta o conteúdo real. A mágica da função hash é que é uma jornada unidirecional; você não pode desembaralhar o hash de volta à sua forma original, mantendo assim as informações em segredo por enquanto. Em seguida, vem a Fase de Revelação, onde o usuário revela as informações originais, que são então verificadas pela rede ao fazer o hash novamente e compará-las 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 blockchain podem alcançar um novo nível de engajamento em aplicações como leilões, sistemas de votação e mais, que exploraremos em detalhes nos próximos módulos.

A Fase de Compromisso

À medida que navegamos nas profundezas do esquema Commit-Reveal, nossa primeira parada é a ‘Fase de Compromisso.’ Nessa fase, os usuários “comprometem-se” a um certo valor, mas fazem isso de uma maneira que mantém o valor real em segredo. Imagine que você tem um número secreto em mente, mas em vez de contar a todos qual é, você o coloca em uma caixa trancada e a mostra a todos. Eles sabem que você tem um número, mas não sabem qual é. Isso é o que significa comprometer-se no blockchain!

Agora, como fazemos para trancar nosso valor secreto? No mundo do blockchain, usamos algo chamado função hash para fazer isso. Uma função hash é como um liquidificador mágico. Você coloca seu valor secreto e ele gera uma versão embaralhada dele, conhecida como hash. Este hash é único; até mesmo uma pequena mudança 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 usuários comprometem seu valor, o que eles realmente estão fazendo é compartilhar o hash de seu valor com todos no blockchain.

A Fase de Revelação

Após a suspense criado 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 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, a revelação é um processo simples, mas crucial, que proporciona transparência e justiça em várias aplicações.

Quando um usuário revela seu valor comprometido, a rede pode facilmente verificar sua autenticidade ao hash do valor revelado e compará-lo com o hash original compartilhado durante a Fase de Compromisso. Se os hashes coincidirem, isso confirma que o usuário não mudou de ideia no meio do caminho. Esse processo de verificação simples, mas poderoso, ajuda a manter um ambiente confiável onde todos jogam de acordo com as regras. É como ter um árbitro em um jogo, garantindo que todos os jogadores cumpram os termos acordados.

Implementando Commit-Reveal em Contratos Inteligentes

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 seus acordos, e você tem a ideia de um contrato inteligente. É a ferramenta que transforma a ideia teórica do Commit-Reveal em algo prático no reino digital. Implementar um esquema Commit-Reveal via um contrato inteligente é como coreografar uma dança onde cada passo segue um ritmo definido. Vamos passar por essa coreografia passo a passo.

Criando O Contrato

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

A Função Commit

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

Armazenando Valores Comprometidos

À medida que os usuários comprometem seus valores, o contrato inteligente armazenará esses hashes de forma segura na 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, essa 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 por meio de hash e os comparará com os hashes inicialmente comprometidos. Se tudo coincidir, a revelação é validada.

Finalização

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

Auditoria e Teste

Antes de implantar, 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 de Commit-Reveal, garantindo um processo justo e transparente.

Exemplo de Código

// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract CommitReveal {struct Commit {    bytes32 hash;    bool revealed;}mapping(address => Commit) public commits;mapping(address => uint256) public revealedValues;// A função de commit permite que os usuários enviem seus valores hashfunction commit(bytes32 _hash) public {    require(commits[msg.sender].hash == 0, "Já foi feito o commit");    commits[msg.sender].hash = _hash;}// A função de reveal permite que os usuários revelem seus valores originaisfunction reveal(uint256 _value, string memory _salt) public {    require(commits[msg.sender].revealed == false, "Já foi revelado");    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Os hashes não correspondem");    commits[msg.sender].revealed = true;    revealedValues[msg.sender] = _value;}// Uma função de finalização de exemplo que poderia contar os votosfunction tallyVotes() public view returns (uint256) {    uint256 totalVotes = 0;    for (address addr = address(0); addr < address(-1); addr++) {        if (commits[addr].revealed) {            totalVotes += revealedValues[addr];        }    }    return totalVotes;}// 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 hash são armazenados em um mapeamento chamado commits.
  • A Função de Revelação: A função de revelação permite que os usuários enviem seu valor original (_value) e um sal (_salt). Ela verifica se o hash desses 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 contabilizar votos. Ela 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 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 uma solução pronta para produção.

Casos de Uso do Esquema de Compromisso-Revelação em Blockchain

Aprimorando Plataformas de Leilão

Os leilões online são uma das aplicações essenciais do esquema Commit-Reveal. Para evitar que outros usem os valores das ofertas como alavanca, os participantes podem enviar suas ofertas de forma secreta durante a fase de compromisso. Quando o período de licitação termina, a fase de revelação começa, 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 Justa

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

Contratos de Licitação Secreta

Em contratos de licitação em envelopes fechados, os licitantes submetem suas propostas de forma oculta usando o esquema Commit-Reveal. Esse processo garante que nenhum dos licitantes saiba os valores 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 é concedido 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 suas escolhas sem revelá-las, garantindo um jogo justo. Uma vez que ambos os jogadores tenham se comprometido, a fase de revelação segue, 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 poderiam potencialmente se beneficiar do conhecimento de transações pendentes. O esquema Commit-Reveal ajuda a mitigar tais problemas ao ocultar os detalhes da transação inicialmente. 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

Arquiteturas mais recentes como F3B evoluiu para reduzir a sobrecargaassociado a esquemas tradicionais de Compromisso-Revelação. O F3B minimiza a gravação de dados na blockchain, oferecendo uma arquitetura de Compromisso e Revelação de baixa latência. Este desenvolvimento é notável, pois significa a contínua otimização e inovação nos esquemas de Compromisso-Revelação, 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 esta interessante análise do esquema de Commit-Reveal chega ao fim, é importante considerar como esse mecanismo simples, mas poderoso, ajuda a construir confiança e transparência em aplicativos 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 de Commit-Reveal. A jornada não termina aqui; a natureza em constante evolução da tecnologia blockchain apresenta novos horizontes a serem explorados. Armado com o conhecimento adquirido por meio deste curso, você está bem posicionado para se aprofundar no blockchain, explorar suas possibilidades infinitas e contribuir para a construção de um futuro digital transparente, justo e descentralizado.

Autor: Piero
Tradutor: Cedar
Revisores: Matheus、Edward、Ashley He
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!