Un #SmartContract ou "contrat intelligent" est un programme informatique qui s'exécute sur toute #Blockchain compatible, et nous allons ici voir l'exemple d' #Ethereum, la plus célèbre et pionnière.
Bonne lecture 😇
La notion de Smart Contract a été théorisée et définie pour la première fois par Nick Szabo en 1994.
Il la définit comme "un protocole de transaction informatisé qui exécute automatiquement les termes d’un contrat.
Les objectifs généraux ...
... sont de satisfaire aux conditions contractuelles courantes
(modalités de paiement, privilèges, confidentialité, exécution),
de minimiser les erreurs tant malveillantes qu’accidentelles et de minimiser le besoin d’intermédiaires fiables."
Ce programme informatique matérialise un accord entre plusieurs parties et permet d'effectuer des transactions automatisées selon des conditions pré-établies.
Nul besoin d'une quelconque autorité centralisée ou d'un tiers de confiance.
C'est pour cette raison que l'on peut parfois lire "code is law", ce qui signifie que les intermédiaires pourront à terme être remplacés par de simples lignes de codes, à conditions que celles-ci soient éprouvées. De cette manière, aucune corruption possible car le code fait foi.
De plus, les SM sont permissionless, distribués, publics et immuables, ce qui rend leur utilisation particulièrement fiable, à condition que le contrat ne présente aucune faille, que ce soit involontairement ou pour faire office de "back-door".
La plupart des SM sont écrits dans le langage de programmation #Solidity, créé par @gavofyork, co-fondateur d'Ethereum et fondateur du projet @Polkadot.
@solidity_lang a été influencé par C++ Python et JavaScript.
(Il est également possible d'écrire des SM en Vyper @vyperlang)
Un SM est composé de fonctions (son code) et de données (son "state"), situés sur une adresse spécifique de la #Blockchain.
Les SM sont un type de compte #Ethereum à part entière, ils peuvent contenir des fonds et effectuer des transactions à travers le réseau.
Ils ne sont cependant pas régis par des utilisateurs mais uniquement déployés sur le réseau et s'exécutent sur l'Ethereum Virtual Machine (EVM).
Un SM peut également être régi par un "multisig", c'est à dire appartenir à plusieurs personnes et nécessitant l'accord d'un pourcentage défini des signataires pour effectuer certaines transactions. Ce mécanisme permet d'établir une meilleure confiance pour les utilisateurs.
⚠️ Attention cependant, les Smart Contracts ne sont en aucun cas comparables à des wallets, un wallet étant uniquement la passerelle entre un compte possédé par un utilisateur et la Blockchain, lequel permet d'effectuer des transactions via ses clés publiques et privées.
Les SM sont parfois comparés à des API publics dans la mesure où la fonction d'un contrat peut être appelée à tout moment, que cela soit par un utilisateur ou encore par un autre contrat. Un contrat peut même déployer un autre contrat !
Un SM présente toutefois des limites, comme de ne pas avoir accès à certaines "real world informations", tout simplement car il ne peut pas effectuer de requête HTTP. C'est là qu'interviennent les oracles, dont le plus fiable est à ce jour @chainlinkdata.chain.link
L'objectif d'un oracle va donc être d'aller chercher une information située "off-chain" pour qu'elle soit utilisée "on-chain", autrement dit sur la blockchain. Mais c'est un sujet qui mérite un thread à part entière 🙃
Autre caractéristique des SM: leur taille ne peut excéder 24KB. Au delà, le contrat ne pourra pas être déployé. Cela signifie que chaque contrat a un nombre de fonctionnalités limitées. Cette limite a été mise en place afin d'empêcher les denial of service attacks (DOS)
Ainsi se termine ce thread, n'hésitez pas à le compléter si j'ai oublié des éléments, ou me demander si certains points ne sont pas clairs.
Comme d'habitude les partages sont appréciés pour me motiver à créer du contenu et que les FR puissent en bénéficier ❤️
• • •
Missing some Tweet in this thread? You can try to
force a refresh
[THREAD] Qu'est ce que le Gas ? ⛽️
En temps qu'adeptes de la DeFi, vous avez très certainement déjà payé des "Frais de gas" pour effectuer votre transaction / interaction sur la Blockchain Ethereum (ou autre).
Je reviens sur ce concept pour qu'il soit mieux compris par chacun.
Le Gas est l'unité de mesure qui exprime l'effort de calcul nécessaire à la réalisation d'une action sur la Blockchain, puis l'ajout de cette transaction sur le registre décentralisé. Il faut comprendre que chaque opération est réalisée grâce à une transaction (Tx), laquelle est
elle même effectuée grâce au gas.
Chaque type d'action nécessite un coût en gas + ou - élevé selon l'effort de calcul demandé.(gasLimit)
Par ex certains smart contracts complexes effectuent à eux seuls de multiples Tx, ce qui nécessite une quantité de gas significative.