Verifica Blockchain Indipendente
Ogni documento certificato da ReSource e ancorato on-chain su Polygon tramite Merkle batching. La prova appartiene al cliente, non alla piattaforma: puoi verificare senza passare da noi.
Come funziona la prova
I documenti vengono raggruppati in batch. Per ogni batch viene calcolato un Merkle tree: una struttura crittografica che produce una singola root ancorata on-chain sul contratto ReSourceBatchRegistry.
Per dimostrare che un documento e incluso nel batch servono: l'hash del documento (la foglia), il proof (i nodi fratelli lungo il percorso), e la root registrata on-chain. Con questi dati chiunque puo verificare in modo autonomo, anche se ReSource domani non esistesse piu.
Formato del pacchetto di prova
Il file JSON scaricabile contiene tutto il necessario per la verifica autonoma.
{
"documentHash": "0x...", // hash del documento (foglia)
"merkleProof": ["0x..."], // nodi fratelli
"leafIndex": 42, // posizione nel batch
"batchNumber": 17, // numero del batch
"merkleRoot": "0x...", // root ancorata on-chain
"contractAddress": "0x...", // contratto Polygon
"chainId": 137, // rete Polygon
"txHash": "0x...", // transazione di ancoraggio
"algorithm": "keccak256-domain-separated-v2"
}Verifica on-chain
Esegui uno di questi script su un nodo Polygon pubblico per verificare la prova on-chain, senza passare dalla piattaforma ReSource.
Installa ethers con npm install ethers, salva lo script come verify.mjs ed esegui node verify.mjs.
import { ethers } from "ethers";
// 1. Carica il pacchetto di prova (file JSON scaricato da ReSource)
const proof = await import("./proof.json");
// 2. Connettiti a un nodo Polygon pubblico
const provider = new ethers.JsonRpcProvider("https://polygon-bor-rpc.publicnode.com");
// 3. Crea l'istanza del contratto ReSourceBatchRegistry
const abi = [{
inputs: [
{ name: "batchNumber", type: "uint256" },
{ name: "leaf", type: "bytes32" },
{ name: "proof", type: "bytes32[]" }
],
name: "verifyInclusion",
outputs: [{ type: "bool" }],
stateMutability: "view",
type: "function"
}];
const contract = new ethers.Contract(proof.contractAddress, abi, provider);
// 4. Verifica on-chain
const valid = await contract.verifyInclusion(
proof.batchNumber,
proof.documentHash,
proof.merkleProof
);
console.log(valid ? "Documento verificato on-chain" : "Verifica fallita");Verifica locale nel browser
Incolla qui il contenuto del file JSON scaricato. La verifica crittografica avviene interamente nel tuo browser, senza contattare la piattaforma.
Informazioni contratto
Il contratto ReSourceBatchRegistry e pubblico e verificabile su Polygonscan.