# Frise chronologique : briques fondatrices et leur heritage
timeline = [
(1976, "Diffie-Hellman", "Echange de cles", ["Signature"], "CRYPTO"),
(1977, "RSA", "Chiffrement asymetrique", ["Signature"], "CRYPTO"),
(1979, "Merkle", "Arbre de Merkle", ["Bitcoin SPV", "Git", "BitTorrent"], "STRUCTURE"),
(1985, "Chaum", "eCash (monnaie anonyme)", ["Zcash", "Monero"], "MONNAIE"),
(1991, "PGP", "Crypto grand public", ["GPG", "Signal"], "CRYPTO"),
(1991, "Haber-Stornetta", "Horodatage par hash chain", ["Bitcoin blockchain"], "STRUCTURE"),
(1997, "Hashcash", "Proof-of-Work", ["Bitcoin mining"], "CONSENSUS"),
(1998, "b-money", "Monnaie decentralisee", ["Bitcoin"], "MONNAIE"),
(2001, "BitTorrent", "DHT Kademlia, P2P massif", ["Ethereum P2P"], "RESEAU"),
(2002, "Kademlia", "DHT avec distance XOR", ["Ethereum devp2p"], "RESEAU"),
(2008, "Bitcoin", "Synthese de tout", ["Ethereum", "1000+ altcoins"], "BLOCKCHAIN"),
(2013, "Ethereum", "Smart Contracts (Turing)", ["DeFi", "NFT", "DAO"], "BLOCKCHAIN"),
(2015, "Ethereum mainnet", "Lancement production", ["ERC-20", "ERC-721", "DeFi 2020"], "BLOCKCHAIN"),
]
print("FRISE CHRONOLOGIQUE : CYPHERPUNKS -> SMART CONTRACTS")
print("=" * 70)
for year, name, description, heritage, cat in timeline:
marker = {"CRYPTO": "[C]", "STRUCTURE": "[S]", "MONNAIE": "[M]",
"CONSENSUS": "[W]", "RESEAU": "[R]", "BLOCKCHAIN": "[B]"}[cat]
print(f" {year} {marker} {name:20s} | {description}")
if heritage:
print(f" {'':20s} -> {', '.join(heritage)}")
print()
print("Legende : [C]=Crypto [S]=Structure [M]=Monnaie [W]=Consensus [R]=Reseau [B]=Blockchain")