Langage de programmation
Chaque appareil informatique a un ensemble d'instructions qui peuvent être utilisées pour effectuer des opérations. Les instructions permettent d'effectuer des calculs arithmétiques ou logiques, déplacer ou copier des données, ou bifurquer vers l'exécution d'autres instructions. Ces instructions sont enregistrées sous forme de séquences de bits, où chaque séquence correspond au code de l'opération à effectuer et aux opérandes, c'est-à-dire aux données concernées ; c'est le langage machine.
Contrat intelligent
Les principales limites à ce qui peut être fait avec des contrats intelligents est qu'un programme d'ordinateur ne peut pas facilement et de manière fiable dire ce qu'il se passe dans le monde physique ou valider qui dit la vérité. Par exemple vérifier si un paiement de Bitcoin a été fait est une tâche simple et appropriée pour un programme d'ordinateur, mais dans la plupart des contrats et des situations du monde réel, l'ordinateur n'a pas la possibilité de vérifier que la contrepartie, le produit acheté en l'occurrence, a vraiment été livré ou qu'un pigiste a bien rempli les exigences énoncées par son employeur. L'exécution d'un contrat intelligent n'est efficace que si ses données d'entrée sont valables et il peut être difficile de trouver des entrées suffisantes pour valider ce contrat. Une solution à ce problème pourrait être le recours à des services d'oracles de blockchain ou fournisseurs de services en ligne dont le travail consiste à diffuser des données qui peuvent être utilisées comme données d'entrée pour les contrats intelligents. Une machine à oracle peut par exemple diffuser de nouvelles entrées sur un registre de décès, pour être utilisées par des contrats intelligents dans l'exécution des testaments ou diffuser les résultats d'un match de football, pour être utilisés dans le règlement des paris de jeu.