Circle Internet Financial
Circle Internet Financial Logo

Oct 20, 2026

October 31, 2023

Introduction à Solidity et aux smart contracts web3

Ce que vous allez apprendre

Les smart contracts sont des programmes qui résident et s’exécutent sur une blockchain. Vous pouvez les considérer comme des contrats numériques auto-exécutoires dont les règles sont directement intégrées dans leur code.

Introduction à Solidity et aux smart contracts web3

Les smart contracts sont des programmes qui résident et s’exécutent sur une blockchain. Vous pouvez les considérer comme des contrats numériques auto-exécutoires dont les règles sont directement intégrées dans leur code

Les stablecoins (comme l’USDC de Circle) représentent une évolution de la monnaie : ils vous permettent de transférer des fonds presque instantanément, à un coût proche de zéro, partout dans le monde. Si vous souhaitez pérenniser votre infrastructure de paiement, vous devez comprendre et prendre en charge ces paiements numériques.

Alors, comment intégrer des monnaies numériques comme l’USDC dans votre pile de technologies ? Heureusement, avec quelques connaissances de base et les outils fournis par Circle, c’est non seulement possible, mais aussi simple.

Dans cet article, nous vous fournirons les informations nécessaires pour intégrer les monnaies numériques. Nous examinerons ce qu’est la blockchain, comment la blockchain Ethereum a lancé l’ère des smart contracts, le fonctionnement des smart contracts et du Solidity, et comment vous pouvez utiliser des stablecoins comme l’USDC pour faire progresser votre technologie de paiement.

Commençons par quelques bases.

Blockchain, monnaie numérique et Web3

Tout a commencé avec le Bitcoin en 2008, le premier système permettant le transfert de monnaie en pair à pair via Internet sans avoir besoin d’un tiers de confiance tel qu’une banque, une entreprise ou un gouvernement.

Cela a été rendu possible grâce à l’avancée technologique que nous connaissons aujourd’hui sous le nom de blockchain. Les blockchains peuvent être considérées comme des bases de données sans autorisation où aucune personne ou entreprise ne possède ou ne contrôle les données. Malgré cette décentralisation, la véracité des données est garantie. (Pour plus d’informations, voici un bon tutoriel.)

Le Bitcoin reste à l’avant-garde des blockchains publiques, mais il n’est utile que pour transférer du bitcoin. En raison de cette limitation, quelques développeurs ont décidé de créer une nouvelle blockchain dotée de capacités accrues : Ethereum. Considérez Ethereum comme un ordinateur décentralisé capable à la fois de transférer de la valeur entre utilisateurs (comme le Bitcoin) et d’exécuter des programmes tout en stockant des données.

Ces programmes qui s’exécutent sur Ethereum sont appelés smart contracts. Ils peuvent ressembler à du code que vous avez déjà vu ailleurs, mais ils présentent des différences importantes qui les rendent idéaux pour alimenter des applications décentralisées (dApps) et permettre la finance décentralisée (DeFi).

Que sont les smart contracts ?

Les smart contracts sont des programmes qui résident et s’exécutent sur une blockchain. Vous pouvez les considérer comme des contrats numériques auto-exécutoires dont les règles sont directement intégrées dans leur code. Ces contrats sont programmés pour exécuter et appliquer automatiquement les actions convenues lorsque des conditions prédéfinies sont remplies. Ce faisant, les smart contracts éliminent le besoin d’intermédiaires, tels que des avocats ou des institutions tierces, pour superviser ou faire respecter les accords et les règles.

La manière la plus simple de comprendre les smart contracts est d’utiliser l’analogie classique du distributeur automatique. Un distributeur automatique est programmé pour fournir certains produits à certains prix si un utilisateur interagit avec lui d’une manière spécifique (par exemple, en insérant de l’argent et en sélectionnant l’article souhaité). Vous n’avez pas besoin d’un tiers, comme un détaillant, pour agir en tant qu’intermédiaire entre les produits dans la machine et vous-même. En d’autres termes, en utilisant le distributeur automatique, vous avez supprimé le besoin d’un tiers.

La plateforme blockchain sur laquelle réside le smart contract fournit l’infrastructure nécessaire à son exécution. Dans le cas d’Ethereum (et de blockchains telles que Polygon et Avalanche), cette infrastructure est connue sous le nom d’Ethereum Virtual Machine (ou EVM).

Lorsqu’un smart contract est déployé sur une blockchain, il devient une partie de l’historique de cette blockchain. Le code et les données stockées dans le contrat deviennent également une partie de l’état global de la blockchain.

Pour garantir la transparence, la sécurité et la résistance à la falsification, les smart contracts sur la plupart des blockchains sont immuables. En d’autres termes, il est impossible de modifier le code d’un contrat une fois qu’il a été déployé. (Notez qu’il reste possible de modifier les données stockées dans le contrat via des fonctions permettant la modification desdites données.)

Bien que les smart contracts aient été introduits pour la première fois par l’informaticien et cryptographe Nick Szabo dans les années 1990, ils ne sont devenus courants qu’avec le lancement d’Ethereum.

Comment fonctionnent les smart contracts ?

Voici comment fonctionnent les smart contracts :

  • 1. Création : Un développeur écrit le code d’un smart contract, en spécifiant les règles, les conditions et les actions que le contrat doit exécuter. 2. Déploiement : Le code du smart contract est déployé sur une blockchain, devenant une partie permanente de l’historique de celle-ci. Le contrat se voit attribuer une adresse unique qui sert d’identifiant sur le réseau. Dans le cas des contrats sur Ethereum, un morceau de code appelé constructeur est exécuté. Cela ne se produit qu’une seule fois et ne peut plus jamais être invoqué. 3. Exécution : Une fois le contrat déployé, n’importe qui peut invoquer les fonctions publiques qu’il contient. Si les conditions spécifiées sont remplies, le code est exécuté et les changements d’état, le cas échéant, sont effectués.

Il est important de souligner que n’importe qui peut invoquer des fonctions publiques sur un smart contract et que les smart contracts sont immuables. Une fois qu’un smart contract est déployé, il est là pour toujours (du moins tant que la blockchain existe) et est accessible à tous.

Applications des smart contracts

Une immense majorité du Web3 est propulsée par des smart contracts, notamment :

  • 1. Stablecoins : Monnaies numériques conçues pour avoir une valeur stable (comme l’USDC de Circle). 2. Finance décentralisée : Plateformes de DEX, protocoles de prêt, mécanismes de staking et même loteries. 3. NFTs : Stocker et vérifier des actifs non fongibles ou NFT. 4. Chaîne d’approvisionnement : Suivre et vérifier le mouvement des marchandises, réduisant ainsi la fraude et augmentant la transparence. 5. Immobilier : Automatiser les transferts de propriété, les contrats de location et la gestion des titres. 6. Gaming : Implémenter des jeux où il est possible de posséder et d’échanger des actifs de jeu. 7. DAO : Créer des organisations autonomes décentralisées, ou DAO, et ainsi mener des votes, exécuter des décisions et permettre une gouvernance communautaire.

Introduction à Solidity

La plupart des blockchains disposent d’un langage de programmation personnalisé utilisé pour créer des smart contracts. Sur Ethereum et les blockchains compatibles EVM telles que Polygon, Avalanche et Arbitrum, ce langage est Solidity.

Solidity est un langage fortement typé qui s’inspire de JavaScript, Python, C++ et Java. Si vous connaissez l’un de ces langages, vous devriez trouver l’apprentissage de Solidity facile.

Voici quelques caractéristiques marquantes de Solidity :

  • 1. Orienté contrat : La conception de Solidity repose sur le concept de contrats, qui encapsulent le code et les données de l’application. Les contrats peuvent contenir des fonctions, des variables d’état et des événements. Ce qui se rapproche le plus des contrats Solidity sont les classes Java. 2. Types de données : Solidity prend en charge une gamme de types de données, notamment les entiers (uint256), les booléens (bool), les chaînes de caractères (string), les tableaux et les structures définies par l’utilisateur (struct). Comme pour d’autres langages fortement typés tels que le C++, chaque donnée doit être explicitement associée à un type de données. 3. Événements : Les contrats Solidity peuvent émettre des événements, qui servent de mécanisme de communication entre le contrat et les applications externes. Les événements permettent de notifier les systèmes externes d’occurrences importantes au sein du contrat (comme le transfert d’un NFT). 4. Héritage et modularité : Solidity prend en charge l’héritage, permettant aux développeurs de créer des contrats modulaires qui héritent des propriétés et des méthodes de contrats parents. Cela favorise la réutilisation et l’organisation du code. 5. Composabilité : Solidity vous permet également d’interagir avec n’importe quel contrat déjà déployé sur la blockchain. C’est sans doute sa fonctionnalité la plus puissante, vous permettant de construire sur ce qui existe déjà. 6. Mesures de sécurité : Solidity fournit des fonctionnalités telles que le contrôle d’accès, les spécificateurs de visibilité et les modificateurs pour garantir que les contrats sont exécutés en toute sécurité. 7. Écosystème de développement : Solidity est soutenu par un écosystème robuste d’outils de développement. Le compilateur Solidity convertit le code Solidity en bytecode pouvant être exécuté sur la blockchain. Les environnements de développement intégrés (IDE) et les frameworks de test comme Hardhat et Truffle facilitent l’écriture, le déploiement et le test des smart contracts. 8. Mises à niveau : Les contrats sur la blockchain sont immuables une fois déployés. Pour gérer les changements et les améliorations, les développeurs utilisent le versioning et des modèles de contrats proxy pour faciliter les mises à niveau des contrats tout en maintenant la compatibilité avec les systèmes existants.

Examinons ensuite quelques exemples de contrats afin que vous puissiez vous faire une idée du fonctionnement de Solidity.

Exemple 1 : Un contrat de vote simple

Exemple 1 : Un contrat de vote simple

Dans cet exemple, nous allons implémenter un système de vote. Il s’agit d’un cas d’utilisation courant pour la blockchain (bien qu’il s’agisse d’un exemple extrêmement simplifié). Ici, nous permettrons au public de voter pour un candidat, puis de vérifier le nombre de votes par candidat.

// SPDX-License-Identifier: MIT
// Define the version of solidity we’re using
pragma solidity ^0.8.0;
// Core code goes into the Contract
contract VotingContract {
    // Mapping to store the vote count for each candidate
    mapping (string => uint256) public votes;

    // Function to vote for a candidate
    function voteForCandidate(string memory candidate) public {
        // Increment the vote count for the candidate
        votes[candidate] += 1;
    }

    // Function to retrieve the vote count for a candidate
    function getVotesForCandidate(string memory candidate) public view returns (uint256) {
        return votes[candidate];
    }
}

Parcourons ce code étape par étape :

  • 1. Nous définissons la licence de ce contrat, ce qui est une pratique courante dans Ethereum. 2. Nous définissons la version de Solidity que nous utilisons. N’oubliez pas que nous ne pourrons pas la modifier ultérieurement, car le contrat est immuable. 3. Nous définissons un contrat, qui ressemble à une classe Java. C’est là que résident les données et la logique de notre application. 4. Nous définissons une variable d’état appelée votes qui est un mapping. Considérez les mappings comme des dictionnaires. Ce mapping particulier a des clés de type string et des valeurs de type entier. En fait, il stocke une liste de candidats et le nombre de votes qu’ils ont obtenus. 5. La fonction voteForCandidate peut être invoquée après le déploiement du contrat. Si vous appelez cette fonction avec un candidat comme paramètre, le nombre de votes pour ce candidat augmente de 1. 6. La fonction getVotesForCandidate peut également être invoquée publiquement. Il s’agit d’une fonction en lecture seule car elle ne modifie pas l’état. Par conséquent, la fonction est marquée comme view. Elle renvoie simplement le nombre de votes obtenus par le candidat demandé.

Exemple 2 : Un jeton simple

Examinons maintenant quelque chose d’un peu plus complexe. Dans cet exemple, nous allons créer un jeton fongible simple à partir de zéro. Une partie de la logique que vous voyez ici se retrouve également dans la norme ERC-20, qui est le protocole qui propulse tous les jetons fongibles sur Ethereum et les chaînes compatibles EVM, y compris l’USDC.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleToken {
    string public name = "Simple Token";
    string public symbol = "ST";
    uint8 public decimals = 18; // You can adjust the number of decimal places
    uint256 public totalSupply;
    mapping(address => uint256) public balances;

    // Create an initial supply of tokens
    constructor(uint256 initialSupply) {
        totalSupply = initialSupply * 10 ** uint256(decimals);
        balances[msg.sender] = totalSupply;
    }

    // Transfer tokens 
    function transfer(address recipient, uint256 amount) public {
        require(recipient != address(0), "Transfer to the zero address is not allowed");
        require(balances[msg.sender] >= amount, "Insufficient balance");

        balances[msg.sender] -= amount;
        balances[recipient] += amount;
    }

   // Check balance of tokens
     function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
}

Exemple de code pour la création d’un nouveau portefeuille

Bien que plus complexe que son prédécesseur, ce code devrait rester assez simple à comprendre. Quelques points à noter :

  • 1. Nous initialisons des variables pour stocker le nom, le symbole, les décimales et l’offre totale de notre jeton. Notez que, contrairement à la plupart des autres langages de programmation, Solidity ne prend pas en charge les nombres à virgule flottante. La solution consiste à créer une petite unité de votre jeton (généralement 10^-18). C’est similaire au wei, qui représente 1/10^18 d’un ETH. 2. Nous disposons d’un mapping qui stocke les soldes de notre jeton disponibles pour toutes les adresses. 3. Nous avons un constructeur qui crée une offre initiale de pièces et les envoie au déployeur du contrat (c’est-à-dire vous). Notez que cela n’est effectué qu’une seule fois : lors du déploiement du contrat. 4. La fonction transferTokens permet à un utilisateur de transférer des jetons d’un portefeuille à un autre. Notez l’utilisation d’instructions require pour appliquer certaines règles, comme celle imposant à l’expéditeur de disposer d’un solde suffisant pour rendre le transfert possible. 5. Enfin, la fonction balanceOf nous indique le nombre de jetons appartenant à une adresse particulière.

Circle et l’USDC

Vous disposez désormais d’une base solide sur ce qu’il faut savoir pour intégrer des monnaies numériques à votre pile de technologies. Et lorsque vous entendrez dire que l’USDC de Circle est un stablecoin (ou jeton) implémenté sous forme de smart contract, vous saurez ce que cela signifie ! L’USDC n’est pas seulement un stablecoin sur Ethereum (et d’autres blockchains telles qu’Algorand, Arbitrum, Flow et Solana), il est également open-source, composable et accessible à tous pour le développement. Vous pouvez consulter le code source dans le dépôt GitHub.

Pour en savoir plus sur l’intégration de l’USDC dans vos applications, consultez la documentation et les cas d’utilisation sur le site Web de Circle. Vous pouvez également

New call-to-action

*L’interface de programmation d’application (« API ») des Programmable Wallets est proposée par Circle Technology Services, LLC (« CTS »). CTS n’est pas une société de services financiers réglementée et l’API ne constitue pas un conseil financier, en investissement, fiscal, juridique, réglementaire, comptable, commercial ou autre. Pour plus de détails, veuillez cliquer ici pour consulter les conditions d’utilisation de Circle Developer.

Articles connexes

Circle Gateway prend désormais en charge cirBTC et EURC

Circle Gateway prend désormais en charge cirBTC et EURC

October 23, 2026
Circle Gateway : nouvelle adresse de pré-mint pour l’EURC sur Solana

Circle Gateway : nouvelle adresse de pré-mint pour l’EURC sur Solana

October 23, 2026
Circle Match : obtenez une remise lors de vos mints, payez moins lors de vos burns

Circle Match : obtenez une remise lors de vos mints, payez moins lors de vos burns

October 22, 2026
Blog
Introduction à Solidity et aux smart contracts web3
introduction-to-solidity-and-web3-smart-contracts
October 31, 2023
Les smart contracts sont des programmes qui résident et s’exécutent sur une blockchain. Vous pouvez les considérer comme des contrats numériques auto-exécutoires dont les règles sont directement intégrées dans leur code.
Développeur
USDC
Circle Wallets
Plateforme de contrats intelligents
Didacticiel