<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amel In Tech</title>
    <description>The latest articles on DEV Community by Amel In Tech (@amel_in_tech).</description>
    <link>https://dev.to/amel_in_tech</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3856084%2F2f2f3bd7-df45-4046-9380-b16d1010446b.png</url>
      <title>DEV Community: Amel In Tech</title>
      <link>https://dev.to/amel_in_tech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amel_in_tech"/>
    <language>en</language>
    <item>
      <title>Variables et la mémoire</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Mon, 29 Jun 2026 12:10:04 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/variables-et-la-memoire-4ilj</link>
      <guid>https://dev.to/amel_in_tech/variables-et-la-memoire-4ilj</guid>
      <description>&lt;h2&gt;
  
  
  Sommaire
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Créer une variable&lt;/li&gt;
&lt;li&gt;Deux modèles mentaux : C et Python&lt;/li&gt;
&lt;li&gt;Objet et Référence&lt;/li&gt;
&lt;li&gt;Réassignation d'une variable&lt;/li&gt;
&lt;li&gt;Plusieurs noms peuvent référencer le même objet&lt;/li&gt;
&lt;li&gt;Déclarer plusieurs variables en une seule ligne&lt;/li&gt;
&lt;li&gt;Exercice&lt;/li&gt;
&lt;li&gt;Résumé en images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ayant appris le C, je me suis naturellement demandé, lorsque j'ai commencé à apprendre Python, comment les variables et la mémoire y étaient gérées.&lt;/p&gt;

&lt;p&gt;J'avais l'habitude de voir une variable comme une case mémoire contenant directement une valeur. En Python, le modèle est différent : une variable n'est pas une zone mémoire qui stocke une valeur, mais un nom qui référence un objet.&lt;/p&gt;

&lt;p&gt;En Python, les variables permettent de donner un nom à une information pour pouvoir la réutiliser dans le programme.&lt;/p&gt;

&lt;h1&gt;
  
  
  Créer une variable
&lt;/h1&gt;

&lt;p&gt;En Python, il n’y a pas de déclaration séparée de variable comme dans certains autres langages. Une variable existe à partir du moment où un nom reçoit une valeur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;variable&lt;/span&gt;  &lt;span class="c1"&gt;# ❌ le nom n’a jamais reçu de valeur
&lt;/span&gt;
&lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;valeur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# ✅ le nom reçoit une valeur
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cette ligne fait deux choses en même temps :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Python crée ou récupère l’objet &lt;code&gt;"valeur"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Python associe le nom &lt;code&gt;variable&lt;/code&gt; à cet objet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mais que se passe-t-il réellement derrière cette instruction ? Et pourquoi ne peut-on pas créer une variable sans lui attribuer de valeur ?  &lt;/p&gt;

&lt;h3&gt;
  
  
  Deux modèles mentaux : C et Python
&lt;/h3&gt;

&lt;p&gt;En C, une variable peut être imaginée comme une case mémoire typée qui contient directement une valeur. La variable possède alors u n type, une adresse, une taille connue, et la valeur est stockée dans cette zone mémoire.&lt;/p&gt;

&lt;p&gt;Exemple mental en C :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx56hfaabbbiqmm1i9hpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx56hfaabbbiqmm1i9hpa.png" alt=" " width="758" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En Python, il faut faire attention au mot “stocker”, car le modèle mental est différent. En Python, une variable est un &lt;strong&gt;nom qui référence un objet&lt;/strong&gt; &lt;strong&gt;Python&lt;/strong&gt; en mémoire.&lt;/p&gt;

&lt;h3&gt;
  
  
  Objet et Référence
&lt;/h3&gt;

&lt;p&gt;Dans le contexte des variables, un objet est un élément géré par l'interpréteur Python qui possède au minimum une valeur, un type et une identité.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Référencer&lt;/strong&gt; un objet signifie que le nom de la variable permet de retrouver cet objet.&lt;/p&gt;

&lt;p&gt;La variable ne contient pas directement l’objet, elle est liée à lui par une référence. &lt;/p&gt;

&lt;p&gt;On peut imaginer cette référence comme une flèche entre le nom et l’objet.&lt;/p&gt;

&lt;p&gt;💡&lt;/p&gt;

&lt;p&gt;Référence = lien entre un nom de variable et un objet.&lt;/p&gt;

&lt;p&gt;Exemple mental&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="c1"&gt;# age ─────► objet int contenant 21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcvrbm9j5v4bajburjwu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcvrbm9j5v4bajburjwu9.png" alt=" " width="785" height="260"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;age = le nom de variable
21 = l’objet de type int
─────► = la référence entre le nom et l’objet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;valeur   → 21
type     → int
identité → un identifiant interne qui permet à Python de distinguer cet objet d’un autre
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16kzbd28foa6l9mkkvr7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16kzbd28foa6l9mkkvr7.png" alt=" " width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Analogie :&lt;/p&gt;

&lt;p&gt;En C :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;la variable est une boîte qui contient une valeur
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En Python :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;la variable est un nom qui pointe vers un objet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En Python, l'étape consistant à déclarer une variable vide avant de lui attribuer une valeur n'existe pas. Une variable apparaît au moment où un nom est associé à un objet.&lt;/p&gt;

&lt;p&gt;Si on essaye d’utiliser un nom qui n’a jamais reçu de valeur, Python lève une erreur :&lt;/p&gt;

&lt;p&gt;Exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# =&amp;gt; NameError: name 'message' is not defined
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡&lt;/p&gt;

&lt;p&gt;Si on veut représenter volontairement une absence de valeur, on utilise &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="c1"&gt;# message ─────►  objet spécial None
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Ici, le nom &lt;code&gt;message&lt;/code&gt; existe : il référence l’objet spécial None.&lt;/p&gt;

&lt;p&gt;C’est différent d’un nom (variable) qui n’a jamais été défini.&lt;/p&gt;




&lt;h1&gt;
  
  
  Réassignation d’une variable
&lt;/h1&gt;

&lt;p&gt;Réassigner une variable signifie réutiliser un nom déjà existant pour l’associer à un nouvel objet.&lt;/p&gt;

&lt;p&gt;La réassignation ne modifie pas la valeur de l’ancien objet, elle change surtout l’association entre un nom et un objet.&lt;/p&gt;

&lt;p&gt;Exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="n"&gt;Au&lt;/span&gt; &lt;span class="n"&gt;départ&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="err"&gt;─────►&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;

&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
&lt;span class="n"&gt;Après&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="err"&gt;─────►&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;Au&lt;/span&gt; &lt;span class="n"&gt;départ&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="err"&gt;─────►&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;Après&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="err"&gt;─────►&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Les nom &lt;code&gt;age&lt;/code&gt; ou &lt;code&gt;message&lt;/code&gt; ne références plus le même objet, ils références maintenant un nouvel objet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz2wj2xqannawfrg99fbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz2wj2xqannawfrg99fbl.png" alt=" " width="799" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cas particulier : &lt;code&gt;x = x + 1&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;x = x + 1&lt;/code&gt; n’est pas un cas différent au niveau de la réassignation&lt;/strong&gt;., c’est juste une réassignation où la nouvelle valeur dépend de l’ancienne.&lt;/p&gt;

&lt;p&gt;Ici, la nouvelle valeur n’est pas écrite directement. Python doit d’abord la calculer.&lt;/p&gt;

&lt;p&gt;exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="c1"&gt;# x ─────► objet int contenant 10
&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="c1"&gt;# Calcul : x + 1 donne un nouvel objet int contenant 11#
# x ─────► objet int contenant 11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python fait les étapes suivantes :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Il lit la valeur actuellement référencée par x.&lt;/li&gt;
&lt;li&gt;Il calcule x + 1.&lt;/li&gt;
&lt;li&gt;Il réassocie le nom x au résultat.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cette ligne ne se lit pas comme une égalité mathématique, car en En Python, &lt;code&gt;=&lt;/code&gt; ne compare pas il associe ou réassocie un nom à un objet. On parle alors opérateur d'affectation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3223lxvf7cno20qdru84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3223lxvf7cno20qdru84.png" alt=" " width="797" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Plusieurs noms peuvent référencer le même objet
&lt;/h1&gt;

&lt;p&gt;En Python, une variable est un nom qui référence un objet, cela signifie que plusieurs noms différents peuvent référencer le même objet.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Exemple simple&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On pourrait croire que Python copie simplement la valeur de &lt;code&gt;a&lt;/code&gt; dans &lt;code&gt;b&lt;/code&gt;, mais le modèle mental est plutôt :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;a = 21&lt;/code&gt;  ⇒ Python associe le nom &lt;code&gt;a&lt;/code&gt; à un objet &lt;code&gt;int&lt;/code&gt; contenant la valeur &lt;code&gt;21&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;b = a&lt;/code&gt; ⇒ Python regarde l’objet actuellement référencé par &lt;code&gt;a&lt;/code&gt;, puis associe aussi le nom &lt;code&gt;b&lt;/code&gt; à ce même objet.&lt;/p&gt;

&lt;p&gt;Il crée une nouvelle association entre un nom et un objet existant.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Les deux noms &lt;code&gt;a&lt;/code&gt; et &lt;code&gt;b&lt;/code&gt; référencent donc le même objet :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a ─────► objet int contenant 21
b ─────► même objet int contenant 21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Réassigner un des deux noms
&lt;/h2&gt;

&lt;p&gt;Si plusieurs noms référencent le même objet, puis qu’on réassigne un seul nom, ce nom change de référence, mais pas les autres noms. et donc on ne modifie pas automatiquement les autres noms.&lt;/p&gt;

&lt;p&gt;Les autres noms continuent de référencer l’objet qu’ils référencaient déjà.&lt;/p&gt;

&lt;p&gt;exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;# message    ─────► objet str contenant "Hello"
&lt;/span&gt;
&lt;span class="n"&gt;salutation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;
&lt;span class="c1"&gt;# salutation ─────► meme objet str contenant "Hello"
&lt;/span&gt;
&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;# message    ─────► objet str contenant "Bonjour"
# salutation ─────► ancien objet str contenant "Hello"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;message&lt;/code&gt; change de référence, mais &lt;code&gt;salutation&lt;/code&gt; continue de référencer l’ancien objet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Même valeur ≠ forcément même objet
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Même valeur ne veut pas toujours dire même objet.&lt;/strong&gt;Et &lt;code&gt;None&lt;/code&gt; est un cas spécial du contraire  &lt;/p&gt;

&lt;p&gt;Deux variables peuvent avoir la même valeur sans forcément référencer le même objet.&lt;/p&gt;

&lt;p&gt;Exemple simple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;référence&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;référence&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;objet&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="n"&gt;contenant&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ici, les deux objets peuvent avoir le &lt;strong&gt;même contenu, sans être forcément le même objet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La question de savoir si deux objets identiques sont physiquement le même objet en mémoire dépend parfois d’optimisations internes de Python.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Même valeur ≠ forcément même objet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cas particulier : &lt;code&gt;None&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;None&lt;/code&gt; est un objet spécial qui représente l’absence volontaire de valeur.&lt;/p&gt;

&lt;p&gt;Dans ce cas de l’exemple qui suit, &lt;code&gt;a&lt;/code&gt; et &lt;code&gt;b&lt;/code&gt; référencent le même objet spécial &lt;code&gt;None :&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="c1"&gt;# a ─────► objet spécial None
&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="c1"&gt;# b ─────► même objet spécial None
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Déclarer plusieurs variables en une seule ligne
&lt;/h1&gt;

&lt;p&gt;En Python, on peut associer plusieurs variables à plusieurs valeurs en une seule ligne.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nom_famille&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Martin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revient à écrire :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prenom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;nom_famille&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Martin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ici :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prenom
→ référence l’objet "Alice"

nom_famille
→ référence l’objet "Martin"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Exemple avec &lt;code&gt;split()&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice Martin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nom_famille&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;# Alice
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nom_famille&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Martin
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ici, &lt;code&gt;nom.split(" ")&lt;/code&gt; découpe la chaîne &lt;code&gt;"Alice Martin"&lt;/code&gt; en deux morceaux , puis Python associe chaque valeur à une variable.&lt;/p&gt;

&lt;h1&gt;
  
  
  Un peu de pratique
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Essayez de prédire le résultat avant d'exécuter le programme :&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;

&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Salut&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Résumé en images
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq0dl0pplgv1azqfjdnz8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq0dl0pplgv1azqfjdnz8.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Bases de Python</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Sun, 21 Jun 2026 17:18:07 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/bases-de-python-3i3d</link>
      <guid>https://dev.to/amel_in_tech/bases-de-python-3i3d</guid>
      <description>&lt;p&gt;Je commence à apprendre le Python et comme pour tous les langages que j’apprends je commence par les bases de la bases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extension&lt;/strong&gt; : &lt;code&gt;.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt; : langage de programmation interprété, orienté objet et multi-paradigme.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Indentation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Contrairement à certains langages, Python n’utilise pas les accolades &lt;code&gt;{}&lt;/code&gt; pour délimiter les blocs de code. En Python, c’est l’indentation qui définit les blocs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Convention d’indentation officielle :&lt;/strong&gt; &lt;code&gt;4 espaces&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Majeur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mineur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Majeur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Erreur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Majeur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mineur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bonnes pratiques Python
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Convention de nommage
&lt;/h3&gt;

&lt;p&gt;En Python, les conventions de nommage recommandées sont décrites dans le guide de style &lt;strong&gt;PEP 8&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;snake_case&lt;/code&gt;&lt;/strong&gt; &lt;em&gt;(la plus utilisée)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Utilisée pour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;variables&lt;/li&gt;
&lt;li&gt;fonctions&lt;/li&gt;
&lt;li&gt;méthodes&lt;/li&gt;
&lt;li&gt;fichiers
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nom_utilisateur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculer_total&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;PascalCase&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Utilisée pour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;classes
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UtilisateurPremium&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;UPPER_CASE&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Utilisée pour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;constantes
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;TAUX_TVA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="n"&gt;API_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.exemple.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tableau recapitulatif&lt;/strong&gt; &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Convention&lt;/th&gt;
&lt;th&gt;Pour&lt;/th&gt;
&lt;th&gt;Exemple&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;snake_case&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• variables&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;• fonctions&lt;br&gt;
• méthodes&lt;br&gt;
• fichiers | ma_variable |&lt;br&gt;
| PascalCase | • classes | NomClasse |&lt;br&gt;
| MAJUSCULE | • constantes | CONSTANTE |&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Commentaire&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Les commentaires sont des annotations dans le code source qui sont ignorées lors de l’exécution du programme.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Deux formes courantes :&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;commentaire simple&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# commentaire monoligne
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;docstring&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Doc d’un module, d’une fonction ou d’une classe.
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Logs
&lt;/h3&gt;

&lt;p&gt;Méthode permettant d'afficher des données pour le débogage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;print()&lt;/code&gt; = affichage simple dans la console&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Utilisateur :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nom&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;logging&lt;/code&gt; = journalisation plus professionnelle, avec des niveaux comme &lt;code&gt;DEBUG&lt;/code&gt;, &lt;code&gt;INFO&lt;/code&gt;, &lt;code&gt;WARNING&lt;/code&gt;, &lt;code&gt;ERROR&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Base de clean code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Eviter le Code trop compact&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Utiliser des noms explicites
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age_utilisateur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Éviter les fonctions trop longues
&lt;/h3&gt;

&lt;p&gt;exemple simple mais plus adapter a de vraie longue fonction&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculer_total&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;taxe&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prix&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;taxe&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculer_total&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;taxe&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;prix&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;taxe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Respecter une seule responsabilité
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;afficher_message&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bonjour&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Exécution d’un programme Python&lt;/strong&gt; :
&lt;/h2&gt;

&lt;p&gt;Le code source est d’abord compilé en bytecode, puis ce bytecode est exécuté par la machine virtuelle Python. On appelle souvent l’ensemble de ce mécanisme l’interpréteur Python.&lt;/p&gt;

&lt;p&gt;Dans la pratique, au début, on peut retenir simplement : on écrit un fichier &lt;code&gt;.py&lt;/code&gt;, puis Python l’exécute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2zw04j7nkbaaso5f9js5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2zw04j7nkbaaso5f9js5.png" alt=" " width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture de fichier
&lt;/h2&gt;

&lt;p&gt;Un fichier Python propre est souvent organisé comme ceci :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Les imports&lt;/em&gt;&lt;/strong&gt;
→ modules / outils dont le programme a besoin&lt;/li&gt;
&lt;li&gt;Les constantes
→ valeurs fixes utilisées dans le programme&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Les fonctions&lt;/em&gt;&lt;/strong&gt;
→ blocs de code réutilisables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;La fonction main()&lt;/em&gt;&lt;/strong&gt;
→ lance main() seulement si le fichier est exécuté directement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Le bloc if &lt;strong&gt;name&lt;/strong&gt; == "&lt;strong&gt;main&lt;/strong&gt;"&lt;/em&gt;&lt;/strong&gt;
→ point de lancement main() seulement si le fichier est exécuté directement
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 1. Imports
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Constantes / variables globales
&lt;/span&gt;&lt;span class="n"&gt;NOM_APPLICATION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Gestion utilisateur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;AGE_MINIMUM&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;

&lt;span class="c1"&gt;# 3. Fonctions
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;est_majeur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;AGE_MINIMUM&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;afficher_message_utilisateur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;annee&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Application :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NOM_APPLICATION&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Année :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;annee&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Prénom :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Âge :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;est_majeur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Statut : majeur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Statut : mineur&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 4. Programme principal
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;prenom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;

    &lt;span class="nf"&gt;afficher_message_utilisateur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prenom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 5. Point d’entrée du fichier
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ma prochaine étape les Variable et la gestion de la mémoire en Python 😁&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Bonus : Règles du standard ERC-20</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Sun, 17 May 2026 16:35:00 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/bonus-regles-du-standard-erc-20-edm</link>
      <guid>https://dev.to/amel_in_tech/bonus-regles-du-standard-erc-20-edm</guid>
      <description>&lt;p&gt;Un token ERC-20 est une &lt;strong&gt;valeur gérée par un smart contract&lt;/strong&gt; qui doit respecter un ensemble précis de &lt;strong&gt;règles fonctionnelles&lt;/strong&gt; afin d’être reconnu et utilisable par l’écosystème &lt;strong&gt;Ethereum&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Liste des Règles :
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifier le token :&lt;/strong&gt; Permet d’identifier clairement le token.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Afficher correctement le token dans les wallets et interfaces.&lt;/li&gt;
&lt;li&gt;Distinguer un token d’un autre.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonctions associées&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;name()&lt;/code&gt; → nom lisible du token&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;symbol()&lt;/code&gt; → version courte du nom&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;decimals()&lt;/code&gt; → nombre de décimales utilisées&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Aucune logique métier, uniquement de l’information.&lt;/em&gt;&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connaître la quantité totale de tokens&lt;/strong&gt; (&lt;em&gt;total supply&lt;/em&gt;) &lt;strong&gt;:&lt;/strong&gt; Indique le nombre total de tokens qui existent pour un token donné.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Garantir la cohérence globale du token.&lt;/li&gt;
&lt;li&gt;Permettre l’audit et la transparence.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;totalSupply()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gérer les soldes :&lt;/strong&gt; Associe chaque adresse à un solde et permet de le consulter&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Répondre à la question : « Qui possède combien de tokens ? »&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;balanceOf(address)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Fonction de lecture uniquement, aucun changement d’état.&lt;/em&gt;&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transfert direct de tokens :&lt;/strong&gt; Permet d’envoyer des tokens d’une adresse vers une autre.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Assurer la circulation des tokens.&lt;/li&gt;
&lt;li&gt;Empêcher les soldes négatifs.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;transfer(address to, uint256 amount)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ici le smart contract :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vérifie que l’expéditeur a un solde suffisant,&lt;/li&gt;
&lt;li&gt;met à jour les soldes dans l’état global.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Autoriser un tiers à utiliser des tokens (allowance) :&lt;/strong&gt; permettre à un propriétaire de tokens &lt;strong&gt;d’autoriser un tiers (souvent un smart contract)&lt;/strong&gt; à utiliser une quantité limitée de ses tokens&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Permettre aux smart contracts, exchanges et applications DeFi d’agir pour l’utilisateur.&lt;/p&gt;

&lt;p&gt;💡&lt;em&gt;Les exchanges et les applications DeFi sont des smart contracts qui automatisent des opérations financières, et ils ont besoin d’autorisations pour utiliser les tokens des utilisateurs à leur place.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exchange&lt;/strong&gt; = échanger un token contre un autre&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeFi&lt;/strong&gt; = faire de la finance avec des smart contracts
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Sans donner accès à la clé privée.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;approve(address spender, uint256 amount)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lire une autorisation&lt;/strong&gt; : Permet de consulter le montant qu’un tiers est autorisé à utiliser.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Vérifier les autorisations accordées.&lt;/li&gt;
&lt;li&gt;Permettre aux wallets, explorateurs et applications décentralisées de lire et afficher les données du token.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;allowance(address owner, address spender)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Fonction de lecture.&lt;/em&gt;&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transfert par un tiers autorisé :&lt;/strong&gt; Permet à un tiers autorisé de transférer des tokens pour le compte d’un autre utilisateur.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Rendre possibles les échanges automatisés.&lt;/li&gt;
&lt;li&gt;Cœur du fonctionnement des exchanges et de la DeFi.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fonction associée&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;transferFrom(address from, address to, uint256 amount)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ici le smart contract :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vérifie l’autorisation,&lt;/li&gt;
&lt;li&gt;met à jour les soldes,&lt;/li&gt;
&lt;li&gt;réduit l’autorisation restante.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traçabilité des actions&lt;/strong&gt; : Signale les actions importantes liées au token.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Rôle&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Permettre aux wallets et explorers de suivre l’activité.&lt;/p&gt;

&lt;p&gt;💡Un explorer est un site web qui permet de voir et vérifier tout ce qui est écrit sur une blockchain.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rendre le token observable et transparent.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Événements associés&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Transfer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Approval&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cohérence et sécurité globale&lt;/strong&gt; : Garantit que toutes les règles précédentes sont respectées en permanence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rôle&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Empêcher les incohérences.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;exemple : Alice possède 5 tokens, mais essaie d’en envoyer 10 à Bob.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Garantir l’intégrité de l’état global.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Implémentation&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vérifications internes dans toutes les fonctions du smart contract.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;En résumé, le standard BEP-20 définit comment un token est identifié, les soldes sont gérés, les tokens sont transférés, des tiers peuvent être autorisés, et comment ces actions sont rendues visibles à l’écosystème.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnexrpzkubv1cz2hynjra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnexrpzkubv1cz2hynjra.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>cryptocurrency</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>Ethereum VS BNB Smart Chain (BSC)</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Sun, 17 May 2026 16:30:00 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/ethereum-vs-bnb-smart-chain-bsc-29ed</link>
      <guid>https://dev.to/amel_in_tech/ethereum-vs-bnb-smart-chain-bsc-29ed</guid>
      <description>&lt;h1&gt;
  
  
  Blockchain Ethereum
&lt;/h1&gt;

&lt;p&gt;Ethereum est une blockchain publique conçue pour exécuter des smart contracts et des applications décentralisées.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;dApp = application qui fonctionne grâce à des smart contracts sur une blockchain, au lieu de fonctionner sur un serveur central.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ethereum est la blockchain de référence sur laquelle le standard ERC-20 a été défini.&lt;/p&gt;




&lt;h2&gt;
  
  
  Le standard ERC-20 (sans code)
&lt;/h2&gt;

&lt;p&gt;ERC-20 est un ensemble de règles que doit respecter un smart contract pour être reconnu comme un token sur Ethereum.&lt;/p&gt;




&lt;h2&gt;
  
  
  ERC-20 ≠ token ERC-20
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ERC-20 = un standard
&lt;/h3&gt;

&lt;p&gt;ERC-20 est une liste de règles.&lt;/p&gt;

&lt;p&gt;Il ne contient :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;aucun token&lt;/li&gt;
&lt;li&gt;aucun solde&lt;/li&gt;
&lt;li&gt;aucun contrat déployé&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Smart contract ERC-20
&lt;/h3&gt;

&lt;p&gt;Le smart contract :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stocke les valeurs&lt;/li&gt;
&lt;li&gt;applique les règles&lt;/li&gt;
&lt;li&gt;permet les transferts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le smart contract du token applique les règles via des fonctions.&lt;/p&gt;




&lt;h3&gt;
  
  
  Token ERC-20
&lt;/h3&gt;

&lt;p&gt;Par abus de langage, on parle souvent de “token ERC-20”.&lt;/p&gt;

&lt;p&gt;💡Distinction claire&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard ERC-20 → liste de règles&lt;/li&gt;
&lt;li&gt;Smart contract ERC-20 → smart contract respectant le standard&lt;/li&gt;
&lt;li&gt;Fonctions ERC-20 → implémentation technique des règles&lt;/li&gt;
&lt;li&gt;Token → valeur numérique associée à une adresse&lt;/li&gt;
&lt;li&gt;Token ERC-20 → valeur gérée par un smart contract ERC-20&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Où sont stockés les soldes ?
&lt;/h3&gt;

&lt;p&gt;Dans un token ERC-20, les soldes sont stockés dans le storage (mémoire permanente) du smart contract, c’est-à-dire dans l’état global de la blockchain, à l’intérieur du compte smart contract.&lt;/p&gt;

&lt;p&gt;Techniquement, c’est une structure du type :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;balances[address] = nombre
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
\&lt;/p&gt;

&lt;p&gt;Quand un wallet “affiche” tes tokens, il lit le storage du contrat (via des appels de lecture) et récupère le solde associé à ton adresse.&lt;/p&gt;




&lt;h1&gt;
  
  
  BNB Smart Chain
&lt;/h1&gt;

&lt;p&gt;BNB Smart Chain est une blockchain publique compatible Ethereum, conçue pour exécuter des smart contracts avec des frais faibles et des transactions rapides.&lt;/p&gt;

&lt;p&gt;Elle fait partie de l’écosystème BNB Chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  BNB Chain ≠ BNB Beacon Chain ≠ BNB Smart Chain
&lt;/h2&gt;

&lt;h2&gt;
  
  
  BNB Chain
&lt;/h2&gt;

&lt;p&gt;Le nom de l’écosystème qui regroupe plusieurs blockchains.&lt;/p&gt;




&lt;h2&gt;
  
  
  BNB Beacon Chain
&lt;/h2&gt;

&lt;p&gt;Blockchain dédiée à la gouvernance et au staking de BNB Chain, sans smart contracts complexes.&lt;/p&gt;

&lt;p&gt;💡 Le staking consiste à bloquer des tokens pour participer au fonctionnement et à la sécurité d’une blockchain.&lt;/p&gt;




&lt;h2&gt;
  
  
  BNB Smart Chain (BSC)
&lt;/h2&gt;

&lt;p&gt;BNB Smart Chain (BSC) est une blockchain publique compatible Ethereum, conçue pour exécuter des smart contracts et des tokens BEP-20, avec des transactions rapides et des frais faibles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compatible Ethereum car :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;elle utilise la même machine virtuelle (EVM = Ethereum Virtual Machine)&lt;/li&gt;
&lt;li&gt;elle permet d’exécuter les mêmes smart contracts&lt;/li&gt;
&lt;li&gt;elle utilise le même langage (Solidity)&lt;/li&gt;
&lt;li&gt;elle utilise les mêmes outils :

&lt;ul&gt;
&lt;li&gt;Metamask&lt;/li&gt;
&lt;li&gt;Remix&lt;/li&gt;
&lt;li&gt;Hardhat&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Elle reprend également le même modèle de comptes qu’Ethereum.&lt;/p&gt;




&lt;h1&gt;
  
  
  Le standard BEP-20 (sans code)
&lt;/h1&gt;

&lt;p&gt;BEP-20 est un ensemble de règles que doit respecter un smart contract pour être reconnu comme un token sur BNB Smart Chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  BEP-20 ≠ token BEP-20
&lt;/h2&gt;

&lt;h3&gt;
  
  
  BEP-20 = un standard
&lt;/h3&gt;

&lt;p&gt;BEP-20 définit un ensemble de règles sur la manière dont un token doit fonctionner.&lt;/p&gt;

&lt;p&gt;Il ne contient :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;aucun token&lt;/li&gt;
&lt;li&gt;aucun solde&lt;/li&gt;
&lt;li&gt;aucun contrat déployé&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Smart contract BEP-20
&lt;/h3&gt;

&lt;p&gt;Le programme qui :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stocke les valeurs&lt;/li&gt;
&lt;li&gt;applique les règles&lt;/li&gt;
&lt;li&gt;permet les transferts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le smart contract du token applique les règles via des fonctions.&lt;/p&gt;

&lt;p&gt;💡 Par abus de langage, on parle souvent de “token BEP-20”.&lt;/p&gt;




&lt;h2&gt;
  
  
  Token BEP-20
&lt;/h2&gt;

&lt;p&gt;Un token est une valeur numérique associée à une adresse.&lt;/p&gt;

&lt;p&gt;Un token BEP-20 n’est donc pas le smart contract lui-même.&lt;/p&gt;

&lt;p&gt;C’est une valeur dont les règles sont implémentées par un smart contract BEP-20 sur BNB Smart Chain.&lt;/p&gt;

&lt;p&gt;💡 Distinction claire&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard BEP-20 → liste de règles&lt;/li&gt;
&lt;li&gt;Smart contract BEP-20 → smart contract respectant le standard BEP-20&lt;/li&gt;
&lt;li&gt;Fonctions BEP-20 → implémentation technique des règles définies dans le standard BEP-20&lt;/li&gt;
&lt;li&gt;Token → valeur numérique associée à une adresse&lt;/li&gt;
&lt;li&gt;Token BEP-20 → valeur dont les règles sont implémentées par un smart contract BEP-20&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Règles du standard BEP-20
&lt;/h2&gt;

&lt;p&gt;Un token BEP-20 est une valeur gérée par un smart contract qui doit respecter un ensemble précis de règles fonctionnelles afin d’être reconnu et utilisable par l’écosystème BNB Smart Chain.&lt;/p&gt;

&lt;p&gt;Ces règles sont héritées du standard ERC-20 (Ethereum).&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>Tokens et standard (ERC-20 / BEP-20)</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Fri, 15 May 2026 16:35:00 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/tokens-et-standard-erc-20-bep-20-4h1j</link>
      <guid>https://dev.to/amel_in_tech/tokens-et-standard-erc-20-bep-20-4h1j</guid>
      <description>&lt;p&gt;Sans standards, les interactions entre tokens, wallets et smart contracts seraient chaotiques, voire impossibles.&lt;/p&gt;

&lt;p&gt;C’est pour cela que &lt;strong&gt;chaque blockchain&lt;/strong&gt; met en place des &lt;strong&gt;standards de tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Un &lt;strong&gt;standard de token&lt;/strong&gt; est une &lt;strong&gt;liste de règles obligatoires&lt;/strong&gt; que tous les tokens doivent respecter.&lt;/p&gt;

&lt;p&gt;Ils existent pour que :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;les &lt;strong&gt;wallets&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;les &lt;strong&gt;smart contracts&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;les &lt;strong&gt;plateformes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;puissent comprendre et utiliser les tokens de la même façon.&lt;/p&gt;

&lt;p&gt;Exemples de standards :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ERC-20&lt;/strong&gt; → standard de token fongible sur Ethereum&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BEP-20&lt;/strong&gt; → même logique sur BNB Smart Chain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BEP-20 est &lt;strong&gt;compatible ERC-20&lt;/strong&gt;, mais sur une autre blockchain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg7ct90e70gh0jbzr7ic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg7ct90e70gh0jbzr7ic.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>État global 3/3 :Les tokens &amp; smart contracts</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Fri, 15 May 2026 16:30:00 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/etat-global-33-les-tokens-smart-contracts-e6h</link>
      <guid>https://dev.to/amel_in_tech/etat-global-33-les-tokens-smart-contracts-e6h</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Qu’est-ce qu’un token ?&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Un token est un nombre associé à une adresse, enregistré dans un smart contract sur la blockchain.&lt;/p&gt;

&lt;p&gt;💡 Ce n’est pas un objet, et ce n’est pas stocké dans le wallet.&lt;/p&gt;

&lt;p&gt;Un token est une information / une valeur qui sert à représenter quelque chose. De ce fait, il existe &lt;strong&gt;plusieurs grandes familles&lt;/strong&gt;, selon &lt;strong&gt;ce que le token représente, dont voici les 3 principaux :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Tokens fongibles&lt;/em&gt;&lt;/strong&gt; : c’est un token interchangeable avec un autre du même type.&lt;br&gt;
Ils sont donc &lt;strong&gt;strictement&lt;/strong&gt; identiques entre eux.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explication : Si Alice te donne &lt;strong&gt;1 token&lt;/strong&gt; et que Bob te donne &lt;strong&gt;1 token, les deux tokens sont les mêmes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;exemple d’utilisation : argent, points, crédit&lt;/li&gt;
&lt;li&gt;standards : ERC-20 (Ethereum), BEP-20 (BSC)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Tokens non fongibles&lt;/em&gt; (NFT)&lt;/strong&gt; : c’est un token unique et non interchangeable, chaque token est &lt;strong&gt;différent&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explication : Si Alice te donne &lt;strong&gt;1 NFT&lt;/strong&gt; et que Bob te donne &lt;strong&gt;1 NFT, les deux tokens ne sont pas équivalents&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;exemple d’utilisation : image, objet unique, certificat, propriété numérique&lt;/li&gt;
&lt;li&gt;standards : ERC-721, ERC-1155&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Tokens unitaires / utilitaires&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explication : token qui donne le droit d’accéder à un service&lt;/li&gt;
&lt;li&gt;exemple d’utilisation : un jeton pour jouer, un crédit pour utiliser une application, …&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Tokens de gouvernance :&lt;/strong&gt; token qui donne le droit de voter.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explication : sert à décider des règles d’un projet blockchain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Plus tu as de tokens, plus ta voix compte&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;💡 La différence est &lt;strong&gt;dans l’usage&lt;/strong&gt;, pas dans la technologie.&lt;/p&gt;

&lt;p&gt;⚠️ Ce ne sont PAS des types techniques exclusifs, un même token peut être fongible &lt;strong&gt;ET&lt;/strong&gt; de gouvernance ou fongible &lt;strong&gt;ET&lt;/strong&gt; utilitaire.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Qu’est-ce qu’un smart contract ?&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Un smart contract est un programme stocké sur la blockchain, qui vit dans un compte smart contract et qui peut lire et modifier l’état global selon ses règles.&lt;/p&gt;

&lt;p&gt;Un &lt;strong&gt;smart contract&lt;/strong&gt;, c’est juste un &lt;strong&gt;programme&lt;/strong&gt;. Selon leur rôle, ils peuvent être très différents. Même si &lt;strong&gt;techniquement&lt;/strong&gt;, ce sont tous des comptes smart contracts stockés dans l’état global, il en existe différents types, dont voici quelques exemples :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contrat de &lt;strong&gt;token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;contrat de &lt;strong&gt;finance (DeFi)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;contrat de &lt;strong&gt;NFT&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il ne fait rien tout seul, il agit uniquement quand un wallet l’appelle via une transaction.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Qu’est-ce qu’un wallet ?&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Le wallet n’est PAS un porte-monnaie au sens physique.&lt;/p&gt;

&lt;p&gt;Un &lt;strong&gt;wallet&lt;/strong&gt; (portefeuille) est comme une &lt;strong&gt;adresse + des clés&lt;/strong&gt; sur la blockchain. Il permet de réaliser des transactions sur la blockchain, comme recevoir et envoyer des tokens, signer des transactions, interagir avec des smart contracts, etc.&lt;/p&gt;

&lt;p&gt;Un wallet contient :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adresse publique&lt;/strong&gt; → visible par tous (comme un IBAN bancaire) ex : &lt;code&gt;0x45FA...8CD&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clé privée&lt;/strong&gt; → connue seulement du propriétaire du wallet (comme un mot de passe ultra-sensible à ne donner à personne).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Le wallet &lt;strong&gt;affiche&lt;/strong&gt; les tokens, mais &lt;strong&gt;ne les contient pas&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le wallet permet d’agir, le smart contract applique les règles, et le token est une valeur enregistrée sur la blockchain.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Explication imagée&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0x1234...abcd # Adresse publique d'Alice  
        : 10 # tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwiqt6hxe5gm9y0nsxx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwiqt6hxe5gm9y0nsxx8.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Comment un smart contract garde la liste des soldes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Un smart contract garde une table interne qui associe chaque adresse à un nombre.&lt;/strong&gt;&lt;br&gt;
Cela peut ressembler à un tableau ou une feuille Excel.&lt;/p&gt;

&lt;p&gt;À l’intérieur du smart contract de token, il y a une structure logique du type :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;adresse → solde
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Par exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0xAlice → 50  
0xBob   → 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quand Alice “envoie” 10 tokens à Bob :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Son wallet appelle le smart contract&lt;/li&gt;
&lt;li&gt;Le contrat vérifie :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;qu’Alice a assez de tokens

&lt;ol&gt;
&lt;li&gt;Le contrat modifie ses données :
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0xAlice → 40  
0xBob   → 12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 &lt;strong&gt;L’état global est mis à jour&lt;/strong&gt;, car les données du contrat ont changé.&lt;/p&gt;

&lt;p&gt;La liste (adresse → solde) fait partie de l’état global, une mémoire partagée de la blockchain.&lt;/p&gt;




&lt;h3&gt;
  
  
  Comment fonctionne un token ? “Envoyer un token”, en réalité
&lt;/h3&gt;

&lt;p&gt;Ce qui se passe VRAIMENT quand tu dis : “Alice envoie 10 tokens à Bob”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Alice crée une transaction via son wallet qui envoie une demande au smart contract (cf 1) Création d’une transaction]&lt;/p&gt;

&lt;p&gt;💡 On n’envoie pas directement un token, on appelle une fonction du smart contract.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Le wallet signe la transaction avec la &lt;strong&gt;clé privée&lt;/strong&gt; d’Alice &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La transaction est diffusée au réseau, vérifiée, puis placée en &lt;strong&gt;mempool&lt;/strong&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quand la transaction est incluse dans un bloc, le producteur de bloc exécute le smart contract.&lt;br&gt;
Le contrat vérifie si Alice a 10 tokens ou plus.&lt;br&gt;&lt;br&gt;
Si oui, ses données sont mises à jour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avant → Alice : 50 et Bob : 2&lt;/li&gt;
&lt;li&gt;Après → Alice : 40 et Bob : 12
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Validation, ajout à la chaîne, confirmations&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Envoyer un token, c’est appeler le smart contract du token pour qu’il mette à jour la liste des soldes (adresse → solde).&lt;/p&gt;




</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>cryptocurrency</category>
      <category>web3</category>
    </item>
    <item>
      <title>État global 2/3 : Les acteurs stockés dans l’état global</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Wed, 13 May 2026 16:30:00 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/etat-global-24-les-acteurs-stockes-dans-letat-global-4oab</link>
      <guid>https://dev.to/amel_in_tech/etat-global-24-les-acteurs-stockes-dans-letat-global-4oab</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Les comptes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7psyp2yfn8fz65pe83pt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7psyp2yfn8fz65pe83pt.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;br&gt;
Tous les comptes vivent dans l’état global. Ce qui change, c’est qui les contrôle et ce qu’ils peuvent faire.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compte wallet (EOA – Externally Owned Account)
&lt;/h3&gt;

&lt;p&gt;Un compte wallet (EOA) est un compte contrôlé par une clé privée, via un wallet (Metamask, Ledger, etc.).&lt;/p&gt;

&lt;p&gt;Il permet de signer des transactions, d’envoyer des tokens, et d’appeler des smart contracts.&lt;/p&gt;

&lt;p&gt;Il contient dans l’état global :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un solde (ETH, BNB, tokens),&lt;/li&gt;
&lt;li&gt;un nonce (compteur de transactions),&lt;/li&gt;
&lt;li&gt;pas de code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemple : Le wallet d’Alice est un compte dans l’état global.&lt;/p&gt;




&lt;h3&gt;
  
  
  Compte smart contract
&lt;/h3&gt;

&lt;p&gt;Un &lt;strong&gt;compte smart contract&lt;/strong&gt; est un compte &lt;strong&gt;contrôlé par du code&lt;/strong&gt;, pas par une clé privée.&lt;/p&gt;

&lt;p&gt;Il permet d’exécuter automatiquement des règles, de créer / transférer des tokens et de modifier l’état global selon son code.&lt;/p&gt;

&lt;p&gt;Il contient (dans l’état global) :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un solde,&lt;/li&gt;
&lt;li&gt;des données internes (variables),&lt;/li&gt;
&lt;li&gt;du code (les règles du contrat).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La différence entre un compte wallet et un compte smart contract est le mode de contrôle : l’un est contrôlé par une clé privée, l’autre par du code, mais tous deux existent dans l’état global.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4i3xxeemgu6otd7h774.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4i3xxeemgu6otd7h774.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Différence essentielle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Le wallet déclenche des actions.&lt;/li&gt;
&lt;li&gt;Le smart contract applique des règles.&lt;/li&gt;
&lt;li&gt;Les deux sont des comptes stockés dans l’état global.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>État global 1/3 : comment la blockchain sait "qui possède quoi" ?</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Mon, 11 May 2026 16:55:40 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/etat-global-14-comment-la-blockchain-sait-qui-possede-quoi--2dfp</link>
      <guid>https://dev.to/amel_in_tech/etat-global-14-comment-la-blockchain-sait-qui-possede-quoi--2dfp</guid>
      <description>&lt;h2&gt;
  
  
  Qu’est-ce que l’état global ?
&lt;/h2&gt;

&lt;p&gt;La blockchain ne stocke pas seulement des transactions : elle maintient en permanence une grande mémoire partagée appelée l’état global (&lt;em&gt;global state&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;L’état global est la mémoire partagée d’une blockchain donnée (chaque blockchain possède son propre état global), à un instant T, et il est identique pour tous les nœuds du réseau.&lt;/p&gt;

&lt;h3&gt;
  
  
  Différence entre état global et transactions
&lt;/h3&gt;

&lt;p&gt;L’état global est le &lt;strong&gt;RÉSULTAT&lt;/strong&gt; de l’exécution des transactions, en clair :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les &lt;strong&gt;transactions&lt;/strong&gt; → l’historique (ce qui s’est passé)
Les transactions sont stockées dans les blocs de la blockchain.
Chaque bloc contient une liste de transactions ajoutées, des métadonnées et un lien vers le bloc précédent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💬 Exemple :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bloc 100 :
- Alice envoie 10 tokens à Bob
- Bob envoie 1 token à Charlie
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⇒ Anlaogye : Transactions = le film 🎬&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L’&lt;strong&gt;état global&lt;/strong&gt; → la situation actuelle (où on en est)
C’est une &lt;strong&gt;photo du résultat final&lt;/strong&gt; après l’exécution de toutes les transactions valides jusqu’à ce bloc.
L’état global sert de &lt;strong&gt;raccourci&lt;/strong&gt; et permet de dire : “Voilà où on en est maintenant”, sans tout recalculer depuis le début.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⇒ État global = la dernière image du film 📸&lt;/p&gt;

&lt;h3&gt;
  
  
  Lien entre transactions et état global — résumé rapide
&lt;/h3&gt;

&lt;p&gt;Demande → transaction (= instruction) → création de bloc (liste de transactions) → exécution des transactions du bloc par les nœuds → modification de l’état global.&lt;/p&gt;

&lt;p&gt;💡 Chaque nouveau bloc fait passer la blockchain d’un état global à un autre.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fldhqgpxnyz4k6vd6hbp1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fldhqgpxnyz4k6vd6hbp1.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Que contient l’état global ?
&lt;/h2&gt;

&lt;p&gt;L’état global est une liste de comptes avec, pour chacun :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;son solde (&lt;em&gt;balance&lt;/em&gt;) : ce que le compte possède.

&lt;ul&gt;
&lt;li&gt;crypto native (ETH, BNB…) : stockée directement dans l’état global,&lt;/li&gt;
&lt;li&gt;tokens : stockés dans les données d’un smart contract, mais visibles via le wallet.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;ses données (&lt;em&gt;data / storage&lt;/em&gt;) : informations stockées par un smart contract.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nonce (compteur de transactions) : combien de transactions un wallet a déjà envoyées.
⚠️ Les wallets (EOA) ont un nonce, pas vraiment les smart contracts.&lt;/li&gt;
&lt;li&gt;états, règles internes, …
💡 Ces données vivent &lt;strong&gt;dans l’état global&lt;/strong&gt;, à l’intérieur du compte smart contract.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;du code (uniquement pour les smart contracts).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;règles, fonctions, logique métier&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Cette mémoire répond à une seule question :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;« À l’instant T, qui possède quoi et dans quel état ? »&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5epm72psri5jpxu6try9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5epm72psri5jpxu6try9.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Instant gammaire :  &lt;strong&gt;État global ou état global ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;État global : quand on parle du concept ou qu’on le définit.&lt;/p&gt;

&lt;p&gt;état global : quand on parle de l’objet concret, de son utilisation ou de son contenu.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>blockchain</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Fonctionnement d’une blockchain 8/8 : Finalité &amp; confirmations</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Mon, 27 Apr 2026 07:49:52 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-88-finalite-confirmations-44h4</link>
      <guid>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-88-finalite-confirmations-44h4</guid>
      <description>&lt;p&gt;Quand la transaction est ajoutée dans un bloc, elle est visible dans la blockchain, mais on attend souvent plusieurs blocs supplémentaires pour être sûr qu’elle est définitive.&lt;/p&gt;

&lt;p&gt;→ Ce sont les “&lt;strong&gt;confirmations&lt;/strong&gt;”.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;💡 Exemple simple :&lt;/em&gt;&lt;br&gt;
Si une transaction est dans le bloc 100 et que la blockchain est rendue au bloc 105 → tu as 5 confirmations.&lt;/p&gt;

&lt;p&gt;Plus il y a de confirmations, plus la transaction est difficile à annuler.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv28pnuhg3d365510ohz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv28pnuhg3d365510ohz.png" alt=" " width="800" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>tutorial</category>
      <category>web3</category>
    </item>
    <item>
      <title>Fonctionnement d’une blockchain - Étape 7/8 : Propagation &amp; validation du bloc</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Sun, 26 Apr 2026 15:57:18 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-78-propagation-validation-du-bloc-16np</link>
      <guid>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-78-propagation-validation-du-bloc-16np</guid>
      <description>&lt;p&gt;À ce stade, un producteur de bloc (mineur &lt;br&gt;
PoW ou validateur PoS) a construit un bloc à partir de la mempool et a été choisi par le consensus (étape 6).&lt;/p&gt;

&lt;p&gt;Ce bloc n’est PAS encore officiel.&lt;/p&gt;

&lt;p&gt;Il doit maintenant être vérifié par tout le réseau via le processus suivant :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Propagation du bloc (broadcast du bloc)&lt;/strong&gt;&lt;br&gt;
Le producteur de bloc envoie le bloc complet aux autres nœuds du réseau exactement comme une transaction est diffusée plus tôt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Réception du bloc par les nœuds&lt;/strong&gt;&lt;br&gt;
Chaque nœud du réseau reçoit le bloc et vérifie lui-même, car la base dans la blockchain est qu’aucun nœud ne fait confiance au producteur du bloc, même s’il a “gagné”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Vérifications effectuées par chaque nœud&lt;/strong&gt;&lt;br&gt;
a. Vérification des signatures&lt;br&gt;
b. Recalcul de la racine de Merkle&lt;br&gt;
c. Vérification du hash et du lien avec le bloc précédent&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Décision du nœud : accepter ou rejeter le bloc&lt;/strong&gt;&lt;br&gt;
Après toutes ces vérifications, chaque nœud décide indépendamment :&lt;/p&gt;

&lt;p&gt;✅ Tout est correct → il accepte le bloc&lt;br&gt;
❌ Une seule erreur → il rejette le bloc&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Ajout à la copie locale de la blockchain&lt;/strong&gt;&lt;br&gt;
Si le bloc est valide :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;le nœud ajoute le bloc à SA copie de la blockchain&lt;/li&gt;
&lt;li&gt;il met à jour son état interne (soldes, tokens, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06cu26720pv7kv3nqhqp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06cu26720pv7kv3nqhqp.jpeg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>distributedsystems</category>
      <category>tutorial</category>
      <category>web3</category>
    </item>
    <item>
      <title>Fonctionnement d’une blockchain - Étape 6/8 : Mécanisme de consensus</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Sat, 25 Apr 2026 14:17:49 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-68-mecanisme-de-consensus-3igo</link>
      <guid>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-68-mecanisme-de-consensus-3igo</guid>
      <description>&lt;p&gt;Quand plusieurs producteurs proposent des blocs, le réseau doit s’accorder sur quel bloc ajouter maintenant.&lt;/p&gt;

&lt;p&gt;C’est ce qu’on appelle le consensus : c’est un protocole qui permet à tous les nœuds d’être d’accord sans chef.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preuve de travail&lt;/strong&gt; (PoW) : le bloc du mineur le plus rapide (et valide) est choisi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preuve d’enjeu&lt;/strong&gt; (PoS) : le bloc du validateur sélectionné est choisi, et d’autres validateurs confirment.&lt;/p&gt;

&lt;p&gt;Le consensus est ce qui garantit que :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tout le monde a la même version de la blockchain, &lt;/li&gt;
&lt;li&gt;aucun bloc frauduleux n’est ajouté.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gj9db87bpy53gdcq2gp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gj9db87bpy53gdcq2gp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>distributedsystems</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Fonctionnement d’une blockchain - Étape 5/8 : Lien “maillon -&gt; maillon”</title>
      <dc:creator>Amel In Tech</dc:creator>
      <pubDate>Thu, 23 Apr 2026 05:51:45 +0000</pubDate>
      <link>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-58-lien-maillon-maillon-55il</link>
      <guid>https://dev.to/amel_in_tech/fonctionnement-dune-blockchain-etape-58-lien-maillon-maillon-55il</guid>
      <description>&lt;p&gt;Chaque bloc &lt;strong&gt;pointe&lt;/strong&gt; (par hash) vers le &lt;strong&gt;bloc précédent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ce chaînage rend l’historique &lt;strong&gt;difficile à falsifier&lt;/strong&gt; car modifier un ancien bloc casserait tous les hashes suivants.&lt;/p&gt;

&lt;h3&gt;
  
  
  Qu’est-ce qu’un &lt;em&gt;hash&lt;/em&gt; ?
&lt;/h3&gt;

&lt;p&gt;Un &lt;strong&gt;hash&lt;/strong&gt; est une empreinte digitale unique créée à partir d’une information.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Une même donnée donne toujours le même hash
&lt;/li&gt;
&lt;li&gt;Une seule petite modification donne un hash complètement différent
&lt;/li&gt;
&lt;li&gt;Impossible de retrouver les données à partir du hash (fonction à sens unique)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chaque bloc contient :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;son propre hash
&lt;/li&gt;
&lt;li&gt;le hash du bloc précédent c'est ce qui crée une &lt;strong&gt;chaîne incassable&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjld0ead4hanw6dnv2grl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjld0ead4hanw6dnv2grl.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Comment un hash est créé ?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;On prend les données du bloc (transactions, date, racine Merkle, etc.)&lt;/li&gt;
&lt;li&gt;On les fait passer dans une &lt;strong&gt;fonction de hachage cryptographique&lt;/strong&gt; (ex : SHA-256 pour Bitcoin).&lt;/li&gt;
&lt;li&gt;On obtient une empreinte unique.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>computerscience</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
