Spaces:
Configuration error
Configuration error
| import hashlib | |
| import json | |
| import time | |
| from typing import List, Dict, Any | |
| class Ledger: | |
| """Cadeia de registros imutável (Append-only Hash-chain)""" | |
| def __init__(self): | |
| self.chain: List[Dict[str, Any]] = [] | |
| self._initialize_genesis() | |
| def _initialize_genesis(self): | |
| genesis_entry = { | |
| "index": 0, | |
| "timestamp": time.time(), | |
| "data": "Genesis Block - MatVerse Truth Engine", | |
| "previous_hash": "0" * 64 | |
| } | |
| genesis_entry["hash"] = self._calculate_hash(genesis_entry) | |
| self.chain.append(genesis_entry) | |
| def _calculate_hash(self, entry: Dict[str, Any]) -> str: | |
| content = f"{entry['index']}{entry['timestamp']}{json.dumps(entry['data'])}{entry['previous_hash']}" | |
| return hashlib.sha256(content.encode()).hexdigest() | |
| def append(self, data: Any) -> str: | |
| previous_entry = self.chain[-1] | |
| new_entry = { | |
| "index": len(self.chain), | |
| "timestamp": time.time(), | |
| "data": data, | |
| "previous_hash": previous_entry["hash"] | |
| } | |
| new_entry["hash"] = self._calculate_hash(new_entry) | |
| self.chain.append(new_entry) | |
| return new_entry["hash"] | |
| def verify(self) -> bool: | |
| for i in range(1, len(self.chain)): | |
| current = self.chain[i] | |
| previous = self.chain[i-1] | |
| if current["previous_hash"] != previous["hash"]: | |
| return False | |
| if current["hash"] != self._calculate_hash(current): | |
| return False | |
| return True | |
| def get_last_hash(self) -> str: | |
| return self.chain[-1]["hash"] | |