Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Solidity — Wikipédia
Solidity — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Solidity
Logo.

Date de première version 2014Voir et modifier les données sur Wikidata
Dernière version 0.8.33 (18 décembre 2025)[1]Voir et modifier les données sur Wikidata
Licence Licence publique générale GNU version 3[2]Voir et modifier les données sur Wikidata
Site web soliditylang.orgVoir et modifier les données sur Wikidata
modifier 

Solidity est un langage de programmation orienté objet dédié à l'écriture de contrats intelligents[3]. Il est utilisé pour implémenter des smartcontrat sur diverses blockchains, notamment Ethereum. Il a été développé par Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai et plusieurs anciens contributeurs principaux d'Ethereum pour permettre l'écriture de contrats intelligents sur des plateformes de blockchain telles qu'Ethereum[4].

Historique

[modifier | modifier le code]

Solidity a été initialement proposée en août 2014 par Gavin Wood[5],[6] ; le langage a ensuite été développé par l'équipe Solidity du projet Ethereum, dirigée par Christian Reitwiessner.

À l'heure actuelle, Solidity est le principal langage sur Ethereum ainsi que sur d'autres blockchains privées fonctionnant sur des plateformes en concurrence avec Ethereum, telles que Monax et sa blockchain Hyperledger Burrow, qui utilise Tendermint pour le consensus. SWIFT a déployé une preuve de concept à l'aide de Solidity exécuté sur Burrow. Un chercheur de l'université Cornell a déclaré que Solidity était en partie responsable du piratage de The DAO en 2016. Il a déclaré : « ce n'était en fait pas une faille ou un exploit dans le contrat DAO lui-même : techniquement, la machine virtuelle Ethereum (EVM) fonctionnait comme prévu, mais Solidity introduisait des failles de sécurité dans les contrats qui avaient échappé à la communauté, mais aussi aux concepteurs du langage eux-mêmes. » En effet, des contraintes propres à l'EVM, telles que l'impossibilité de mettre à jour un contrat intelligent (à moins d'en déployer un nouveau), ou l'absence de virgule flottante intégrée peuvent rendre certaines failles très difficiles à trouver et à corriger.

Description

[modifier | modifier le code]

Solidity est un langage de programmation de type statique conçu pour développer des contrats intelligents qui s'exécutent sur l'EVM (Ethereum Virtual Machine)[7],[8]. Solidity est compilé en bytecode lui-même exécutable sur l'EVM. Grâce à Solidity, les développeurs sont en mesure d'écrire des applications implémentant une logique commerciale s’exécutant de manière autonome au travers des contrats intelligents, laissant une trace de transactions non répudiables et faisant autorité[9]. Écrire des contrats intelligents dans des langages spécifiques aux contrats intelligents tels que Solidity est considéré comme facile (en apparence pour ceux qui ont déjà des compétences en programmation)[10].

Exemple de programme Solidity[11],[12] :

pragma solidity >=0.5.0 <0.7.0;

contract Coin {
    // Le mot-clé "public" rend les variables
    // accessibles depuis d'autres contrats
    address public minter;
    mapping (address => uint) public balances;
    mapping (address => mapping (address => uint256)) public allowed;

    // Les événements permettent aux clients de réagir à des
    // changements spécifiques du contrat que vous déclarez
    event Transfer (address from, address to, uint amount);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event MintingRightTransferred(address indexed oldMinter, address indexed newMinter);

    string public symbol = "WIKI";
    string public name = "WikiArticleToken";
    uint256 public totalSupply;

    // Le code du constructeur est uniquement exécuté
    // lorsque le contrat est créé
    constructor() public {
        minter = msg.sender;
    }

    // Envoie un montant de pièces nouvellement créées à une adresse
    // Peut uniquement être appelé par le créateur du contrat
    function mint(address receiver, uint amount) public {
        require(msg.sender == minter);
        require(amount <= 2**256-1); // soyez conscient des montants élevés car il existe des débordements
        balances[receiver] += amount;
        totalSupply += amount;
        emit Transfer(address(0), receiver, amount);
    }

    // Envoie un montant de pièces existantes
    // de tout appelant à une adresse
    function transfer(address receiver, uint amount) public {
        require(amount <= balances[msg.sender], "Solde insuffisant.");
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Transfer(msg.sender, receiver, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public returns (bool success) {
        require((allowed[from][msg.sender]||(from == msg.sender)) >= amount, "Vous n'êtes pas autorisé à dépenser ce montant");
        require(amount <= balances[from], "Solde insuffisant");
        allowed[from][msg.sender] -= amount;
        balances[from] -= amount;
        balances[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
		return allowed[tokenOwner][spender];
    }

    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    function balanceOf(address guy) public view returns (uint256 balance) {
        return balances[guy];
    }

    function transferMinterRight(address _newMinter) public {
        require(msg.sender == minter);
        emit MintingRightTransferred(minter, _newMinter);
        minter = _newMinter;
    }
}

Disponibilité de la plateforme de développement

[modifier | modifier le code]
  • Microsoft Visual Studio[réf. nécessaire]
  • Code Microsoft Visual Studio[13]
  • ConsenSys Enterprise[8]
  • Tendermint sur Microsoft Azure[réf. nécessaire]
  • ErisDB sur AWS[réf. nécessaire]
  • Environnement web Remix

Plateformes Blockchain

[modifier | modifier le code]

Solidity est disponible sur:

  • Ethereum
  • Ethereum Classic
  • Tendermint et ErisDB (une version de Tendermint)[réf. nécessaire]
  • Contrepartie (qui fonctionne sur Bitcoin )[réf. nécessaire]
  • Tron
  • Binance Smart Chain

Voir aussi

[modifier | modifier le code]

Vyper, un autre langage destiné à la creation de smartcontrat sur la machine virtuelle Ethereum.

Références

[modifier | modifier le code]
  1. ↑ a et b « Release 0.8.33 », 18 décembre 2025 (consulté le 19 décembre 2025)
  2. ↑ « https://github.com/ethereum/solidity/blob/develop/LICENSE.txt » (consulté le 30 mars 2023)
  3. ↑ (en) Afshar, Evangelist et Salesforce, « Ethereum Is The Second Most Valuable Digital Currency, Behind Bitcoin », HuffPost, 17 juillet 2017 (consulté le 10 avril 2019)
  4. ↑ « List of contributors »
  5. ↑ Benoit Schweblin, « StackEdit Viewer », stackedit.io
  6. ↑ (en) « Blockchain and big data worth watching in the coming year », sur International Business Times, 20 décembre 2016 (consulté le 28 septembre 2017)
  7. ↑ (en-US) « Hyperledger Fabric Tutorial - Create a blockchain app for loyalty points », IBM Developer (consulté le 10 avril 2019)
  8. ↑ a et b Allison, « Microsoft adds Ethereum language Solidity to Visual Studio », International Business Times, 30 mars 2016 (consulté le 11 mai 2016)
  9. ↑ Allison, « Microsoft adds Ethereum language Solidity to Visual Studio », International Business Times, 30 mars 2016 (consulté le 11 mai 2016)
  10. ↑ William Mougayar, The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology, Wiley Publishing, 26 avril 2016 (ISBN 978-1119300311, lire en ligne), p. 58
  11. ↑ « Subcurrency Example from the Solidity documentation »
  12. ↑ (en) Karthikeyan Schneier, Antoine Schneier, Cedric Bhargavan, Anitha Delignat-Lavaud, Gollamudi Fournet, Bruce Schneier, Nadim Rastogi, Aseem Sibut-Pinote, Thomas Rastogi1, Nikhil Swamy et Santiago Zanella-Beguelin, « Short Paper: Formal Verification of Smart Contracts », Microsoft Research, Institut national de recherche en informatique et en automatique, université Harvard,‎ 27 août 2016 (lire en ligne [archive du 27 août 2016])
  13. ↑ (en-US) PatAltimore, « Use Visual Studio Code to connect to Azure Blockchain Service - Azure Blockchain », docs.microsoft.com (consulté le 27 mars 2020)
  • icône décorative Portail de l’informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Solidity&oldid=220609553 ».
Catégorie :
  • Programmation orientée objet
Catégories cachées :
  • Page utilisant P571
  • Page utilisant P348
  • Page utilisant P275
  • Page utilisant P856
  • Article utilisant une Infobox
  • Article à référence nécessaire
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id