Chain Integrate

Guida • Verifica Certificato (Admin)

passo-passo • login • lista • on-chain • hash • pdf
Manuale operativo

Scopo della pagina “Verifica Certificato (Admin)”

La pagina Admin serve a leggere i dati di un certificato on-chain (LSP8) e verificare i campi umani confrontando gli hash registrati nel contratto con gli hash calcolati lato server (pepperati). In più puoi confrontare l’hash del PDF locale con documentHash.

Cosa ottieni
  • Snapshot on-chain: owner, status, outcome, date, documentHash, documentURI
  • Freeze metadata (REV2) via tokenMetadataFrozen(tokenId)
  • Eventuale token sostitutivo (probe di più signature)
  • Verifica OK/NO per i campi compilati
Prerequisiti
  • Contract address corretto (REV2 consigliato)
  • Wallet disponibile (UP Extension / EIP-1193)
  • Login admin (cookie sessione) per usare lista e funzioni protette

1) Config iniziale

Controlla che i parametri siano corretti prima di iniziare.

1.1 Contract / ChainId / RPC

Tip: quando “non torna nulla”
- Contract errato (es. Rev1 vs Rev2)
- ChainId sbagliato
- RPC non raggiungibile
- tokenId non bytes32 (0x + 64 hex)

2) Wallet + Login Admin (consigliato)

Nella tua implementazione, diverse azioni richiedono sessione admin via cookie. Quindi il flusso tipico è: Connetti wallet → Firma e Login.

2.1 Connetti wallet

2.2 Firma e Login

Come capisco che sono davvero loggata?
- Pill “Loggata: 0x1234…abcd”
- Bottone “Carica lista” visibile
- Al refresh, la sessione può ripristinarsi automaticamente (API_STATUS)

3) Lista certificati (solo admin)

La lista viene caricata da un endpoint proxy protetto (es. cert_summary.php). Se la lista è disponibile, puoi selezionare il certificato da un menu a tendina.

3.1 Carica lista

Se la lista è vuota
- Indice certificati non popolato
- Endpoint proxy non sta leggendo il JSON atteso
- Sessione non valida (401/403)

4) Identificare il certificato

Puoi identificare un certificato in due modi: con il numero umano oppure incollando direttamente il tokenId bytes32.

Metodo A • Numero certificato (umano)
  • Seleziona o digita: es. CI-2026-00017
  • Clicca Calcola tokenId (usa endpoint hash pubblico)
  • Il campo tokenId si compila
Metodo B • tokenId (bytes32)
  • Incolla direttamente: 0x + 64 caratteri esadecimali
  • Salta “Calcola tokenId”
  • Vai subito su Leggi on-chain

5) Leggi on-chain (snapshot)

Leggi on-chain esegue: controllo esistenza token → lettura getCertificateData → stato freeze metadata (se disponibile) → ricerca eventuale sostitutivo → abilita “Apri PDF” se c’è un URI valido.

5.1 Cosa vedi nella tabella “Dati on-chain”

5.2 Sostitutivo collegato

Errore “token inesistente / non mintato”
Succede quando tokenOwnerOf(tokenId) revert:
- tokenId sbagliato
- tokenId calcolato con pepper/algoritmo diverso da quello usato al mint
- stai leggendo dal contratto sbagliato (Rev1 vs Rev2)

6) PDF: calcolo hash locale e confronto

Questo step è opzionale ma consigliato: carichi il PDF e calcoli SHA-256. In verifica, l’hash calcolato viene confrontato con documentHash letto on-chain.

  1. Seleziona un file PDF.
  2. Clicca Calcola hash PDF.
  3. Il campo “Hash PDF” si riempie con 0x....
Quando “Apri PDF” compare?
Compare dopo la lettura on-chain se documentURI:
- è un ipfs://... oppure /ipfs/... oppure URL http(s)
- e sembra puntare a un PDF (o IPFS generico che puoi aprire)

7) Verifica (OK/NO) — confronto hash pepperati

Qui succede la parte “seria”: la pagina manda i campi umani a un endpoint che calcola gli hash pepperati server-side, e li confronta con gli hash salvati nel contratto.

7.1 Regola semplice

7.2 Sequenza consigliata (per evitare falsi “NO”)

  1. Fai Leggi on-chain.
  2. Carica PDF e calcola hash (opzionale ma utile).
  3. Compila solo 2–3 campi umani che sei sicuro siano identici al dato “ufficiale”.
  4. Clicca Verifica (OK/NO).
  5. Se OK, aggiungi altri campi e ripeti.
Perché posso ottenere “NO” anche se “visivamente è uguale”?
- spazi extra (inizio/fine)
- maiuscole/minuscole se non normalizzi lato server
- formattazione P.IVA (IT... vs senza IT)
- differenze su accenti / caratteri speciali
- anno come "2019" vs "2019 " (spazio)

8) Clear, Logout e debug

8.1 Clear

8.2 Logout

8.3 Dettagli tecnici (hash)

Mini checklist rapida (quando sei di fretta)