Brevet FR3134638A1 — publié le 20231020

Procédé de développement d’un premier programme d’ordinateur (111) pour un véhicule automobile dans une chaine de blocs (1110), la chaîne de blocs (1110) comprenant un module d’exécution décentralisé (114), le procédé de développement étant caractérisé en ce qu’il comporte les étapes suivantes : Réception d’une instruction d’écriture du premier programme d’ordinateur (111) dans la chaine de blocs (1110), le premier programme d’ordinateur (111) étant configuré pour produire une donnée de sortie à partir d’une donnée d’entrée, Réception d’une instruction d’écriture d’une donnée de test (112) dans la chaine de blocs (1110), Réception d’une instruction de lancement d’une exécution du premier programme d’ordinateur (111), avec pour donnée d’entrée du premier programme d’ordinateur (111), la donnée de test, le lancement étant mis en œuvre par le module d’exécution centralisé (114), Mémorisation de la donnée de sortie (113) dans la chaine de blocs (1110). Figure pour l’abrégé : figure 1 Procédé de développement d’un programme d’ordinateur sur blockchain pour véhicules automobiles et dispositif associé L’invention concerne un procédé de développement d’un programme d’ordinateur pour véhicule automobile. Il existe un besoin de faciliter le développement collaboratif d’applications, pour véhicules automobiles, sécurisé et comprenant un traçage des écritures, des tests et des exécutions. Dans ce but, l’invention concerne un procédé de développement d’un premier programme d’ordinateur pour un véhicule automobile dans une chaine de blocs (appelé en Anglais « blockchain », telle que défini par exemple dans la norme ISO 22739:202), la chaîne de bloc comprenant un module d’exécution décentralisé, le procédé de développement étant caractérisé en ce qu’il comporte les étapes suivantes : Réception d’une instruction d’écriture du premier programme d’ordinateur dans la chaine de blocs, le premier programme d’ordinateur étant configuré pour produire une donnée de résultat à partir d’une donnée d’entrée (et donc, le premier programme d’ordinateur est mémorisé ou écrit dans la chaine de blocs à cette étape), Réception d’une instruction d’écriture d’une donnée de test dans la chaine de blocs (et donc, la donnée de test est mémorisée ou écrite dans la chaine de blocs à cette étape), Réception d’une instruction de lancement d’une exécution du premier programme d’ordinateur, avec pour donnée d’entrée du premier programme d’ordinateur, la donnée de test (ainsi donc, le programme d’ordinateur est exécuté durant cette étape), le lancement étant mis en œuvre par le module d’exécution centralisé (ainsi donc, le lancement du programme d’ordinateur est exécuté durant cette étape par le module d’exécution centralisé), Mémorisation de la donnée de sortie dans la chaine de blocs. L’invention permet ainsi de développer un programme d’ordinateur, de manière collaborative et sécurisée, avec un traçage des opérations effectuées, notamment des tests du programme d’ordinateur. Un programme d’ordinateur pour un véhicule automobile est un programme d’ordinateur destiné à être mis en œuvre dans un processeur compris dans un véhicule automobile, éventuellement après optimisation, traduction, compilation ou correction du programme d’ordinateur (et le procédé de développement peut comprendre l’une de ces étapes ou toutes ces étapes). Le premier programme d’ordinateur peut être un code source, c’est-à-dire sous forme d’un fichier texte. Une chaine de blocs est apte à recevoir une instruction appelée aussi transaction. Une instruction peut être une instruction d’écriture d’une donnée dans la chaine de blocs ou une instruction de lancement d’un programme mémorisé dans la chaine de blocs. Ecrire ou mémoriser une donnée dans une chaine de blocs consiste à écrire dans un bloc de la chaine de blocs (à l’aide d’un processeur électronique). Un bloc d’une chaine de blocs comprend par exemple les éléments suivants : les données écrites sur réception d’une instruction d’écriture, une somme de contrôle de la chaine de blocs utilisée comme identifiant, une somme de contrôle du bloc précédent et une preuve de travail. Les sommes de contrôle sont par exemple de type dit « SHA-256 » et conformes au standard dit « FIPS 180-4 ». La chaine de blocs est mémorisée sur une pluralité d’ordinateurs. Les sommes de contrôles sont préférentiellement signées à partir d’une clef cryptographiques privée. Selon un mode de réalisation, le module d’exécution comprend un script exécutable par une machine virtuelle. Par exemple, le script exécutable est apte à compiler le premier programme d’ordinateur (ou à commander sa compilation) avant de l’exécuter. Le procédé de développement peut comprendre en outre les étapes suivantes : Réception d’une instruction d’écriture d’une donnée de résultat attendu dans la chaine de blocs (et donc, la donnée de résultat attendue est écrite ou mémorisée dans la chaine de blocs à cette étape), Réception d’une instruction de lancement d’une comparaison entre la donnée de sortie et la donnée de résultat attendu, la comparaison produisant un résultat de comparaison (et donc la comparaison est réalisée à cette étape), Mémorisation du résultat de la comparaison dans la chaine de blocs. Selon un mode de réalisation, le premier programme d’ordinateur est apte à mettre en œuvre une au moins de taches suivantes : Localisation géographique du véhicule automobile, Reconnaissance de scène de l’environnement du véhicule automobile, Détermination automatisée d’une trajectoire du véhicule automobile, Suivi d’une trajectoire du véhicule automobile. L’invention concerne également un deuxième programme d’ordinateur comprenant des instructions, exécutables par un microprocesseur ou un microcontroller, pour la mise en œuvre du procédé selon l’invention. Le procédé selon l’invention est par exemple mis en œuvre par un dispositif électronique d’aide à la conduite. L’invention concerne donc aussi un dispositif électronique configuré pour mettre en œuvre les étapes du procédé selon l’invention. Enfin, l’invention concerne un système comportant une pluralité de dispositifs électroniques selon l’invention. Les caractéristiques et avantages du dispositif électronique, du système et du deuxième programme d’ordinateur sont identiques à ceux du procédé, c’est pourquoi, ils ne sont pas repris ici. On entend qu’un élément tel que le dispositif électronique, ou un autre élément est « configuré pour » (« ou apte à ») réaliser une étape ou une opération, par le fait que l’élément comporte des moyens pour (autrement dit « est conformé pour » ou « est adapté pour ») réaliser l’étape ou l’opération. Il s’agit préférentiellement de moyens électroniques, par exemple d’un programme d’ordinateur, de processeurs, de données en mémoire et/ou de circuits électroniques spécialisés. Lorsqu’une étape ou une opération est réalisée (ou mise en œuvre) par un tel élément, cela implique généralement que l’élément comporte des moyens pour (autrement dit « est conformé pour » ou « est adapté pour » ou « est configuré pour ») réaliser l’étape ou l’opération. Il s’agit également par exemple de moyens électroniques, par exemple un programme d’ordinateur, un processeur, des données en mémoire et/ou des circuits électroniques spécialisés. D’autres caractéristiques et avantages de la présente invention apparaitront plus clairement à la lecture de la description détaillée qui suit comprenant des modes de réalisation de l’invention donnés à titre d’exemples nullement limitatifs et illustrés par les dessins annexés, dans lesquels. représente un dispositif électronique selon un mode de réalisation de l’invention. représente le procédé de l’invention, selon un exemple de réalisation, mis en œuvre notamment par le dispositif électronique de la . Description détaillée d’un exemple de réalisation de l’invention La représente un dispositif électronique 1000 selon l’invention. Le dispositif 1000 a par exemple l’architecture d’un ordinateur. Il comprend notamment un microprocesseur électronique 1200 (autrement dit : un processeur 1200) et une mémoire 1100 comprenant une chaine de blocs 1110. Des copies de la chaine de blocs 1110 sont mémorisées sur une pluralité d’ordinateurs (non représentés). La chaine de blocs 1110 comprend notamment les blocs 110, 120 et 130. Dans le bloc 110 (respectivement 120 et 130), la zone mémoire 117 (respectivement 127 et 137) mémorise une somme de contrôle de la chaine de blocs 110 (respectivement 120 et 130) utilisée comme identifiant de la chaine de bloc 110 (respectivement 120 et 130), une somme de contrôle du bloc précédent 120 (respectivement 130 et un bloc non représenté) et une preuve de travail. Les sommes de contrôle sont par exemple de type dit « SHA-256 » et conformes au standard dit « FIPS 180-4 ». Les sommes de contrôles sont préférentiellement signées à partir d’une clef cryptographiques privée. Les blocs 130, 120 et 110 comportent un module d’exécution décentralisé 114. Le module d’exécution décentralisé 114 comprend un script exécutable par une machine virtuelle comprise dans la chaine de blocs 1110. Par exemple, le script exécutable est apte à compiler un programme d’ordinateur 111 (ou à commander sa compilation) avant de l’exécuter. En référence à la et 2, à l’étape S10, le dispositif 1000 reçoit une instruction d’écriture d’une nouvelle version d’un programme d’ordinateur 111 développée par un utilisateur. Le programme d’ordinateur 111 est alors mémorisé dans le bloc 130 par le processeur 1200. Le programme d’ordinateur 111 est destinée à être mis en œuvre dans un processeur compris dans un véhicule automobile, éventuellement après optimisation, traduction, compilation ou correction du programme d’ordinateur 111. Le programme d’ordinateur 111 peut être un code source (c’est-à-dire sous forme d’au moins un fichier texte) par exemple dans un langage informatique connu sous le nom de "C" ou “C++”. le programme d’ordinateur 111 est apte à (ou configuré pour) mettre en œuvre une au moins de taches suivantes : Localisation géographique du véhicule automobile, Reconnaissance de scène de l’environnement du véhicule automobile, Détermination automatisée d’une trajectoire du véhicule automobile, Suivi d’une trajectoire du véhicule automobile. A l’étape S20, le dispositif 1000 reçoit une instruction d’écriture d’une donnée de test 112 dans la chaine de bloc 1110. La donnée de test 112 est alors mémorisée dans le bloc 120 par le processeur 1200. A l’étape S30, le dispositif 1000 reçoit une instruction d’écriture d’une donnée de résultat attendu 115 dans la chaine de blocs 1110. La donnée de de résultat attendu 115 est alors mémorisée dans le bloc 120 par le processeur 1200. A l’étape S40, le dispositif 1000 réceptionne (autrement dit : reçoit) une instruction de lancement d’une exécution du programme d’ordinateur 111 par le module d’exécution décentralisé 114, avec pour donnée d’entrée, la donnée de test 112. Sur réception de l’instruction de lancement, le processeur 1200 exécute le script du module d’exécution décentralisé 114 à l’aide d’une machine virtuelle comprise dans la chaine de blocs 1110. Par exemple, le script est apte à compiler le programme d’ordinateur 111 (ou à commander sa compilation) avant de l’exécuter. L’exécution du programme d’ordinateur 111 par le processeur 1200 produit un résultat de sortie 113 mémorisé dans le bloc 110. A l’étape S50, le dispositif 1000 réceptionne une instruction de lancement d’une comparaison entre la donnée de sortie 113 et la donnée de résultat attendu 115. Le processeur 1200 réalise alors la comparaison et mémorise le résultat 116 de la comparaison dans le bloc 110. Les instructions d’écriture et de lancement précitées peuvent être reçues (par l’intermédiaire d’une interface homme machine) d’un utilisateur du dispositif 1000 ou d’un autre dispositif au travers un réseau de télécommunication (non représenté) connecté au dispositif 1000 et peuvent être mises en œuvre par le processeur 1200. Le dispositif 1000 peut mémoriser un programme d’ordinateur comprenant des instructions, exécutables par processeur 1200, pour la mise en œuvre des étapes S10 à S50. Procédé de développement d’un premier programme d’ordinateur(111) pour un véhicule automobile dans une chaine de blocs (1110), la chaîne de blocs (1110) comprenant un module d’exécution décentralisé (114), le procédé de développement étant caractérisé en ce qu’il comporte les étapes suivantes : Réception d’une instruction d’écriture (S10) du premier programme d’ordinateur (111) dans la chaine de blocs (1110), le premier programme d’ordinateur (111) étant configuré pour produire une donnée de sortie à partir d’une donnée d’entrée, Réception d’une instruction d’écriture (S20) d’une donnée de test (112) dans la chaine de blocs (1110), Réception d’une instruction de lancement (S40) d’une exécution du premier programme d’ordinateur (111), avec pour donnée d’entrée du premier programme d’ordinateur (111), la donnée de test, le lancement étant mis en œuvre par le module d’exécution centralisé (114), Mémorisation de la donnée de sortie (113) dans la chaine de blocs (1110). Procédé de développement selon la revendication précédente comprenant en outre les étapes suivantes : Réception d’une instruction d’écriture (S30) d’une donnée de résultat attendu (115) dans la chaine de blocs, Réception d’une instruction de lancement (S50) d’une comparaison entre la donnée de sortie (113) et la donnée de résultat attendu (115), la comparaison produisant un résultat de comparaison (116), Mémorisation du résultat de la comparaison dans la chaine de blocs (116). Procédé de développement selon l’une quelconque des revendications précédentes dans lequel le premier programme d’ordinateur (111) est apte à mettre en œuvre une au moins des taches suivantes : Localisation géographique du véhicule automobile, Reconnaissance de scène de l’environnement du véhicule automobile, Détermination automatisée d’une trajectoire du véhicule automobile, Suivi d’une trajectoire du véhicule automobile. Deuxième programme d’ordinateur comprenant des instructions, exécutables par un microprocesseur ou un microcontrôleur, pour la mise en œuvre du procédé selon l’une quelconque des revendications 1 à 3. Dispositif électronique (1000) configuré pour mettre en œuvre les étapes du procédé selon l’une quelconque des revendications 1 à 3. Système comportant une pluralité de dispositifs électroniques selon la revendication précédente.