RICM5 2018 2019 - UGAChain - Smart Contract

= Smart Contract =

Définition
Les « Smart Contracts » sont des contrats qui s’appuient sur la technologie Blockchain pour rendre infalsifiables leurs termes et les conditions de leurs exécutions.

'''Qu’est-ce qui rend un « Smart Contract » intelligent ? ''' Alors qu’un contrat légal traditionnel définit les règles d’un accord entre plusieurs parties, un Smart Contract va plus loin et fige ces règles dans une Blockchain tout en assurant le transfert d’un actif – quel qu’il soit – lorsque les conditions contractuelles se vérifient.

Références : https://www.lemagit.fr/conseil/Blockchain-quest-ce-quun-Smart-Contract-et-a-quoi-ca-sert

Un Smart Contrat est essentiellement la logique business utilisée dans une blockchain.

Par exemple un smart contrat pourrait mettre à jour la balance d'un compte bancaire en assurant que la somme d'argent nécessaire à débit est bien présente sur un compte avant d'effectuer ce dernier.

Références : https://www.hyperledger.org/wp-content/uploads/2018/04/Hyperledger_Arch_WG_Paper_2_SmartContracts.pdf

= Catégories de Smart Contract =

Les Smart Contracts sont la "business logic" des Blockchain. Ils sont classés dans deux catégories suivant le cas d'usage :


 * On-chain Smart Contracts
 * Installed Smart Contracts

On-chain Smart Contracts
Ils sont exécutés quand une transaction survient dans la blockchain et ils sont stockés au coeur même de cette dernière.

Installed Smart Contracts
Ils sont exécutés avant que les transactions n'arrivent au "ledger" ou avant le lancement de l'application (le réseau).

''Références : https://hackernoon.com/how-are-smart-contracts-executed-in-hyperledger-57efebf03f12 ''

= Smart Contract et Hyperledger =

Les Smart Contract sont au coeur de l'implémentation des Blockchain. La plateforme open source Hyperledger facilite l'implémentation des Smart Contract, et donc la "business logic" qui régit le fonctionnement des Blockchain.

Exécution d'un Smart Contract au sein d'Hyperledger
Tout commence avec un input block et le contract interpreter où l'ID du contrat est envoyé pour une requête de transaction. Si la requête est jugée valide par le Smart Contract, celle-ci est envoyée au service de concensus où le Smart Contract va déterminer la validité de la transaction et ajouter cette dernière à la blockchain sous ladite condition de validité. La vérification de la transaction comprend une vérification syntaxique (triviale) et logique (qui peut s'avérer plus compliquée).

En résumé :
 * Vérification de la requête
 * Vérification de la transaction
 * Éventuel ajout de la transaction à la blockchain



Références : https://hackernoon.com/how-are-smart-contracts-executed-in-hyperledger-57efebf03f12

Description plus précise et détaillée ici

Interaction entre les Smart Contracts et les composants Hyperledger
La figure suivante montre comment les Smart Contracts interagissent avec les différentes couches architecturales de Hyperledger.



Références : https://www.hyperledger.org/wp-content/uploads/2018/04/Hyperledger_Arch_WG_Paper_2_SmartContracts.pdf