Skip to content

Commit

Permalink
update: fornite maggiori informazioni
Browse files Browse the repository at this point in the history
  • Loading branch information
jambtc committed May 12, 2023
1 parent 97ed6e7 commit 1d337ca
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 28 deletions.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Il presente software effettua il Merkle Root di una serie di hash e ne confronta

In particolare permette di confrontare il contenuto presente su QLDB con quello presente su blockchain.

Seguendo questa guida è possibile eseguire in autonomia il predetto controllo.
Seguendo questa guida è possibile eseguire in autonomia il predetto controllo.


## Prerequisiti
Expand All @@ -16,9 +16,9 @@ Seguendo questa guida è possibile eseguire in autonomia il predetto controllo.

## Guida

- Clona questo software oppure scaricalo da questo <a href="https://github.com/jambtc/merkle-root-php/releases/tag/v1.0">link</a> in una cartella sul tuo pc.
- Copia i file json sia del Qldb che della Blockchain sotto questa stessa cartella.
- Apri la finestra shell o prompt e digita i seguenti comandi:
- Clona questo software oppure scaricalo da questo <a href="https://github.com/jambtc/merkle-root-php/releases/tag/v1.1">link</a> in una cartella sul tuo pc.
- Copia i file json sia del Qldb che della Blockchain sotto questa stessa cartella. Nel file `blockchain.json` lascia soltanto il merkle root che vuoi verificare. Nel file `qldb.json` lascia soltanto gli hash relativi al periodo che vuoi verificare. Ricordati di eliminare l'ultima virgola per evitare errori di formattazione del formato json.
- Apri una finestra shell o prompt e digita i seguenti comandi:

```bash
cd <nomecartella>
Expand All @@ -30,7 +30,6 @@ Dovresti ottenere una risposta di questo tipo:
```bash
Merkle Root Calculator

Hash Transazione: 0x4de4beaf81e16c53537f1369180ab77a803b4251d8a29a6ee937b5f72af8a0c9
Merkle root da Blockchain: 36d12cb8e28699290b0cef1ea5a1fadfd2c6bc4afad02633330e86b197b61884
Merkle root da QLDB: 36d12cb8e28699290b0cef1ea5a1fadfd2c6bc4afad02633330e86b197b61884
Verifica Merkle root: SUCCESSO
Expand Down
12 changes: 7 additions & 5 deletions blockchain.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"merkleRoot": "36d12cb8e28699290b0cef1ea5a1fadfd2c6bc4afad02633330e86b197b61884",
"txHash": "0x4de4beaf81e16c53537f1369180ab77a803b4251d8a29a6ee937b5f72af8a0c9",
"timestamp": 1683380719
}
[
{
"merkleRoot": "36d12cb8e28699290b0cef1ea5a1fadfd2c6bc4afad02633330e86b197b61884",
"txHash": "0x4de4beaf81e16c53537f1369180ab77a803b4251d8a29a6ee937b5f72af8a0c9",
"timestamp": 1683380719
}
]
58 changes: 41 additions & 17 deletions index.php
Original file line number Diff line number Diff line change
@@ -1,27 +1,51 @@
<?php

require __DIR__ . '/src/MerkleRoot.php';
require __DIR__ . '/src/MerkleRootCalculator.php';

/**
* Questa funzione carica un file e ne restituisce il contenuto in formato json
*
* @param string $filename
* @return json
*/
function loadFile($filename){
// verifico l'esistenza del file
if (file_exists($filename)) {
$json = json_decode(file_get_contents($filename));
} else {
echo "Il file {$filename} non esiste.\n";
die();
}

// verifico se il file è un json
if ((json_last_error() === JSON_ERROR_NONE) == false) {
echo "Il file {$filename} contiene un errore e non viene riconosciuto.\n";
die();
}
return $json;
}

// carica il json del Qldb
$data_qldb = json_decode(file_get_contents('qldb.json'));
/**
* Inizio della verifica
*/
echo "Merkle Root Calculator\n\n";

// carica il json della Blockchain
$data_blockchain = json_decode(file_get_contents('blockchain.json'));
// carico il contenuto dei file json
$qldb_data = loadFile('qldb.json');
$blockchain_data = loadFile('blockchain.json');

// genero l'array di hash di qldb
foreach ($data_qldb as $data){
$qldb[] = $data->document_hash;
}
foreach ($qldb_data as $data) $qldb_hashes[] = $data->document_hash;

// inizializzo la classe
$merkle = new MerkleRoot();
// prendo solo l'elemento 0 del json della blockchain
$blockchain_data = $blockchain_data[0];

// genero il Merkle root con i dati da qldb
$root_qldb = $merkle->root($qldb);
// inizializzo la classe e calcolo il Merkle root con gli hash ricavati dal qldb
$merkle = new MerkleRootCalculator();
$qldb_root = $merkle->root($qldb_hashes);

echo "Merkle Root Calculator\n\n";
echo "Hash Transazione: ". $data_blockchain->txHash ."\n";
echo "Merkle root da Blockchain: $data_blockchain->merkleRoot\n";
echo "Merkle root da QLDB: $root_qldb\n";
echo "Verifica Merkle root: " . ($merkle->verify($qldb, $data_blockchain->merkleRoot) ? 'SUCCESSO' : 'FALLITO') . "\n";
// stampo il risultato
echo "Merkle root da Blockchain: $blockchain_data->merkleRoot\n";
echo "Merkle root da QLDB: $qldb_root\n";
echo "Verifica Merkle root: " . ($merkle->verify($qldb_hashes, $blockchain_data->merkleRoot) ? 'SUCCESSO' : 'FALLITO') . "\n";

2 changes: 1 addition & 1 deletion src/MerkleRoot.php → src/MerkleRootCalculator.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Date: 03.05.2023
*/

class MerkleRoot
class MerkleRootCalculator
{
/**
* Calcola il Merkle Root
Expand Down

0 comments on commit 1d337ca

Please sign in to comment.