|
1 | 1 | <?php
|
2 | 2 |
|
3 |
| -require __DIR__ . '/src/MerkleRoot.php'; |
| 3 | +require __DIR__ . '/src/MerkleRootCalculator.php'; |
| 4 | + |
| 5 | +/** |
| 6 | + * Questa funzione carica un file e ne restituisce il contenuto in formato json |
| 7 | + * |
| 8 | + * @param string $filename |
| 9 | + * @return json |
| 10 | + */ |
| 11 | +function loadFile($filename){ |
| 12 | + // verifico l'esistenza del file |
| 13 | + if (file_exists($filename)) { |
| 14 | + $json = json_decode(file_get_contents($filename)); |
| 15 | + } else { |
| 16 | + echo "Il file {$filename} non esiste.\n"; |
| 17 | + die(); |
| 18 | + } |
| 19 | + |
| 20 | + // verifico se il file è un json |
| 21 | + if ((json_last_error() === JSON_ERROR_NONE) == false) { |
| 22 | + echo "Il file {$filename} contiene un errore e non viene riconosciuto.\n"; |
| 23 | + die(); |
| 24 | + } |
| 25 | + return $json; |
| 26 | +} |
4 | 27 |
|
5 |
| -// carica il json del Qldb |
6 |
| -$data_qldb = json_decode(file_get_contents('qldb.json')); |
| 28 | +/** |
| 29 | + * Inizio della verifica |
| 30 | + */ |
| 31 | +echo "Merkle Root Calculator\n\n"; |
7 | 32 |
|
8 |
| -// carica il json della Blockchain |
9 |
| -$data_blockchain = json_decode(file_get_contents('blockchain.json')); |
| 33 | +// carico il contenuto dei file json |
| 34 | +$qldb_data = loadFile('qldb.json'); |
| 35 | +$blockchain_data = loadFile('blockchain.json'); |
10 | 36 |
|
11 | 37 | // genero l'array di hash di qldb
|
12 |
| -foreach ($data_qldb as $data){ |
13 |
| - $qldb[] = $data->document_hash; |
14 |
| -} |
| 38 | +foreach ($qldb_data as $data) $qldb_hashes[] = $data->document_hash; |
15 | 39 |
|
16 |
| -// inizializzo la classe |
17 |
| -$merkle = new MerkleRoot(); |
| 40 | +// prendo solo l'elemento 0 del json della blockchain |
| 41 | +$blockchain_data = $blockchain_data[0]; |
18 | 42 |
|
19 |
| -// genero il Merkle root con i dati da qldb |
20 |
| -$root_qldb = $merkle->root($qldb); |
| 43 | +// inizializzo la classe e calcolo il Merkle root con gli hash ricavati dal qldb |
| 44 | +$merkle = new MerkleRootCalculator(); |
| 45 | +$qldb_root = $merkle->root($qldb_hashes); |
21 | 46 |
|
22 |
| -echo "Merkle Root Calculator\n\n"; |
23 |
| -echo "Hash Transazione: ". $data_blockchain->txHash ."\n"; |
24 |
| -echo "Merkle root da Blockchain: $data_blockchain->merkleRoot\n"; |
25 |
| -echo "Merkle root da QLDB: $root_qldb\n"; |
26 |
| -echo "Verifica Merkle root: " . ($merkle->verify($qldb, $data_blockchain->merkleRoot) ? 'SUCCESSO' : 'FALLITO') . "\n"; |
| 47 | +// stampo il risultato |
| 48 | +echo "Merkle root da Blockchain: $blockchain_data->merkleRoot\n"; |
| 49 | +echo "Merkle root da QLDB: $qldb_root\n"; |
| 50 | +echo "Verifica Merkle root: " . ($merkle->verify($qldb_hashes, $blockchain_data->merkleRoot) ? 'SUCCESSO' : 'FALLITO') . "\n"; |
27 | 51 |
|
0 commit comments