Come Dimostrare che il Tuo Codice Esisteva in una Data Specifica (Senza Rivelarlo)
Il compito è semplice da enunciare ma difficile da risolvere bene: dimostrare che uno specifico commit—o un’intera codebase—esisteva in una data determinata, senza pubblicare il codice sorgente né affidarsi a log che un tribunale potrebbe liquidare come autoreferenziali. Questa guida spiega esattamente come farlo con Timestamp GIT, una GitHub App gestita che ancora gli hash dei commit Git alla blockchain di Bitcoin usando il protocollo OpenTimestamps.
Alla fine, avrai un timestamping automatico e a conoscenza zero per la tua cronologia Git. Ogni commit monitorato riceve una ricevuta crittografica .ots, una pagina di verifica pubblica e un percorso verso prove di prior art pronte per il tribunale—il tutto senza installare strumenti OpenTimestamps né toccare transazioni Bitcoin direttamente.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account GitHub.
- Un repository da marcare temporalmente—pubblico o privato.
- Accesso per installare la Timestamp GIT GitHub App da timestampgit.dev.
- Familiarità di base con
git commitegit push. Non è richiesta alcuna conoscenza di crittografia o blockchain. - Per la modalità Enterprise ZK: un file di workflow GitHub Actions fornito da Timestamp GIT, più un repository di destinazione in cui verranno scritte le prove.
- Opzionale: se hai bisogno di una configurazione air-gapped o self-hosted, una licenza Docker di Timestamp GIT.
I prezzi si adattano al caso d’uso: i repository pubblici possono usare il piano gratuito, i repository privati sono coperti da Pro Agency a $49/mese, e la modalità Enterprise ZK con GitHub Actions parte da $199/mese.
Passo dopo Passo: Configurare il Timestamping Automatico
Passo 1: Installa la Timestamp GIT GitHub App
Vai su timestampgit.dev e installa la Timestamp GIT GitHub App dal GitHub Marketplace.
I permessi che concedi dipendono dalla modalità:
- Modalità Standard: Timestamp GIT ha bisogno di accesso in sola lettura al repository sorgente perché GitHub non offre un permesso “solo hash del commit”. Legge solo l’hash del commit HEAD, mai il contenuto dei file.
- Modalità Enterprise ZK: Timestamp GIT non ha bisogno di alcun accesso in lettura al repository sorgente. Ti serve solo accesso in scrittura a un repository di destinazione separato in cui vivranno i file di prova.
In entrambe le modalità, il repository di destinazione riceve un branch dedicato o un repository ombra contenente le prove.
Passo 2: Seleziona i Repository da Monitorare
Dopo l’installazione, apri la dashboard dei repository su timestampgit.dev/repos. Vedrai i repository che puoi monitorare.
Seleziona i repository sorgente che devono essere marcati temporalmente in modo automatico. Se usi un repository ombra separato per le prove, sceglilo come destinazione.
Passo 3: Scegli la Tua Modalità di Deployment
Timestamp GIT offre due modalità:
- Modalità Standard: La GitHub App rileva automaticamente i nuovi commit tramite webhook e legge solo l’hash del commit.
- Modalità Enterprise ZK: Una breve GitHub Action gira sulla tua infrastruttura e invia solo l’hash del commit all’API di Timestamp GIT. Il tuo codice sorgente non lascia mai il tuo ambiente.
Per la maggior parte dei team, la Modalità Standard è il percorso più rapido. Per conformità rigorosa o ambienti a sorgente privata, la Modalità Enterprise ZK è l’opzione a conoscenza zero più forte.
Passo 4: Per la Modalità Enterprise ZK, Aggiungi il Workflow GitHub Actions
Se scegli la Modalità Enterprise ZK, Timestamp GIT fornisce un file di workflow di 12 righe. Una versione semplificata appare così:
# .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"
Il workflow reale usa un URL firmato generato nella dashboard di Timestamp GIT. Quell’URL trasporta il valore HMAC e l’identificatore del commit, quindi l’Action non gestisce mai il codice sorgente—solo l’hash.
Passo 5: Fai un Commit
Ora crea un commit normale e invialo al repository monitorato:
git add .
git commit -m "feat: add rate limiter"
git push origin main
In Modalità Standard, la GitHub App rileva il nuovo commit tramite un webhook. In Modalità Enterprise ZK, la GitHub Action invia l’hash del commit all’API di Timestamp GIT non appena avviene il push.
Passo 6: Attendi il Processo Batch Notturno
Timestamp GIT non ancora ogni commit individualmente in tempo reale. Invece, un worker cron notturno gira a mezzanotte:
- Raccoglie tutti gli hash dei commit in sospeso.
- Li raggruppa in file manifest giornalieri.
- Costruisce un albero di Merkle.
- Crea prove OpenTimestamps usando calendari OTS pubblici.
- Ancora la radice di Merkle nella blockchain di Bitcoin.
La conferma su Bitcoin richiede normalmente circa tre ore. Dopo di che, la prova è immutabile—nessuna entità, inclusi Timestamp GIT o tu, può alterarla.
Passo 7: Recupera la Tua Prova
Una volta terminato il processo notturno, Timestamp GIT invia il manifest e i file di ricevuta .ots al tuo branch dedicato per i timestamp o al repository ombra.
Puoi anche scaricare i file di prova direttamente dalla dashboard di Timestamp GIT. Gli artefatti principali sono:
- Il file manifest giornaliero che contiene gli hash dei commit.
- Il file di ricevuta
.otsper ogni batch ancorato. - Metadati di audit che mostrano le informazioni sul blocco Bitcoin e sulla transazione.
Come Confermare che Ha Funzionato (Verifica)
La verifica è dove Timestamp GIT trasforma un hash Git in qualcosa che puoi mostrare a un avvocato, un revisore o un tribunale.
Controlla la Pagina di Stato del Repository
Apri https://timestampgit.dev/status/{user}/{repo}. Questa dashboard pubblica mostra:
- L’ultimo blocco Bitcoin ancorato e i dettagli della transazione.
- La prima data di ancoraggio per il repository.
- La regolarità del timestamping giornaliero.
- Una heatmap calendario dei commit ancorati.
- CSV di audit scaricabile e certificato PDF.
Esegui la Verifica Merkle nel Browser
Per un giorno specifico, apri https://timestampgit.dev/verification/{user}/{repo}/{date}. Questa pagina illustra la verifica della catena Merkle passo dopo passo.
Tutto il calcolo avviene localmente nel tuo browser. Timestamp GIT non vede mai cosa verifichi—è un flusso di verifica a conoscenza zero.
Scarica Documenti Formali
Usa la dashboard o l’API per scaricare:
- Un certificato PDF per una data specifica.
- Un registro di audit completo come CSV.
Questi sono utili per controversie contrattuali, due diligence sulla proprietà intellettuale e discovery legale.
Aggiungi un Badge di Verifica al Tuo README
Timestamp GIT fornisce snippet di badge Shields.io incorporabili da https://timestampgit.dev/connected/{user}/{repo}. Inserisci il Markdown generato nel tuo README per mostrare pubblicamente lo stato di verifica.
Tieni presente che i repository privati usano un HMAC cifrato aggiunto all’URL del badge. Solo gli utenti autorizzati possono vedere lo stato per i repository privati.
Verifica Indipendente
Se mai volessi verificare al di fuori dell’interfaccia di Timestamp GIT, puoi scaricare il file di ricevuta .ots ed eseguire gli strumenti standard di verifica OpenTimestamps contro la blockchain di Bitcoin. La pagina di verifica basata su browser del prodotto gestisce già questo per te, ma la ricevuta rimane verificabile in modo indipendente per sempre.
Risoluzione dei Problemi Comuni
Nessun Commit Rilevato
Controlla che la GitHub App sia installata sul repository corretto e abbia i permessi richiesti per la tua modalità. Nelle impostazioni di GitHub, guarda le consegne dei webhook per vedere se Timestamp GIT ha ricevuto l’evento di push.
La Prova Non Appare Dopo un Giorno
Ricorda che l’ancoraggio su Bitcoin richiede diverse ore—normalmente circa tre ore. Conferma che il job cron notturno sia stato eseguito e che il branch di destinazione abbia ricevuto nuovi file. Se sei in Modalità Standard, controlla che il repository di destinazione sia scrivibile.
Il Badge Mostra “Non Verificato”
Se il repository è privato, il badge pubblico non funzionerà a meno che tu non usi l’URL firmato HMAC dal widget del badge. Per i repository pubblici, assicurati di usare lo snippet esatto generato da Timestamp GIT.
La Modalità Enterprise ZK Non Invia Hash
Apri i log del workflow GitHub Actions e cerca errori. Conferma che:
- L’URL firmato nel segreto del repository sia ancora valido.
- Il repository di destinazione sia raggiungibile.
- Il workflow giri sugli eventi di push corretti.
Problemi con l’Istanza Docker Self-Hosted
Se esegui l’immagine Docker, verifica la configurazione Compose e i log:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
Controlla anche che il file di licenza sia valido e montato nella posizione prevista. L’app è disponibile su http://localhost:8080 dopo l’avvio.
FAQ
Come fa Timestamp GIT a dimostrare che il mio codice esisteva in una data senza vedere il mio codice?
Timestamp GIT estrae solo l’hash del commit Git—un’impronta crittografica unidirezionale—e ancora quell’hash nella blockchain di Bitcoin. Il codice sorgente effettivo non lascia mai il tuo repository. Poiché l’hash non può essere invertito per rivelare il codice, il timestamp dimostra che l’hash esisteva in quel momento, il che a sua volta dimostra che il codice esisteva.
Posso usare Timestamp GIT per repository privati?
Sì. Timestamp GIT ha piani per repository privati. In Modalità Standard, la GitHub App ha bisogno di accesso in lettura al repository sorgente per rilevare gli hash dei commit, ma non legge mai il contenuto dei file. In Modalità Enterprise ZK, una GitHub Action invia solo l’hash del commit all’API, quindi l’app non ha mai accesso al repository sorgente.
Cosa succede se Timestamp GIT cessa l’attività? Posso ancora verificare i miei timestamp?
I tuoi timestamp rimangono verificabili per sempre. Le prove si basano sulla blockchain di Bitcoin e sul protocollo OpenTimestamps, entrambi indipendenti da Timestamp GIT. Puoi scaricare i file di ricevuta .ots e verificarli localmente usando gli strumenti standard OpenTimestamps contro la blockchain di Bitcoin, senza alcuna dipendenza dai server di Timestamp GIT.
Il timestamp è legalmente vincolante in tribunale?
Nessun timestamp può garantire un esito legale specifico. Tuttavia, i timestamp crittografici ancorati nella blockchain di Bitcoin sono sempre più riconosciuti come prova forte dell’esistenza in un momento nel tempo. Forniscono una registrazione a prova di manomissione e matematicamente verificabile che può essere presentata in procedimenti legali per supportare rivendicazioni di prior art o paternità. Dovresti consultare un consulente legale sull’ammissibilità nella tua giurisdizione.
Conclusione
Hai ora configurato il timestamping automatico a conoscenza zero per i tuoi commit Git con Timestamp GIT. Invece di mantenere fragili log interni o imparare manualmente un protocollo crittografico, hai installato una GitHub App una volta, collegato un repository e lasciato che i processi notturni ancorino gli hash dei commit in Bitcoin.
Il risultato è una prova immutabile di prior art, indipendente da qualsiasi fornitore, generata senza rivelare il codice sorgente. Inizia con il piano gratuito per i repository pubblici, o esplora l’opzione Docker self-hosted se hai bisogno di infrastruttura air-gapped.
Per approfondimenti, vedi i post correlati qui sotto.
Post correlati
- Proteggi la Tua Startup dai Troll dei Brevetti con il Timestamping Git
- Come le Dev Shop Possono Dimostrare la Consegna del Lavoro con Timestamp GIT
- Prova di Esistenza per il Codice: Cos’è e Perché È Importante