Come Dimostrare l’Arte Preesistente per il Software: Una Guida per Sviluppatori
Dimostrare l’arte preesistente per il software si riduce a una domanda precisa: puoi dimostrare che uno specifico commit Git esisteva in una data specifica, con la prova che nessun server interno, amministratore di repository o terza parte può alterare? Questa guida illustra esattamente come creare tale prova senza esporre il tuo codice sorgente.
Utilizzerai Timestamp GIT, un servizio gestito e GitHub App che ancora gli hash dei tuoi commit Git nella blockchain di Bitcoin tramite il protocollo OpenTimestamps. Il flusso di lavoro prevede l’installazione una tantum, commit normali e l’ancoraggio notturno automatizzato che produce file di ricevuta .ots immutabili.
Al termine di questa guida, avrai:
- Installato la GitHub App sui repository che desideri proteggere.
- Configurato dove vengono consegnate le prove crittografiche.
- Attivato e confermato un timestamp ancorato a Bitcoin per un commit reale.
- Verificato la prova tramite una dashboard pubblica e un badge.
- Risolto i problemi più comuni relativi a permessi e consegna.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account GitHub e almeno un repository che desideri proteggere.
- Familiarità di base con i commit Git e gli hash. Non è necessaria esperienza in crittografia o blockchain.
- Un account Timestamp GIT. I repository pubblici utilizzano il piano gratuito; i repository privati richiedono il piano Pro Agency a $49/mese o Enterprise ZK a $199/mese.
- Opzionale: Docker se prevedi di self-hostare Timestamp GIT in un ambiente air-gapped o aziendale.
Passo dopo Passo: Configurare Timestamp GIT
Il percorso gestito non richiede nulla sulle tue macchine di sviluppo. Installi la GitHub App una volta, selezioni i repository e ogni commit viene poi ancorato a Bitcoin automaticamente ogni notte.
Passo 1: Registrati e Collega GitHub
Vai su Timestamp GIT e accedi con il tuo account GitHub. Il flusso SaaS gestito è il percorso predefinito.
Se stai facendo self-hosting, inizia con il quick start Docker Compose:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
Quindi esegui:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
L’app self-hosted è disponibile su http://localhost:8080. Al primo avvio, una procedura guidata di configurazione ti accompagna nella connessione della tua GitHub App e nell’applicazione di un file di licenza.
Passo 2: Installa la Timestamp GIT GitHub App
Installa la GitHub App sui repository che desideri proteggere.
In modalità standard, Timestamp GIT necessita di accesso in sola lettura al repository sorgente. Questo non perché legga il tuo codice—legge solo l’hash del commit HEAD—ma perché il sistema di permessi di GitHub non espone un livello di accesso limitato al solo hash.
Se le prove vengono consegnate a un repository di destinazione separato, l’app necessita anche di accesso in lettura-scrittura a quel repository di destinazione.
Passo 3: Seleziona i Repository da Monitorare
Dalla dashboard di Timestamp GIT, apri la pagina Your Repositories e seleziona i repository che desideri monitorare.
Ogni repository selezionato viene aggiunto alla pipeline notturna di generazione delle prove. Timestamp GIT non ispeziona il contenuto dei file, il codice sorgente o il contenuto dei branch oltre agli hash dei commit necessari per l’ancoraggio.
Passo 4: Configura la Consegna delle Prove
Per ogni repository monitorato, scegli dove devono essere scritte le prove crittografiche:
- Un branch timestamp dedicato all’interno dello stesso repository.
- Un repository ombra separato, che può essere privato anche se il repository sorgente è pubblico.
Timestamp GIT scrive i file manifest e le ricevute .ots in quella posizione dopo che l’ancoraggio giornaliero è stato confermato.
Passo 5: Opzionale: Abilita la Modalità Enterprise ZK
Per i team che richiedono accesso zero al codice sorgente, la modalità Enterprise ZK è un modello di distribuzione più robusto.
Durante la configurazione, Timestamp GIT genera un workflow GitHub Action di 12 righe. Aggiungi quel file generato al tuo repository in:
.github/workflows/timestampgit.yml
L’action viene eseguita sulla tua infrastruttura, non sui sistemi di Timestamp GIT. Invia solo l’hash del commit all’API di Timestamp GIT. In questa modalità, Timestamp GIT non necessita di alcun accesso in lettura al repository sorgente—solo accesso in lettura-scrittura al repository di destinazione dove vengono consegnate le prove.
Passo 6: Effettua un Commit per Attivare il Processo
Una volta configurato il monitoraggio, esegui commit e push normalmente:
git add .
git commit -m "feat: add payment webhook handler"
git push origin main
In modalità standard, la GitHub App rileva automaticamente il nuovo hash del commit HEAD. In modalità Enterprise ZK, la GitHub Action invia l’hash dal tuo ambiente CI.
Passo 7: Attendi l’Ancoraggio Notturno a Bitcoin
Timestamp GIT raggruppa gli hash dei commit in sospeso in una coda in memoria. Ogni notte, un worker:
- Raggruppa gli hash in sospeso per repository.
- Crea i file manifest giornalieri.
- Costruisce un albero di Merkle dagli hash dei commit.
- Crea le prove OpenTimestamps utilizzando calendari OTS pubblici.
- Ancora la radice di Merkle nella blockchain di Bitcoin.
La conferma su Bitcoin richiede normalmente circa 3 ore. Dopo la conferma, il manifest e i file di ricevuta .ots vengono inviati al branch timestamp o al repository ombra configurato.
Come Confermare che Ha Funzionato
Una volta completata l’esecuzione notturna, puoi verificare la prova in diversi modi.
1. Ispeziona il Branch Timestamp
Recupera il branch timestamp e conferma che i file manifest e le ricevute .ots siano presenti:
git fetch origin timestamps
git ls-tree -r --name-only origin/timestamps | head
Il nome esatto del branch dipende dalla tua configurazione, ma il segnale importante è la presenza di file .ots abbinati ai dati manifest giornalieri.
2. Usa la Pagina di Verifica Pubblica
Timestamp GIT fornisce una pagina di verifica basata su browser in cui tutto il calcolo della catena di Merkle avviene localmente nel tuo browser:
https://timestampgit.dev/verification/{user}/{repo}/{date}
Sostituisci {user}, {repo} e {date} con il tuo repository e la data che desideri verificare.
3. Controlla l’API di Stato
Puoi confermare l’ultimo blocco Bitcoin ancorato tramite l’endpoint di stato pubblico:
curl https://timestampgit.dev/api/statusLast/acme/widget-api
La risposta include le informazioni sull’ultimo blocco Bitcoin ancorato per il repository.
4. Scarica un Certificato PDF
Per un giorno specifico, scarica un certificato PDF da:
https://timestampgit.dev/api/report/{user}/{repo}/{date}
Il registro di audit per il repository è disponibile anche come CSV:
https://timestampgit.dev/api/audit/{user}/{repo}
5. Incorpora un Badge di Verifica
La dashboard di Timestamp GIT fornisce URL dei badge e snippet Markdown pronti da copiare e incollare per il tuo README. I repository privati aggiungono un HMAC crittografato agli URL dei badge in modo che solo gli spettatori autorizzati possano vedere le informazioni di stato.
Il badge rimanda a una pagina di verifica pubblica dove chiunque può ispezionare la prova. Il file .ots stesso rimane una ricevuta OpenTimestamps standard, quindi i revisori tecnici possono anche scaricarlo e verificarlo indipendentemente contro la blockchain di Bitcoin utilizzando gli strumenti OpenTimestamps standard.
Risoluzione dei Problemi Comuni
Nessuna prova dopo 24 ore
Controlla i permessi della GitHub App. La modalità standard necessita almeno dell’accesso in sola lettura al repository sorgente. Conferma inoltre che il repository sia ancora selezionato nella dashboard di Timestamp GIT.
Lo stato del repository privato non è visibile
I repository privati utilizzano URL firmati con HMAC. Assicurati che il badge o il link di stato provenga dalla dashboard di Timestamp GIT e includa il parametro HMAC. L’HMAC è specifico per l’istanza del server che lo ha generato.
L’action Enterprise ZK non consegna le prove
Verifica che il file di workflow generato sia presente in .github/workflows/timestampgit.yml e che la GitHub Action sia installata nel repository. Il repository di destinazione dove vengono consegnate le prove deve avere accesso in lettura-scrittura dalla configurazione della tua action.
L’istanza Docker self-hosted non produce timestamp
Conferma che il file di licenza sia stato caricato durante la procedura guidata di configurazione. Controlla inoltre che l’istanza disponga della connettività di rete necessaria per l’OAuth della GitHub App e l’ancoraggio dei timestamp.
La verifica della prova fallisce
Assicurati di verificare il file .ots e la data corretti. Una ricevuta per un repository e una data non convaliderà un commit di un giorno o repository diverso.
FAQ
D: Cos’è l’arte preesistente nel software?
R: L’arte preesistente è la prova che la tua invenzione, come codice, un algoritmo o un design, esisteva prima di una certa data. Viene tipicamente utilizzata per invalidare rivendicazioni di brevetto o dimostrare la paternità.
D: Come fa l’ancoraggio a Bitcoin a dimostrare l’arte preesistente?
R: L’hash del tuo commit Git viene incorporato in una transazione Bitcoin tramite il protocollo OpenTimestamps. Una volta confermato in un blocco, il timestamp è immutabile e verificabile da chiunque, dimostrando che l’hash esisteva in quel momento.
D: Timestamp GIT è gratuito per i progetti open source?
R: Sì. Timestamp GIT offre un piano gratuito per i repository pubblici. I repository privati richiedono un piano a pagamento, Pro Agency o Enterprise ZK.
D: Posso usare Timestamp GIT senza esporre il mio codice sorgente?
R: Sì. In modalità standard, vengono letti solo gli hash dei commit—non il codice sorgente. In modalità Enterprise ZK, una GitHub Action invia solo gli hash dalla tua infrastruttura, quindi il codice sorgente non lascia mai il tuo ambiente.
D: Quanto tempo ci vuole per la conferma di un timestamp?
R: Il worker notturno raggruppa e ancora gli hash dopo la mezzanotte. La conferma su Bitcoin richiede normalmente circa 3 ore dopo la transazione di ancoraggio, quindi aspettati che i file di prova .ots appaiano poco dopo.
Conclusione
La sola cronologia Git non è una prova robusta di arte preesistente perché può essere modificata, eliminata o respinta come autoreferenziale. Una ricevuta OpenTimestamps ancorata a Bitcoin è matematicamente più difficile da ignorare.
Timestamp GIT rende tutto questo pratico per gli sviluppatori che lavorano: installa la GitHub App una volta, seleziona un repository e continua a fare commit come al solito. L’ancoraggio notturno, la consegna delle prove, i badge, i certificati PDF e i CSV di audit vengono gestiti automaticamente. Non devi mai eseguire comandi OpenTimestamps né interagire manualmente con la blockchain di Bitcoin.
Inizia gratuitamente con i repository pubblici su Timestamp GIT.
Articoli correlati
- Come Proteggere il Tuo Software dai Patent Troll
- Salta la CLI: Un Modo Migliore per Timestampare i Commit Git
- Timestamping Git Self-Hosted con Docker: Una Guida