Bonjour, Habr! Je vous présente la traduction de l'article "
Un examen plus approfondi des différentes plateformes de contrats intelligents ".
Nous vivons à une époque de contrats intelligents. Alors que Bitcoin nous a montré que le système de paiement peut exister dans un réseau peer-to-peer décentralisé, c'est Ethereum qui a ouvert la boîte de Pandora de la blockchain de deuxième génération, et les gens ont finalement vu le vrai potentiel des applications distribuées (Dapps) et des contrats intelligents.
Dans cet article, nous examinerons l'une des nouvelles plateformes de contrat intelligent Cardano et verrons quelle est sa différence.
Avant de faire cela, posons-nous une question.
Que sont les contrats intelligents?
Les contrats intelligents sont des contrats automatisés. Ils s'exécutent automatiquement avec des instructions spécifiques écrites dans un langage de programmation qui sont exécutées lorsque certaines conditions sont remplies.
Quelles propriétés des contrats intelligents satisferont aux conditions d'utilisation dans les registres distribués?
Tout ce qui fonctionne sur la blockchain doit être inchangé et capable de fonctionner sur plusieurs nœuds sans compromettre l'intégrité de l'état du système. Par conséquent, la fonctionnalité d'un contrat intelligent devrait être de trois choses:
- Déterminisme
- Capacité à terminer à temps
- isolementCaractéristique # 1: déterminisme
Un programme est déterministe si à chaque fois il donne la même sortie à une entrée donnée. Par exemple, Si 3 + 1 = 4, alors 3 + 1 sera toujours 4. Par conséquent, lorsqu'un programme produit le même ensemble de données d'entrée sur différents ordinateurs, le programme est appelé déterministe.
Il existe différents points où un programme peut fonctionner de manière non déterministe:
- appeler une fonction non déterministe
- utilisation de données non déterministes
- appel dynamique, puisque la fonction ou le programme appelé n'est déterminé qu'au moment de l'exécution, l'appel lui-même n'est pas déterministe.
Fonction # 2: Capacité à terminer à temps
En logique mathématique, nous avons une erreur appelée «problème d'arrêt». Elle prétend qu'il n'y a aucun moyen de savoir si un programme donné peut remplir sa fonction sur une période de temps. En 1936, Alan Turing a prouvé en utilisant le problème diagonal de Cantor qu'il n'y avait aucun moyen de savoir si un programme donné pouvait terminer son travail à temps ou non ...
C'est évidemment un problème avec les contrats intelligents car les contrats, par définition, doivent pouvoir être terminés à temps. Il existe plusieurs façons de mettre fin à un contrat de l'extérieur et d'éviter d'entrer dans un cycle sans fin de contrats épuisants en ressources:
- Turing incomplétude : une fonctionnalité limitée ne permettra pas de sauts et / ou de cycles. Par conséquent, un contrat intelligent ne pourra pas entrer dans une boucle infinie.
- Mesure des étapes et du coût : le programme peut simplement suivre le nombre de commandes terminées, puis terminer le travail après avoir terminé un certain nombre d'étapes. Une autre méthode est un compteur. Ici, les contrats sont prépayés. Chaque instruction nécessite un certain montant. Si les frais payés dépassent les frais payés d'avance, le contrat est résilié.
- Minuterie : si l'exécution du contrat ne rentre pas dans un certain délai, il est alors résilié de force.
Fonction n ° 3: isolation
Dans la blockchain, chaque participant peut télécharger un contrat intelligent. Cependant, les contrats peuvent, sciemment et inconsciemment, contenir des virus et des erreurs.
Si le contrat n'est pas isolé, cela peut perturber le fonctionnement de l'ensemble du système. Par conséquent, il est très important que le contrat soit isolé afin de sauver l'ensemble de l'écosystème de toute conséquence négative. En règle générale, les contrats intelligents sont exécutés à l'aide de l'un des deux systèmes:
- Machines virtuelles : (Ethereum et Neo)
- Docker : (Tissu)
Comparons ces deux et déterminons ce qui crée le meilleur écosystème. Pour simplifier, nous allons comparer Ethereum (machine virtuelle) avec Fabric (Docker).
Machines virtuelles | Docker |
---|
Les contrats contiennent des fonctions non déterministes et les données sont limitées aux informations contenues dans la blockchain. De plus, les appels dynamiques peuvent être de nature non déterministe. Les données disponibles sont déterministes | En raison des caractéristiques de conception de Docker, le système dépend des utilisateurs qui créent des contrats déterministes. Pas la meilleure solution |
Ethereum utilise le «Cost Meter» pour terminer le contrat. Chaque étape du contrat coûte du «gaz» et dès que le coût d'exécution dépasse le montant payé d'avance, l'exécution est terminée. | Le tissu utilise une minuterie. Étant donné que différents nœuds peuvent avoir des temporisateurs différents en raison de capacités de calcul différentes, il existe un risque de rupture du processus de consensus. |
Bonnes propriétés isolantes | L'isolement est déterminé par l'écosystème docker (isolation insuffisante) |
Ainsi, les machines virtuelles offrent un meilleur déterminisme, achèvement et isolation de l'environnement pour les contrats intelligents.
Nous avons examiné certaines caractéristiques de la mise en œuvre des contrats intelligents.
Je dois dire que les contrats intelligents deviennent une partie intégrante et une composante nécessaire des applications distribuées modernes.
Voici quelques plateformes de blockchain qui offrent des fonctionnalités de contrat intelligent:
- Ethereum
- Eos
- Stellaire
- Cardano
- Neo
- Tissu Hyperledger
- Ondulation
- Vagues
- Plateforme Ergo
Dans les articles suivants, nous examinerons de plus près les mécanismes de contrat intelligent de certaines de ces plateformes.