Como Provar que Seu Código Existia em uma Data Específica (Sem Revelá-lo)
A tarefa é simples de enunciar, mas difícil de resolver bem: provar que um commit específico—ou uma base de código inteira—existia em uma determinada data, sem publicar seu código-fonte ou depender de logs que um tribunal possa descartar como autointeressados. Este guia explica exatamente como fazer isso com o Timestamp GIT, um GitHub App gerenciado que ancora hashes de commits Git na blockchain do Bitcoin usando o protocolo OpenTimestamps.
Ao final, você terá carimbo de data/hora automatizado e de conhecimento zero para seu histórico Git. Cada commit monitorado recebe um recibo criptográfico .ots, uma página pública de verificação e um caminho para evidências de estado da técnica prontas para uso judicial—tudo sem instalar ferramentas OpenTimestamps ou lidar diretamente com transações Bitcoin.
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta no GitHub.
- Um repositório que você deseja carimbar—público ou privado.
- Acesso para instalar o Timestamp GIT GitHub App em timestampgit.dev.
- Familiaridade básica com
git commitegit push. Não é necessário conhecimento de criptografia ou blockchain. - Para o Modo Enterprise ZK: um arquivo de workflow do GitHub Actions fornecido pelo Timestamp GIT, além de um repositório de destino onde as provas serão gravadas.
- Opcional: se você precisar de uma configuração air-gapped ou auto-hospedada, uma licença Docker do Timestamp GIT.
O preço se adapta ao caso de uso: repositórios públicos podem usar o plano gratuito, repositórios privados são cobertos pelo Pro Agency a US$ 49/mês, e o Modo Enterprise ZK com GitHub Actions começa em US$ 199/mês.
Passo a Passo: Configurando o Carimbo de Data/Hora Automático
Passo 1: Instale o Timestamp GIT GitHub App
Acesse timestampgit.dev e instale o Timestamp GIT GitHub App pelo GitHub Marketplace.
As permissões que você concede dependem do seu modo:
- Modo Standard: O Timestamp GIT precisa de acesso somente leitura ao repositório de origem porque o GitHub não oferece uma permissão de “apenas hash de commit”. Ele lê apenas o hash do commit HEAD, nunca o conteúdo dos arquivos.
- Modo Enterprise ZK: O Timestamp GIT não precisa de nenhum acesso de leitura ao repositório de origem. Você só precisa de acesso de gravação a um repositório de destino separado onde os arquivos de prova ficarão.
Em ambos os modos, o repositório de destino recebe uma branch dedicada ou repositório sombra contendo as provas.
Passo 2: Selecione os Repositórios a Monitorar
Após a instalação, abra o painel de repositórios em timestampgit.dev/repos. Você verá os repositórios que pode monitorar.
Selecione os repositórios de origem que devem ser carimbados automaticamente. Se você usar um repositório sombra separado para as provas, escolha-o como destino.
Passo 3: Escolha Seu Modo de Implantação
O Timestamp GIT oferece dois modos:
- Modo Standard: O GitHub App detecta novos commits automaticamente via webhooks e lê apenas o hash do commit.
- Modo Enterprise ZK: Uma GitHub Action curta roda na sua própria infraestrutura e envia apenas o hash do commit para a API do Timestamp GIT. Seu código-fonte nunca sai do seu ambiente.
Para a maioria das equipes, o Modo Standard é o caminho mais rápido. Para conformidade estrita ou ambientes de código privado, o Modo Enterprise ZK é a opção de conhecimento zero mais robusta.
Passo 4: Para o Modo Enterprise ZK, Adicione o Workflow do GitHub Actions
Se você escolher o Modo Enterprise ZK, o Timestamp GIT fornece um arquivo de workflow de 12 linhas. Uma versão simplificada se parece com isto:
# .github/workflows/timestamp-git.yml
name: timestamp-git
on:
push:
branches: ["**"]
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Send commit hash to Timestamp GIT
env:
TIMESTAMP_GIT_SIGNED_URL: ${{ secrets.TIMESTAMP_GIT_SIGNED_URL }}
run: |
curl -f -X POST "$TIMESTAMP_GIT_SIGNED_URL"
O workflow real usa uma URL assinada gerada no painel do Timestamp GIT. Essa URL carrega o valor HMAC e o identificador do commit, então a Action nunca manipula código-fonte—apenas o hash.
Passo 5: Faça um Commit
Agora crie um commit normal e envie-o para o repositório monitorado:
git add .
git commit -m "feat: add rate limiter"
git push origin main
No Modo Standard, o GitHub App detecta o novo commit por meio de um webhook. No Modo Enterprise ZK, a GitHub Action envia o hash do commit para a API do Timestamp GIT assim que o push ocorre.
Passo 6: Aguarde o Processo de Lote Noturno
O Timestamp GIT não ancora cada commit individualmente em tempo real. Em vez disso, um cron worker noturno roda à meia-noite:
- Ele coleta todos os hashes de commits pendentes.
- Agrupa-os em arquivos de manifesto diários.
- Constrói uma árvore de Merkle.
- Cria provas OpenTimestamps usando calendários OTS públicos.
- Ancora a raiz de Merkle na blockchain do Bitcoin.
A confirmação do Bitcoin normalmente leva cerca de três horas. Depois disso, a prova é imutável—nenhuma entidade, incluindo o Timestamp GIT ou você, pode alterá-la.
Passo 7: Recupere Sua Prova
Quando o processo noturno termina, o Timestamp GIT envia o manifesto e os arquivos de recibo .ots de volta para sua branch de timestamps dedicada ou repositório sombra.
Você também pode baixar os arquivos de prova diretamente do painel do Timestamp GIT. Os principais artefatos são:
- O arquivo de manifesto diário que contém os hashes dos commits.
- O arquivo de recibo
.otspara cada lote ancorado. - Metadados de auditoria mostrando as informações do bloco e da transação Bitcoin.
Como Confirmar que Funcionou (Verificação)
A verificação é onde o Timestamp GIT transforma um hash Git em algo que você pode mostrar a um advogado, auditor ou tribunal.
Verifique a Página de Status do Repositório
Abra https://timestampgit.dev/status/{user}/{repo}. Este painel público mostra:
- O último bloco Bitcoin ancorado e os detalhes da transação.
- A data de ancoragem mais antiga do repositório.
- A regularidade diária do carimbo de data/hora.
- Um mapa de calor em calendário dos commits ancorados.
- CSV de auditoria e certificado PDF para download.
Execute a Verificação de Merkle no Navegador
Para um dia específico, abra https://timestampgit.dev/verification/{user}/{repo}/{date}. Esta página percorre a verificação da cadeia de Merkle passo a passo.
Todo o cálculo acontece localmente no seu navegador. O Timestamp GIT nunca vê o que você verifica—é um fluxo de verificação de conhecimento zero.
Baixe Registros Formais
Use o painel ou a API para baixar:
- Um certificado PDF para uma data específica.
- Um registro de auditoria completo como CSV.
Isso é útil para disputas contratuais, due diligence de propriedade intelectual e descoberta legal.
Adicione um Selo de Verificação ao Seu README
O Timestamp GIT fornece snippets de selo Shields.io incorporáveis em https://timestampgit.dev/connected/{user}/{repo}. Coloque o Markdown gerado no seu README para exibir publicamente o status de verificação.
Lembre-se de que repositórios privados usam um HMAC criptografado anexado à URL do selo. Apenas usuários autorizados podem ver o status de repositórios privados.
Verificação Independente
Se você quiser verificar fora da interface do Timestamp GIT, pode baixar o arquivo de recibo .ots e executar ferramentas padrão de verificação OpenTimestamps contra a blockchain do Bitcoin. A página de verificação no navegador do produto já faz isso por você, mas o recibo permanece verificável de forma independente para sempre.
Solução de Problemas Comuns
Nenhum Commit Detectado
Verifique se o GitHub App está instalado no repositório correto e tem as permissões necessárias para o seu modo. Nas configurações do GitHub, consulte as entregas de webhook para ver se o Timestamp GIT recebeu o evento de push.
Prova Não Aparece Após um Dia
Lembre-se de que a ancoragem no Bitcoin leva várias horas—normalmente cerca de três horas. Confirme que o cron job noturno rodou e que a branch de destino recebeu novos arquivos. Se você estiver no Modo Standard, verifique se o repositório de destino é gravável.
Selo Mostra “Não Verificado”
Se o repositório for privado, o selo público não funcionará a menos que você use a URL assinada com HMAC do widget de selo. Para repositórios públicos, certifique-se de estar usando o snippet exato gerado pelo Timestamp GIT.
Modo Enterprise ZK Não Envia Hashes
Abra os logs do workflow do GitHub Actions e procure por erros. Confirme que:
- A URL assinada no segredo do repositório ainda é válida.
- O repositório de destino está acessível.
- O workflow roda nos eventos de push corretos.
Problemas com a Instância Docker Auto-Hospedada
Se você executar a imagem Docker, verifique a configuração do Compose e os logs:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
Verifique também se o arquivo de licença é válido e está montado no local esperado. O app fica disponível em http://localhost:8080 após a inicialização.
FAQ
Como o Timestamp GIT prova que meu código existia em uma data sem ver meu código?
O Timestamp GIT extrai apenas o hash do commit Git—uma impressão digital criptográfica unidirecional—e ancora esse hash na blockchain do Bitcoin. O código-fonte real nunca sai do seu repositório. Como o hash não pode ser revertido para revelar o código, o carimbo de data/hora prova que o hash existia naquele momento, o que por sua vez prova que o código existia.
Posso usar o Timestamp GIT para repositórios privados?
Sim. O Timestamp GIT tem planos para repositórios privados. No Modo Standard, o GitHub App precisa de acesso de leitura ao repositório de origem para detectar hashes de commits, mas nunca lê o conteúdo dos arquivos. No Modo Enterprise ZK, uma GitHub Action envia apenas o hash do commit para a API, então o app nunca tem acesso ao repositório de origem.
O que acontece se o Timestamp GIT sair do ar? Ainda posso verificar meus carimbos de data/hora?
Seus carimbos de data/hora permanecem verificáveis para sempre. As provas são baseadas na blockchain do Bitcoin e no protocolo OpenTimestamps, ambos independentes do Timestamp GIT. Você pode baixar os arquivos de recibo .ots e verificá-los localmente usando ferramentas OpenTimestamps padrão contra a blockchain do Bitcoin, sem qualquer dependência dos servidores do Timestamp GIT.
O carimbo de data/hora é juridicamente vinculante em tribunal?
Nenhum carimbo de data/hora pode garantir um resultado legal específico. No entanto, carimbos de data/hora criptográficos ancorados na blockchain do Bitcoin são cada vez mais reconhecidos como forte evidência de existência em um ponto no tempo. Eles fornecem um registro à prova de adulteração e matematicamente verificável que pode ser apresentado em processos legais para apoiar alegações de estado da técnica ou autoria. Você deve consultar um advogado sobre a admissibilidade na sua jurisdição.
Conclusão
Você agora configurou o carimbo de data/hora automático e de conhecimento zero para seus commits Git com o Timestamp GIT. Em vez de manter logs internos frágeis ou aprender manualmente um protocolo criptográfico, você instalou um GitHub App uma vez, conectou um repositório e deixou processos noturnos ancorarem hashes de commits no Bitcoin.
O resultado é prova imutável de estado da técnica, independente de qualquer fornecedor, gerada sem revelar código-fonte. Comece com o plano gratuito para repositórios públicos ou explore a opção Docker auto-hospedada se precisar de infraestrutura air-gapped.
Para aprofundamentos, veja os posts relacionados abaixo.
Posts relacionados
- Proteja Sua Startup de Trolls de Patentes com Carimbo de Data/Hora Git
- Como Dev Shops Podem Provar a Entrega de Trabalho com Timestamp GIT
- Prova de Existência para Código: O Que É e Por Que Importa