<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blockchain | Zouhair EL Hadiq</title><link>https://elhadiq.github.io/tags/blockchain/</link><atom:link href="https://elhadiq.github.io/tags/blockchain/index.xml" rel="self" type="application/rss+xml"/><description>Blockchain</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 31 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://elhadiq.github.io/media/icon_hu_982c5d63a71b2961.png</url><title>Blockchain</title><link>https://elhadiq.github.io/tags/blockchain/</link></image><item><title>⛓️ CNC 2026 — Proposition d'épreuve : Ethereum, arbres de Merkle, programmation dynamique &amp; DeFi</title><link>https://elhadiq.github.io/blog/cnc-2026-ethereum-merkle-defi/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://elhadiq.github.io/blog/cnc-2026-ethereum-merkle-defi/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Avertissement.&lt;/strong&gt; Il s&amp;rsquo;agit d&amp;rsquo;une &lt;strong&gt;proposition personnelle&lt;/strong&gt;, à but pédagogique — &lt;strong&gt;pas une épreuve officielle&lt;/strong&gt; du Concours National Commun (CNC) ni de l&amp;rsquo;Agrégation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Proposition complète d&amp;rsquo;épreuve d&amp;rsquo;informatique dans l&amp;rsquo;esprit du &lt;strong&gt;Concours National Commun (CNC) 2026&lt;/strong&gt;, structurée en quatre problèmes indépendants, avec son corrigé détaillé. Sujet et corrigé rédigés en LaTeX avec l&amp;rsquo;aide de L&amp;rsquo;AI.&lt;/p&gt;
&lt;h2 id="télécharger"&gt;Télécharger&lt;/h2&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-ccf76a16b26bbbf8a60894c88fea4846"
href="CNC2026_enonce.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Énoncé complet (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Énoncé complet (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;h3 id="problèmes-séparés"&gt;Problèmes séparés&lt;/h3&gt;
&lt;p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-f8f5403c6132a2e6deff42cf297bebbd"
href="A_ethereum_algorithmes.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-transparent text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 active:bg-primary-100 dark:active:bg-primary-950 hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-3 py-1.5 text-sm rounded-lg"
role="button"
aria-label="I — Algorithmique Ethereum"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;I — Algorithmique Ethereum&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-ffebea4d3920486c78754accd27c2cf5"
href="B_arbres_de_merkle.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-transparent text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 active:bg-primary-100 dark:active:bg-primary-950 hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-3 py-1.5 text-sm rounded-lg"
role="button"
aria-label="II — Arbres de Merkle"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;II — Arbres de Merkle&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-a0fff5007433e460c7eb3c6c54476253"
href="C_partition_prog_dynamique.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-transparent text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 active:bg-primary-100 dark:active:bg-primary-950 hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-3 py-1.5 text-sm rounded-lg"
role="button"
aria-label="III — Partition &amp;amp; prog. dynamique"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;III — Partition &amp;amp; prog. dynamique&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-30f2b72a449fa34f2a2128046cad8109"
href="D_defi_amm.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-transparent text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 active:bg-primary-100 dark:active:bg-primary-950 hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-3 py-1.5 text-sm rounded-lg"
role="button"
aria-label="IV — DeFi &amp;amp; AMM"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;IV — DeFi &amp;amp; AMM&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id="problème-i--algorithmique-de-la-blockchain-ethereum"&gt;Problème I — Algorithmique de la blockchain Ethereum&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Partie I — Unités et compteur de gaz&lt;/li&gt;
&lt;li&gt;Partie II — Encodage hexadécimal des adresses&lt;/li&gt;
&lt;li&gt;Partie III — Arbres de Merkle&lt;/li&gt;
&lt;li&gt;Partie IV — Sélection aléatoire d&amp;rsquo;un validateur&lt;/li&gt;
&lt;li&gt;Partie V — Partition équilibrée par programmation dynamique&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="problème-ii--arbres-de-merkle-et-preuves-dinclusion"&gt;Problème II — Arbres de Merkle et preuves d&amp;rsquo;inclusion&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Partie I — La fonction de combinaison&lt;/li&gt;
&lt;li&gt;Partie II — Construction de la racine&lt;/li&gt;
&lt;li&gt;Partie III — Preuves d&amp;rsquo;inclusion&lt;/li&gt;
&lt;li&gt;Partie IV — Hauteur et mise à jour&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="problème-iii--le-problème-de-partition-et-la-programmation-dynamique"&gt;Problème III — Le problème de partition et la programmation dynamique&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Partie I — Recherche exhaustive&lt;/li&gt;
&lt;li&gt;Partie II — Le problème de décision Subset-Sum&lt;/li&gt;
&lt;li&gt;Partie III — Récurrence et table de programmation dynamique&lt;/li&gt;
&lt;li&gt;Partie IV — Version optimisée en espace&lt;/li&gt;
&lt;li&gt;Partie V — Reconstruction et correction&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="problème-iv--finance-décentralisée--teneurs-de-marché-automatisés-amm"&gt;Problème IV — Finance décentralisée : teneurs de marché automatisés (AMM)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Partie I — Prix et produit constant&lt;/li&gt;
&lt;li&gt;Partie II — Bornes et monotonie (anti-drainage)&lt;/li&gt;
&lt;li&gt;Partie III — Frais cumulés et série géométrique&lt;/li&gt;
&lt;li&gt;Partie IV — Prêt sur-collatéralisé et intérêts composés&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="illustrations"&gt;Illustrations&lt;/h2&gt;
&lt;figure&gt;&lt;img src="https://elhadiq.github.io/blog/cnc-2026-ethereum-merkle-defi/figs/g1_preuve.png"
alt="Preuve d&amp;rsquo;inclusion dans un arbre de Merkle"&gt;&lt;figcaption&gt;
&lt;p&gt;Preuve d&amp;rsquo;inclusion dans un arbre de Merkle&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="https://elhadiq.github.io/blog/cnc-2026-ethereum-merkle-defi/figs/g3_minage.png"
alt="Sélection aléatoire d&amp;rsquo;un validateur / minage"&gt;&lt;figcaption&gt;
&lt;p&gt;Sélection aléatoire d&amp;rsquo;un validateur / minage&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>📜 Agrégation — Texte de modélisation informatique : arbres de Merkle &amp; Bitcoin</title><link>https://elhadiq.github.io/blog/agregation-info-merkle-bitcoin/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://elhadiq.github.io/blog/agregation-info-merkle-bitcoin/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Avertissement.&lt;/strong&gt; Il s&amp;rsquo;agit d&amp;rsquo;une &lt;strong&gt;proposition personnelle&lt;/strong&gt;, à but pédagogique — &lt;strong&gt;pas une épreuve officielle&lt;/strong&gt; du Concours National Commun (CNC) ni de l&amp;rsquo;Agrégation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Proposition de &lt;strong&gt;texte de modélisation informatique&lt;/strong&gt; pour l&amp;rsquo;écrit d&amp;rsquo;&lt;strong&gt;agrégation&lt;/strong&gt;, construite autour des blocs et transactions de Bitcoin, des arbres de Merkle et de la preuve de travail. Texte et variantes de modélisation rédigés en LaTeX avec l&amp;rsquo;aide de AI.&lt;/p&gt;
&lt;h2 id="télécharger"&gt;Télécharger&lt;/h2&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-e9834d4256dc499a14843e6279ac1f6b"
href="Agreg_info_merkle_bitcoin.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Texte d&amp;rsquo;agrégation (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Texte d&amp;rsquo;agrégation (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-fd219ce548f4215eb347e8d85ce04046"
href="Modelisation_info_merkle_bitcoin.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-white dark:bg-zinc-900 border-2 border-primary-500 text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 hover:border-primary-600 active:bg-primary-100 dark:active:bg-primary-950 shadow-md hover:shadow-lg hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Modélisation — Merkle/Bitcoin (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Modélisation — Merkle/Bitcoin (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-28031276775cfb371554d08d8220112f"
href="Modelisation_arbres_de_merkle.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-white dark:bg-zinc-900 border-2 border-primary-500 text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 hover:border-primary-600 active:bg-primary-100 dark:active:bg-primary-950 shadow-md hover:shadow-lg hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Modélisation — Arbres de Merkle (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Modélisation — Arbres de Merkle (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-c8395e0c3a65ac2dd899285afbb59efa"
href="Modelisation_optionB_AMM.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-white dark:bg-zinc-900 border-2 border-primary-500 text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 hover:border-primary-600 active:bg-primary-100 dark:active:bg-primary-950 shadow-md hover:shadow-lg hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Modélisation — Option B, AMM (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Modélisation — Option B, AMM (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id="plan-du-texte"&gt;Plan du texte&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cadre : blocs, transactions et en-tête&lt;/li&gt;
&lt;li&gt;Fonction de hachage : propriétés et collisions&lt;/li&gt;
&lt;li&gt;Racine de Merkle d&amp;rsquo;un bloc&lt;/li&gt;
&lt;li&gt;Preuves de Merkle et vérification simplifiée (SPV)&lt;/li&gt;
&lt;li&gt;Preuve de travail (minage)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deux variantes de modélisation sont proposées en complément : l&amp;rsquo;une centrée sur les &lt;strong&gt;arbres de Merkle&lt;/strong&gt;, l&amp;rsquo;autre sur une &lt;strong&gt;option B autour des AMM&lt;/strong&gt; (teneurs de marché automatisés).&lt;/p&gt;
&lt;h2 id="illustrations"&gt;Illustrations&lt;/h2&gt;
&lt;figure&gt;&lt;img src="https://elhadiq.github.io/blog/agregation-info-merkle-bitcoin/figs/f3_il.png"
alt="Illustration liée au texte de modélisation"&gt;&lt;figcaption&gt;
&lt;p&gt;Illustration liée au texte de modélisation&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>🥩 Casper (Proof of Stake) — Proposition d'épreuve et corrigé</title><link>https://elhadiq.github.io/blog/casper-proof-of-stake/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://elhadiq.github.io/blog/casper-proof-of-stake/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Avertissement.&lt;/strong&gt; Il s&amp;rsquo;agit d&amp;rsquo;une &lt;strong&gt;proposition personnelle&lt;/strong&gt;, à but pédagogique — &lt;strong&gt;pas une épreuve officielle&lt;/strong&gt; du Concours National Commun (CNC) ni de l&amp;rsquo;Agrégation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Proposition d&amp;rsquo;épreuve d&amp;rsquo;informatique portant sur &lt;strong&gt;Casper&lt;/strong&gt;, le protocole de finalité en &lt;strong&gt;Proof of Stake&lt;/strong&gt; d&amp;rsquo;Ethereum, avec son corrigé détaillé. Sujet et corrigé rédigés en LaTeX avec l&amp;rsquo;aide de l&amp;rsquo;AI&lt;/p&gt;
&lt;h2 id="télécharger"&gt;Télécharger&lt;/h2&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-f083e508fc96e32b7d1ef47844fcec33"
href="casper_enonce.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Énoncé (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Énoncé (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id="contenu-de-lépreuve"&gt;Contenu de l&amp;rsquo;épreuve&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Présentation générale&lt;/strong&gt; — notations et conventions&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Partie I&lt;/strong&gt; — Points de contrôle, dépôts et fuite d&amp;rsquo;inactivité&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hauteurs&lt;/li&gt;
&lt;li&gt;Dépôts et supermajorités&lt;/li&gt;
&lt;li&gt;La fuite d&amp;rsquo;inactivité&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Partie II&lt;/strong&gt; — Arbre de points de contrôle et sérialisation des votes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ancêtres, conflits, plus proche ancêtre commun&lt;/li&gt;
&lt;li&gt;Sérialisation à longueur variable des hauteurs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Partie III&lt;/strong&gt; — Justification et finalisation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La règle de choix de fourche&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Partie IV&lt;/strong&gt; — Détection des infractions et sûreté responsable&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Détection algorithmique&lt;/li&gt;
&lt;li&gt;Sûreté responsable&lt;/li&gt;
&lt;li&gt;Recherche probabiliste d&amp;rsquo;un validateur fautif&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Partie V&lt;/strong&gt; — Coût minimal d&amp;rsquo;une attaque (programmation dynamique)&lt;/p&gt;</description></item><item><title>🧩 Agrégation — Épreuve orale de modélisation : Finalité et responsabilité dans un consensus réparti (Casper)</title><link>https://elhadiq.github.io/blog/casper-modelisation-agregation/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://elhadiq.github.io/blog/casper-modelisation-agregation/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Avertissement.&lt;/strong&gt; Il s&amp;rsquo;agit d&amp;rsquo;une &lt;strong&gt;proposition personnelle&lt;/strong&gt;, à but pédagogique — &lt;strong&gt;pas une épreuve officielle&lt;/strong&gt; du Concours National Commun (CNC) ni de l&amp;rsquo;Agrégation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="télécharger"&gt;Télécharger&lt;/h2&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-96b21513af38deb52806273e6853a2b4"
href="casper_modelisation.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Texte de modélisation (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Texte de modélisation (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Texte de modélisation pour l&amp;rsquo;&lt;strong&gt;épreuve orale d&amp;rsquo;informatique de l&amp;rsquo;agrégation&lt;/strong&gt; (option informatique), rédigé d&amp;rsquo;après V. Buterin et V. Griffith, &lt;em&gt;Casper the Friendly Finality Gadget&lt;/em&gt;, Ethereum Foundation, arXiv:1710.09437v4, 2019. Le texte formalise le protocole &lt;strong&gt;Casper&lt;/strong&gt;, mécanisme de finalité en Proof of Stake d&amp;rsquo;Ethereum, et propose dix suggestions de développement indépendantes pour la discussion du candidat.&lt;/p&gt;
&lt;h2 id="plan-du-texte"&gt;Plan du texte&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Le problème&lt;/strong&gt; — du consensus probabiliste (preuve de travail) à la finalité déterministe et imputable&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Le modèle&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arbre de blocs et points de contrôle&lt;/li&gt;
&lt;li&gt;Validateurs, dépôts et votes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Sûreté responsable et vivacité&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les deux conditions de sanction&lt;/li&gt;
&lt;li&gt;Le lemme d&amp;rsquo;intersection&lt;/li&gt;
&lt;li&gt;Le théorème de sûreté responsable&lt;/li&gt;
&lt;li&gt;Vivacité plausible et règle de choix de fourche&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Aspects algorithmiques&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calcul des justifiés et des finalisés&lt;/li&gt;
&lt;li&gt;Détection des fautes&lt;/li&gt;
&lt;li&gt;Le coût d&amp;rsquo;une attaque&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Deux extensions et leurs limites&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jeu de validateurs dynamique&lt;/li&gt;
&lt;li&gt;Révisions lointaines&lt;/li&gt;
&lt;li&gt;Fuite d&amp;rsquo;inactivité&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le texte se conclut par dix suggestions de développement (implémentation de l&amp;rsquo;arbre des points de contrôle, comparaison d&amp;rsquo;algorithmes de calcul des justifiés, vérificateur de fautes, simulation d&amp;rsquo;un réseau de validateurs, étude du coût minimal d&amp;rsquo;une attaque, comparaison avec pBFT et Tendermint, etc.) et une bibliographie.&lt;/p&gt;</description></item><item><title>🪙 CNC Informatique MP — Proposition d'épreuve « Bitcoin » et son corrigé</title><link>https://elhadiq.github.io/blog/cnc-bitcoin/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://elhadiq.github.io/blog/cnc-bitcoin/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Avertissement.&lt;/strong&gt; Il s&amp;rsquo;agit d&amp;rsquo;une &lt;strong&gt;proposition personnelle&lt;/strong&gt;, à but pédagogique — &lt;strong&gt;pas une épreuve officielle&lt;/strong&gt; du Concours National Commun (CNC) ni de l&amp;rsquo;Agrégation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="télécharger"&gt;Télécharger&lt;/h2&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-98b7898ee1fa634a81a2265bea119473"
href="cnc_bitcoin_enonce.pdf"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Énoncé (PDF)"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Énoncé (PDF)&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Proposition d&amp;rsquo;épreuve d&amp;rsquo;informatique dans l&amp;rsquo;esprit du &lt;strong&gt;Concours National Commun (CNC), filière MP&lt;/strong&gt;, portant sur &lt;strong&gt;Bitcoin&lt;/strong&gt; et plus particulièrement sur l&amp;rsquo;arithmétique de l&amp;rsquo;émission monétaire (halving, offre totale, précision des calculs sur les montants en satoshis).&lt;/p&gt;
&lt;p&gt;Ce sujet et son corrigé ont été élaborés avec l&amp;rsquo;aide de &lt;strong&gt;L&amp;rsquo;AI&lt;/strong&gt;, puis relus et mis en forme en LaTeX.&lt;/p&gt;
&lt;h2 id="contenu-de-lépreuve"&gt;Contenu de l&amp;rsquo;épreuve&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Présentation et notations&lt;/li&gt;
&lt;li&gt;Partie I — Émission monétaire (arithmétique des montants)&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>