Guide pour Solidity, base théorique.

Guide pour Solidity, base théorique.

Guide du debutant Solidity niveau theorique.

Web3Makers · 4 minute read

Guide Solidity debutants

Solidity est un langage de programmation de haut niveau orienté objet permettant de créer des contrats intelligents sur la blockchain qui automatisent les transactions.

Le langage a été créé par les participants au projet Ethereum lorsqu'il a été proposé en 2014. Ce langage est principalement utilisé pour faire des contrats intelligents sur la blockchain Ethereum.

Selon sa documentation, "Solidity est un langage à accolades. Il est influencé par C++, Python et JavaScript, et est conçu pour cibler la machine virtuelle Ethereum (EVM)."

Solidity est également considérée comme un dialecte de JavaScript. Cela implique que si vous connaissez JavaScript, apprendre Solidity devrait être simple. Avant d'en savoir plus sur Solidity, comprenons quelques termes de base de la blockchain.

Ethereum virtual machine :

La machine virtuel Ethereum (EVM) est l’environnement d'execution du contrat intelligent Ethereum.

Role : Assure la securite / permettre aux machines du monde entier d'executer des programmes.

Pourquoi cela a ete cree ? Pour servir d’environnement d'execution. Comme NodeJS pour Javascript.

Contrat intelligent (Smart contract)

Un contrat intelligent est un programme décentralisé qui répond aux événements en exécutant une logique métier.

L'échange d'argent, la prestation de services, le déverrouillage d'informations contrôlées par la gestion des droits numériques et d'autres formes de manipulation de données, telles que la modification du nom sur un titre de propriété, sont tous des résultats possibles de l'exécution d'un contrat intelligent. 

Les contrats intelligents sont souvent rédigés en Solidity. (Ce n'est pas la seule option cependant; exemple avec RUST pour la blockchain Solana)

Les langages de contrat intelligents comme Solidity ne peuvent pas être exécutés directement par la machine virtuelle Ethereum. Ils sont plutôt convertis en instructions machine de bas niveau appelées opcodes.

Maintenant nous avons :

  • Une idée de l'EVM et du Smart Contract.

Configuration de l'environnement

Avant d'installer Solidity, vous devez vous assurer que Node.js et NPM sont installés sur votre ordinateur.

Une fois que vous avez installé avec succès Node.js et NPM sur votre machine, vous pouvez procéder à l'installation du compilateur Solidity comme ci-dessous :

sudo npm install -g solc

La commande ci-dessus installera le Solcjs et le rendra disponible globalement dans tout le système.

Maintenant verifie qu'il est bien installe.

solcjs --version

Si tout se passe bien, vous voyez quelque chose de similaire à ci-dessous dans votre terminal.

0.8.9+commit.e5eed63a.Emscripten.clang

Vous pouvez également utiliser un éditeur en ligne appelé Remix IDE pour compiler et exécuter votre code Solidity.

Mot cle interdit car deja utiliser (ordre alphabetique) :

  • abstract / after / alias / apply / auto
  • case / catch / copyof
  • default / define
  • final
  • immutable / implements / inline
  • let
  • macro / match / mutable
  • null
  • of / override
  • partial / promise
  • reference / relocatable
  • sealed / sizeof / static / supports / switch
  • try / typedef / typeof
  • unchecked

Import Solidity

L'importation d'un fichier dans Solidity est similaire à JavaScript, pour importer un fichier, vous pouvez simplement écrire

import "file";

Tous les symboles globaux du "fichier" sont importés dans la portée globale(notion de scope a connaitre) actuelle par l'instruction ci-dessus. Mais si vous voulez créer un nouveau symbole global someName avec tous les symboles globaux de "file" en tant que membres, vous pouvez écrire

import * as someName from "file";

Commentaires

Tout comme les autres langages de programmation, Solidity prend en charge les commentaires sur une seule ligne et sur plusieurs lignes.

  • Commencez la ligne avec // pour inclure un commentaire sur une seule ligne.
  • /* commentaire sur plusieurs
  • lignes */ pour inclure un commentaire multiligne.
 // commentaire sur une ligne
 /*
   ici commentaire sur plusieurs lignes
  comme ca
  c'est aussi simple que ca
 */

Variables Solidity

Il existe principalement deux types de variables disponibles dans Solidity.

  • Variables locales (Local Variables)

    Le contexte d'une variable locale est contenu dans la fonction et ne peut pas être extrait de l'extérieur de celle-ci (Notion de Scope).

    Ce genre de variables sont généralement utilisées pour stocker des valeurs temporaires. Capture d’écran 2022-03-29 à 22.34.03

  • Variables d'état (State Variables)

    Les variables d'état stockent la valeur de manière permanente dans le stockage du contrat. 

    Chaque méthode doit avoir sa propre portée et les variables d'état doivent être déclarées en dehors de toute fonction définie.

Capture d’écran 2022-03-29 à 22.34.37

## Operateurs Solidity

Les operateurs font partie des bases de la programmation en general.
Solidity prend en charge 6 TYPES d’operateurs, voici une presentation des 3 premiers. 

## Opérateurs arithmétiques

pour effectuer des opérations mathématiques.

- + 
- -
- * (multiplication)
- / (division)
- % (Modulo)
- ++ ( incrementation de +1 )
- — ( Decrementation de -1 )

## Opérateurs relationnels

compare deux valeurs.

- = : egal
- ! = (attacher) : Inegal
- > : plus grand que ( A > B ;  A est plus grand que B)
- < :  plus petit que ( A < B ; A est plus petit que B)
- > = (attacher): superieur ou egal
- < = (attacher) : inferieur ou egal

## Opérateurs logiques

 combine deux ou plusieurs conditions.

- && (  ET logique : Retourne(return) vrai **si les 2 conditions sont vraies**, Retourne **faux si les deux conditions sont fausse**)
- || ( OU logique : Renvoie vrai si **une ou les deux conditions sont vraies** et f**ausses si les deux sont fausses**
- ! ( NON logique : renvoie **Vrai(true) si la condition n’est pas remplie** sinon Faux(false)

voici les trois autres :

## Opérateurs au niveau du bit
## Opérateurs d'affectation
## Opérateurs conditionnels

(Cet article est a la base une ressource en partie traduite pour mon apprentissage personnel, j'ai rajouter des informations supplementaires pour les nouveaux arrivant + traduction/explication du code)

Est-ce que cela vous a aider ?
general