Titre de l'invention : Procédé de négociation de contrat entre deux parties dans un réseau de télécommunications et dispositifs mettant en œuvre ce procédé
Technique antérieure
L’invention se rapporte au domaine général des réseaux de télécommunications, et plus précisément à la technologie des chaînes de blocs (en anglais « blockchain »).
Comme indiqué dans le document (https://fr.wikipedia.org/wiki/Blockchain), on rappelle que « la technologie des chaînes de blocs est une technologie de stockage et de transmission d'informations sans organe de contrôle. Techniquement, il s'agit d'une base de données distribuée dont les informations envoyées par les utilisateurs et les liens internes à la base sont vérifiés et groupés à intervalles de temps réguliers en blocs, l'ensemble étant sécurisé par cryptographie, et formant ainsi une chaîne. Par extension, une chaîne de blocs est une base de données distribuée qui gère une liste d'enregistrements protégés contre la falsification ou la modification par les nœuds de stockage ; c'est donc un registre distribué et sécurisé de toutes les transactions effectuées depuis le démarrage du système réparti».
Cette technologie est utilisée notamment comme registre pour enregistrer des transactions en crypto-monnaie.
L’utilisation de la technologie des chaînes de blocs pour enregistrer des contrats a été envisagée. Dans ce contexte, l’utilisation d’une chaîne de blocs est particulièrement avantageuse car elle permet de s’assurer qu’un contrat enregistré dans la chaîne ne pourra pas être falsifié.
L’invention propose d’étendre l’usage de la technologie des chaînes de blocs à la phase d’élaboration et de négociation des contrats.
Elle peut notamment être mise en œuvre dans toute chaîne de bloc offrant un mécanisme connu de l’homme du métier sous le nom de « contrat intelligent » (en anglais Smart Contract), notamment et de façon non limitative, dans la chaîne de blocs Ethereum (marque déposée).
Exposé de l’invention
Plus précisément, selon un premier aspect, l’invention propose un procédé de diffusion, dans un réseau de télécommunications, d’une proposition de contrat proposée par une première partie, ce procédé comportant :
- une étape de génération d’un contrat intelligent comportant :
- l’adresse d’un registre comportant une clé publique de la première partie dans une chaîne de blocs ;
- des données représentatives des termes de la proposition de contrat ;
- une méthode de souscription permettant à au moins une deuxième partie de diffuser une transaction dans le réseau pour souscrire à la proposition de contrat ;
- une méthode de génération de contrat configurée pour générer un contrat personnalisé entre la première partie et une deuxième partie et pour demander l’enregistrement de ce contrat personnalisé dans la chaîne de blocs, ce contrat personnalisé étant généré à partir de paramètres compris dans la transaction et représentatifs d’une volonté de ladite deuxième partie d’accepter les termes de la proposition de contrat ;
- une étape de signature du contrat intelligent avec une clé privée de la première partie ; et
- une étape de diffusion dans le réseau du contrat intelligent signé pour demander son enregistrement dans la chaîne de blocs.
Corrélativement, l’invention concerne un dispositif de diffusion, dans un réseau de télécommunications, d’une proposition de contrat proposée par une première partie, ce dispositif comportant :
- un module de génération d’un contrat intelligent comportant :
- l’adresse d’un registre comportant une clé publique de la première partie dans une chaîne de blocs ;
- des données représentatives des termes de la proposition de contrat ;
- une méthode de souscription permettant à au moins une deuxième partie de diffuser une transaction dans ledit réseau pour souscrire à la proposition de contrat ;
- une méthode de génération de contrat configurée pour générer un contrat personnalisé entre la première partie et une dite deuxième partie et pour demander l’enregistrement de ce contrat personnalisé dans la chaîne de blocs, ce contrat personnalisé étant généré à partir de paramètres compris dans la transaction et représentatifs d’une volonté de la deuxième partie d’accepter les termes de la proposition de contrat ;
- un module de signature du contrat intelligent avec une clé privée de la première partie ; et
- un module de diffusion dans le réseau du contrat intelligent signé pour demander son enregistrement dans la chaîne de blocs.
Selon un deuxième aspect, l’invention concerne un procédé d’acceptation d’une proposition de contrat diffusée dans un réseau de télécommunications, ce procédé étant mis en oeuvre par le terminal d’un utilisateur et comportant :
- une étape d’obtention d’un contrat intelligent enregistré dans une chaîne de blocs, ce contrat intelligent comportant :
- l’adresse, dans la chaîne de blocs, d’un registre comportant une clé publique d’une première partie propriétaire de la proposition de contrat ;
- des données représentatives de termes de la proposition de contrat ;
- une méthode de souscription permettant à au moins une deuxième partie de diffuser une transaction dans le réseau pour souscrire à la proposition de contrat ;
- une méthode de génération de contrat configurée pour générer un contrat personnalisé entre la première partie et une dite deuxième partie et demander l’enregistrement du contrat personnalisé dans la chaîne de blocs, ce contrat personnalisé étant généré à partir de paramètres compris dans la transaction et représentatifs d’une volonté de la deuxième partie d’accepter les termes de la proposition de contrat ;
- une étape d’obtention de paramètres représentatifs d’une volonté de l’utilisateur d’accepter les termes de la proposition de contrat ;
- une étape d’exécution de la méthode de souscription, cette exécution déclenchant la diffusion dans le réseau d’une transaction, signée avec une clé privée de l’utilisateur, et comportant :
- l’adresse d’une clé publique de l’utilisateur dans la chaîne de blocs ; l’adresse du contrat intelligent dans la chaîne de blocs ;
- un identifiant de la méthode de génération de contrat; et
- les paramètres précités.
Corrélativement, l’invention vise un dispositif d’acceptation d’une proposition de contrat diffusée dans un réseau de télécommunications, ce dispositif étant mis en oeuvre dans le terminal d’un utilisateur et comportant :
- - un module d’obtention d’un contrat intelligent enregistré dans une chaîne de blocs, ce contrat intelligent comportant :
- l’adresse, dans la chaîne de blocs, d’un registre comportant une clé publique d’une première partie propriétaire de la proposition de contrat ;
- des données représentatives de termes de la proposition de contrat ;
- une méthode de souscription permettant à au moins une deuxième partie de diffuser une transaction dans ledit réseau pour souscrire à ladite proposition de contrat ;
- une méthode de génération de contrat configurée pour générer un contrat personnalisé entre la première partie et une dite deuxième partie et pour demander l’enregistrement du contrat personnalisé dans la chaîne de blocs, ce contrat personnalisé étant généré à partir de paramètres compris dans la transaction et représentatifs d’une volonté de la deuxième partie d’accepter les termes de la proposition de contrat ;
- un module d’obtention de paramètres représentatifs d’une volonté de l’utilisateur d’accepter les termes de ladite proposition de contrat ;
- un module d’exécution de la méthode de souscription, cette exécution déclenchant la diffusion dans le réseau d’une transaction, signée avec une clé privée de l’utilisateur, et comportant :
- l’adresse d’une clé publique de l’utilisateur dans la chaîne de blocs ;
- l’adresse du contrat intelligent dans la chaîne de blocs ;
- un identifiant de la méthode de génération de contrat; et
- les paramètres précités.
L’invention vise également un procédé de négociation de contrat entre deux parties dans un réseau de télécommunications, ce procédé comportant :
- la génération d’une proposition de contrat par la première partie, sous la forme d’un contrat intelligent comportant :
- l’adresse d’un registre comportant une clé publique de la première partie dans une chaîne de blocs;
- des données représentatives des termes de la proposition de contrat ;
- une méthode de souscription permettant à la deuxième partie de diffuser une transaction dans le réseau pour souscrire à cette proposition de contrat ;
- une méthode de génération de contrat configurée pour générer un contrat personnalisé entre la première partie et la deuxième partie et pour demander l’enregistrement du contrat personnalisé dans la chaîne de blocs, ce contrat personnalisé étant généré à partir de paramètres compris dans la transaction et représentatifs d’une volonté de la deuxième partie d’accepter les termes de la proposition de contrat;
- une étape de signature du contrat intelligent avec une clé privée de la première partie ;
- une étape de diffusion du contrat intelligent signé dans ledit réseau pour demander son enregistrement dans la chaîne de blocs ;
- une étape d’obtention du contrat intelligent par la deuxième partie ;
- une étape d’obtention de paramètres représentatifs d’une volonté de ladite deuxième partie d’accepter les termes de ladite proposition de contrat ;
- une étape d’exécution de la méthode de souscription par un terminal de la deuxième partie, cette exécution déclenchant la diffusion dans le réseau d’une transaction, signée avec une clé privée de la deuxième partie, et comportant :
- l’adresse d’une clé publique de l’utilisateur dans la chaîne de blocs ;
- l’adresse du contrat intelligent dans la chaîne de blocs ;
- un identifiant de ladite méthode de génération de contrat; et
- les paramètres précités; et
- une étape d’exécution, mise en oeuvre par un dispositif de minage de la chaîne de blocs, de la méthode de génération d’un contrat personnalisé, avec ces paramètres pour générer un contrat personnalisé entre les parties, l’enregistrer dans la chaîne de blocs et rediffuser la chaîne de blocs.
Au sens de l’invention, l’« adresse » d’une ressource dans la chaîne de blocs est un pointeur vers une ressource dans la chaîne de blocs.
On rappelle qu’un contrat intelligent (en anglais Smart Contract) est un programme informatique autonome, qui une fois démarré, exécute automatiquement des conditions définies au préalable et inscrites dans la chaîne de blocs (https://blockchainfrance.net/2016/01/28/applications-smart-contracts/). Les applications décentralisées dApps du projet Ethereum constituent des contrats intelligents au sens de l’invention.
Dans l’invention, une transaction (notamment les transactions TR_AB et TR_AC de la description détaillée) sont des transactions au sens de la technologie des chaînes de blocs, à savoir des enregistrements dans la chaîne de blocs.
Au sens de l’invention un contrat personnalisé par une partie comporte des éléments représentatifs de la volonté de cette partie d’accepter les termes du contrat.
Ainsi, et d’une façon générale, l’invention propose un mécanisme permettant la négociation de contrats dans un réseau dans lequel on enregistre dans une chaîne de blocs :
- une proposition de contrat diffusée à l’ensemble des participants à la chaîne de blocs, à l’initiative d’un premier utilisateur, propriétaire de la proposition de contrat et partie au contrat ;
- une transaction représentant la volonté d’un autre utilisateur de la chaîne de blocs, une deuxième partie, de souscrire à la proposition de contrat,
et
- un contrat personnalisé, généré à partir de cette proposition de contrat, entre ce premier utilisateur, et la deuxième partie au contrat.
Le procédé est remarquable en ce que la proposition de contrat est enregistrée dans la chaîne de blocs sous forme d’un contrat intelligent et en ce que le contrat personnalisé est généré par une méthode de ce contrat intelligent, suite à une transaction diffusée par la deuxième partie souhaitant souscrire au contrat, par laquelle cette deuxième partie diffuse aux utilisateurs de la chaîne de blocs, des paramètres représentatifs de sa volonté d’accepter les termes de la proposition de contrat.
De façon remarquable, l’invention utilise la chaîne de blocs pour établir un lien immuable entre la proposition de contrat et le contrat personnalisé. En effet, le contrat personnalisé est généré par le contrat intelligent lui-même, celui-ci pouvant être vérifié à tout moment par les utilisateurs de la chaîne de blocs.
Conformément à l’invention, et contrairement aux méthodes de l’art antérieur, le contrat personnalisé est, dans la chaîne de blocs, la propriété du contrat intelligent (c’est-à-dire de la proposition de contrat) et non de la deuxième partie au contrat.
Le contrat personnalisé obtenu par l’invention peut être constitué par un ensemble de données statiques.
Dans un mode préféré de réalisation de l’invention, le contrat personnalisé est un contrat intelligent. Ce contrat intelligent peut contenir un code informatique configuré pour s’exécuter lors ou après l’exécution du contrat personnalisé entre les parties.
Dans un mode particulier de réalisation de l’invention, la méthode de génération de souscription est configurée pour obtenir des conditions d’acceptation de la
proposition de contrat par la deuxième partie, ces conditions d’acceptation faisant partie des paramètres compris dans la transaction pour générer le contrat personnalisé.
Dans un mode particulier de réalisation, la méthode de génération de contrat peut être configurée pour vérifier si ces conditions d’acceptation sont compatibles avec les termes de la proposition de contrat avant de générer le contrat spécifique.
Dans un mode de réalisation, le procédé de diffusion de proposition de contrat selon l’invention comporte une étape de téléchargement d’un agent informatique auprès d’un serveur, cet agent comportant :
- un module pour obtenir, de la première partie, des données représentatives des termes de la proposition de contrat ; et
- un module pour générer le contrat intelligent à partir de ces données et pour diffuser le contrat intelligent dans le réseau.
Corrélativement, dans ce mode de réalisation, le dispositif de diffusion selon l’invention comporte :
- un module de communication apte à télécharger un agent à partir d’un serveur ;
- un module de traitement apte à installer cet agent dans le dispositif ;
- cet agent comportant le module de génération de contrat, le module de signature et le module de diffusion du dispositif de diffusion.
Cet agent est remarquable en ce qu’il permet d’assister l’utilisateur dans la rédaction de la proposition de contrat, et en ce qu’il réalise, de façon transparente pour l’utilisateur, son implémentation dans un contrat intelligent et l’enregistrement de ce contrat dans la chaîne de blocs. La Demanderesse a en effet constaté que dans l’état actuel de la technique les propriétaires de données enregistrées dans les chaînes de blocs étaient des experts en informatique.
L’invention vise au contraire une solution de négociation de contrats en ligne qui ne nécessite pas de connaissance dans la technologie des chaînes de blocs.
Dans un mode de réalisation de l’invention, cet agent comporte en outre un module pour signer le contrat intelligent avec la clé privée de la première partie.
En variante, le contrat intelligent peut être signé avec la clé privée de la première partie par un module cryptographique de son terminal et fourni signé à l’agent pour diffusion dans la chaîne de blocs.
Dans un mode particulier de réalisation, les différentes étapes du procédé de diffusion de proposition de contrat, du procédé d’acceptation de proposition de contrat et de négociation de contrat sont déterminées par des instructions de programmes d’ordinateurs.
En conséquence, l’invention vise aussi un programme d’ordinateur sur un support d’informations, ce programme étant susceptible d’être mis en œuvre dans un ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre des étapes d'un procédé tel que décrit ci-dessus.
Ce programme peut utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable.
L’invention vise aussi un support d'informations ou d’enregistrement lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus.
Le support d'informations ou d’enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple un disque dur.
D'autre part, le support d'informations ou d’enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.
Alternativement, le support d'informations ou d’enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question.
Brève description des dessins
D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : la figure 1 représente l’architecture matérielle d’un dispositif de diffusion de proposition de contrat conforme à un mode particulier de réalisation de l’invention ;
- la figure 2 représente l’architecture matérielle d’un dispositif d’acceptation d’une proposition de contrat conforme à un mode particulier de réalisation de l’invention;
- la figure 3 illustre sous forme d’ordinogramme, les principales étapes des procédés conformes à un mode particulier de réalisation de l’invention ;
- la figure 4 représente un formulaire de rédaction de proposition de contrat pouvant être utilisé dans l’invention ;
- la figure 5 illustre un contrat intelligent pouvant être utilisé dans l’invention ;
- la figure 6 représente un formulaire de rédaction d’acceptation de proposition de contrat pouvant être utilisé dans l’invention ;
- la figure 7 illustre une transaction pouvant être utilisée dans l’invention ; et - la figure 8 représente une chaîne de blocs comportant des blocs générés par l’invention 8.
Description des modes de réalisation
La figure 1 représente l’architecture matérielle d’un dispositif DA de diffusion de proposition de contrat conforme à un mode particulier de réalisation de l’invention. Dans le mode de réalisation décrit ci-après ce dispositif DA est intégré dans le terminal TA d’un utilisateur Alice.
Ce dispositif DA comprend notamment un processeur 13, une mémoire vive 14, un disque dur 15 ainsi que des moyens de communication 17 lui permettant de
communiquer sur un réseau de télécommunications, notamment avec des terminaux. Ces moyens de communication incluent par exemple une interface WIFI, une carte réseau, etc. en fonction de la nature du réseau.
Le disque dur 15 constitue un support d’enregistrement conforme à l’invention, lisible par le processeur 13 et sur lequel est enregistré ici un programme d’ordinateur PROGA conforme à l’invention.
Dans le mode de réalisation décrit ici, ce programme d’ordinateur PROGA comporte un navigateur Internet NAV et un agent informatique AG téléchargé depuis un serveur SRV_COMP du réseau offrant un service de composition de proposition de contrats.
Le programme d’ordinateur PROGA définit des modules fonctionnels (et logiciels ici), configurés pour mettre en œuvre les étapes d’un procédé de diffusion d’une proposition de contrat selon l’invention.
La figure 2 représente l’architecture matérielle d’un dispositif DB d’acceptation d’une proposition de contrat conforme à un mode particulier de réalisation de l’invention. Dans le mode de réalisation décrit ci-après ce dispositif DB est intégré dans le terminal TB d’un utilisateur Bob et dans le terminal TC d’un utilisateur Charly.
Ce dispositif DB comprend notamment un processeur 23, une mémoire vive 24, un disque dur 25 ainsi que des moyens de communication 27 sur le réseau de télécommunications.
Le disque dur 25 constitue un support d’enregistrement conforme à l’invention, lisible par le processeur 23 et sur lequel est enregistré ici un programme d’ordinateur PROGB conforme à l’invention.
Le programme d’ordinateur PROGB définit des modules fonctionnels (et logiciels ici), configurés pour mettre en œuvre les étapes d’un procédé d’acceptation de proposition de contrat selon l’invention.
En référence à la figure 3, nous allons maintenant décrire :
- les principales étapes A10 à A50 d’un procédé de diffusion d’une proposition de contrat selon l’invention mises en œuvre par le terminal TA d’Alice,
- les principales étapes B70 et B80 d’un procédé d’acceptation d’une proposition de contrat mises en œuvre par le terminal TB de Bob et par le terminal TC de Charly ; et
- les principales étapes A10 à A50, U60, B70, B80 et U90 d’un procédé de négociation de contrat mises en œuvre conjointement par le terminal TA d’Alice, le terminal TB de Bob ou celui TC de Charly et le terminal U1 d’un mineur de la chaîne de blocs.
Au cours d’une étape A10, l’utilisateur Alice (ci-après Alice) utilise son terminal TA pour souscrire au service de composition de contrats auprès d’un serveur SRV_COMP. Le terminal TA télécharge l’agent AG auprès du serveur SRV_COMP et installe cet agent AG sur le disque dur 15 du dispositif DA.
Dans le mode de réalisation décrit ici, cet agent AG comporte :
- un module AG_GENKEY de génération de clés cryptographiques ;
- un module AG_SIGN de signature cryptographique ;
-un module AG_REDA d’aide à la rédaction de propositions de contrats ; et
- un module AG_DIFF configuré pour générer un contrat intelligent à partir de données reçues du module AG_REDA et pour diffuser le contrat intelligent dans le réseau pour demander son enregistrement dans une chaîne de blocs CB.
Dans le mode de réalisation décrit ici, lorsqu’Alice installe l’agent AG dans son terminal TA, au cours d’une étape A20, cet agent AG :
- génère une paire de clés {KEYAPUB (clé publique), KEYAPRIV (clé privée)} pour Alice en utilisant son module AG_GENKEY de génération de clés cryptographiques ;
- enregistre la clé publique KEYAPUB d’Alice dans la chaîne de blocs CB;
- mémorise la paire de clés {KEYAPUB, KEYAPRIV} sur le disque dur 15 du dispositif DA ; et
- installe le module AG_REDA d’aide à la rédaction de propositions de contrats en tant que module d’extension (en anglais plug-in) du navigateur NAV du terminal TA.
Dans un autre mode de réalisation, le module AG_GENKEY de génération de clés cryptographiques peut être extérieur à l’agent, par exemple installé dans un serveur distant. La paire de clés {KEYAPUB, KEYAPR| } peut être obtenue par tout moyen connu de l’état de la technique.
Nous supposerons que d’autres utilisateurs Bob et Charly, Uij=i , ...N se sont déjà enregistrés dans la chaîne de blocs CB lors d’une phase d’inscription et que leurs clés publiques KEYBPUB, KEYCPUB, KEYUÎPUB sont enregistrées dans la chaîne de blocs CB.
Au cours d’une étape A30, Alice souhaite publier une nouvelle proposition de contrat dans la chaîne de blocs CB. Elle utilise pour cela le module d’extension AG_REDA installé dans forme de module d’extension de son navigateur Internet NAV.
Ce module d’extension télécharge depuis le serveur de composition SRV_COMP une page Web qui constitue un formulaire FORM_PC d’aide à la rédaction de proposition de contrat et l’affiche dans le navigateur NAV d’Alice. Ce formulaire FORM_PC est représenté à la figure 4.
Dans le mode de réalisation décrit ici, le formulaire FORM_PC comporte :
- une partie A à remplir par la première partie au contrat, ici Alice, pour proposer un nouveau contrat, cette partie A comportant :
- un champ « Termes » pour définir les termes de la proposition de contrat,
- un champ « Date » de date et un champ « Sign » de signature permettant à la première partie au contrat de dater la proposition de contrat et de la signer avec un stylo électronique ;
- un bouton de validation « OK » utilisable par la première partie au contrat pour demander l’enregistrement de la proposition de contrat dans la chaîne de blocs CB ;
- une partie B permettant de définir les informations devant être fournies par une deuxième partie pour accepter cette proposition de contrat, certaines (marquées d’un astérisque) étant optionnelles. Dans l’exemple décrit ici, la deuxième partie B spécifiée par Alice comporte :
- un champ « Cond » dans laquelle la deuxième partie B peut préciser des conditions d’acceptation de la proposition de contrat ;
- un champ « Date » de date et un champ « Sign » de signature permettant à la deuxième partie au contrat de dater l’acceptation de contrat et de la signer avec un stylo électronique. Alice décide que ces champs « Date » et « Sign » doivent nécessairement être renseignés.
Nous supposerons qu’Alice :
- remplit le champ « Termes » avec une offre de service et un prix associé, par exemple, « la société Alice recherche une personne pour livrer des pizzas sur Paris, chaque livraison étant rémunérée 10 euros » ;
- date la proposition de contrat dans le champ « Date » ;
-signe la proposition de contrat avec un stylet électronique dans le champ « Sign » ; et
valide sa proposition de contrat au contrat en utilisant le bouton « OK ».
Cette validation a pour effet de générer, au courant d’une étape A40, un contrat intelligent SCGA représenté à la figure 5. Ce contrat SCGA est un code informatique exécutable qui traduit la proposition de contrat rédigée par Alice au moyen du formulaire FORM_PC et qui comporte :
- l’adresse @A du registre comportant la clé publique d’Alice KEYAPUB dans la chaîne de blocs CB ;
- des données TERMES, DATE, SIGN signées avec la clé privée KEYAPRIV d’Alice et qui reprennent les champs de la partie A du formulaire FORM_PC remplis par Alice ;
- une méthode informatique SUBS_SCGA de souscription permettant à un tiers souhaitant souscrire à la proposition de contrat, de diffuser une transaction dans le réseau à cet effet; et
- une méthode informatique de génération de contrat GEN_CTRT_SPEC configurée pour générer un contrat personnalisé entre Alice et ce tiers et pour demander son enregistrement dans la chaîne de blocs CB.
La méthode informatique de génération de contrat GEN_CTRT_SPEC est en outre configurée pour vérifier une signature de ladite transaction par ce tiers.
Au cours d’une étape A50, l’agent AG :
- signe le contrat intelligent SCGA avec la clé privée d’Alice KEYAPRIV en utilisant le module AG_SIGN ; et
- diffuse le contrat intelligent SCGA signé dans la chaîne de blocs CB en utilisant le module AG_DIFF pour demander son enregistrement dans la chaîne de blocs.
Dans un autre mode de réalisation, le formulaire FORM_PC d’aide à la rédaction de proposition de contrat ne comporte pas les champs de date « Date » et de signature « Sign », et le bouton OK de validation est configuré pour, lorsqu’il est activé, générer automatiquement une date la signer, et l’insérer dans le contrat intelligent SCGA.
Conformément à la technologie des chaînes de blocs, tous les utilisateurs de la chaîne, et notamment Alice, Bob, Charly, Ui reçoivent ce contrat intelligent et peuvent en prendre connaissance.
La proposition de contrat SCGA ayant été signée avec la clé privée d’Alice, cette proposition de contrat est, dans la chaîne de blocs CB, la propriété d’Alice. On notera que l’agent AG n’est pas authentifié dans la chaîne de blocs CB.
Nous supposerons qu’un utilisateur Ui joue le rôle de mineur dans la chaîne de blocs CB, et qu’au cours d’une étape U60, il vérifie la signature du contrat intelligent SCGA avec la clé publique d’Alice KEYAPUB, insère le contrat intelligent SCGA dans un bloc d’adresse @SCGA dans la chaîne de blocs CB et rediffuse la chaîne de blocs CB.
Conformément à la technologie des chaînes de blocs, tous les utilisateurs de la chaîne, et notamment Alice, Bob, Charly reçoivent la nouvelle chaîne de blocs CB.
Nous supposerons que Bob prend connaissance de la proposition de contrat d’Alice au cours d’une étape B70 et décide d’y souscrire en invoquant la méthode de souscription SUBS_SCGA du contrat intelligent SCGA.
L’exécution de cette méthode génère l’affichage d’un formulaire FORM_CS dans le navigateur NAV du terminal TB de Bob représenté à la figure 6.
Il comporte, dans ce mode de réalisation :
- une partie A reconstituée à partir des informations fournies par Alice et contenues dans les champs TERMES, DATE, SIGN du contrat intelligent SCGA ;
- une partie B qui reprend :
- des champs « Cond », « Date » et « Sign » tels que définis par Alice dans son formulaire FORM_PC et qui peuvent être édités par Bob pour générer des données représentatives de sa volonté d’accepter les termes de la proposition de contrat, ces données devant comporter une date et une signature et éventuellement des conditions d’acceptation de la proposition de contrat ; et
- un bouton de validation OK utilisable par Bob pour demander la génération et l’enregistrement d’un contrat personnalisé SCAB entre Alice et Bob dans la chaîne de blocs CB.
Le bouton de validation OK est en outre utilisable par Bob pour diffuser une transaction pour souscrire à la proposition de contrat.
Nous supposerons que Bob, au cours d’une étape B80, définit ses conditions dans le champ « Cond », date, signe le formulaire FORM_CS avec un stylet électronique et valide sa demande de transaction avec le bouton « OK ». Cette validation entraîne la diffusion d’une transaction TR_AB, signée avec la clé privée KEYBPRIV de Bob à destination des utilisateurs de la chaîne de blocs, dont Alice, Charly et Ui.
Dans un autre mode de réalisation, le formulaire FORM_CS ne comporte pas les champs de date « Date » et de signature « Sign », et le bouton OK de validation est configuré pour, lorsqu’il est activé, générer automatiquement une date, la signer, et l’insérer dans la transaction TR_AB.
Dans un autre mode de réalisation, le formulaire FORM_CS ne comporte pas les champs de date « Date » et de signature « Sign », et l’appui sur le bouton « OK » entraîne seulement la diffusion de la transaction TR_AB.
Cette transaction TR_AB transmise dans la chaîne de blocs CB comporte la preuve de la volonté de Bob de vouloir faire exécuter par un dispositif de minage la méthode GEN_CTRT_SPEC du contrat intelligent SCGA pour générer un
contrat personnalisé SCAB. Cette transaction TR_AB représentée à la figure 7 et comporte :
- l’adresse @B de la clé publique de Bob KEYBPUB dans la chaîne de blocs CB ;
- l’adresse @SCGA du contrat intelligent SCGA dans la chaîne de blocs CB ;
- un identifiant GEN_CTRT_SPEC de la méthode de ce contrat à exécuter pour générer un contrat personnalisé SCAB;
- des champs COND, DATE et SIGN qui reprennent les conditions, la date et la signature de Bob édités dans les champs « Cond », « Date » et « Sign » du formulaire FORM_SC et qui serviront de paramètres à la méthode GEN_CTRT_SPEC pour générer le contrat personnalisé SCAB.
L’identifiant GEN_CTRT_SPEC de la méthode de du contrat à exécuter pour générer un contrat personnalisé SBAB est aussi utilisé pour vérifier une signature de ladite transaction (TR_AB) par la deuxième partie.
Au cours d’une étape U90, un utilisateur Ui qui joue le rôle de mineur dans la chaîne de blocs CB :
- vérifie la signature de la transaction TR_AB avec la clé publique de Bob KEYBRUB ;
- exécute, pour générer le contrat personnalisé SCAB, la méthode GEN_CTRT_SPEC du contrat intelligent SCGA en prenant pour paramètres les données des champs COND, DATE et SIGN de la transaction TR_AB ;
- insère le contrat personnalisé SCAB dans un registre d’adresse @SCAB de la chaîne de blocs CB ; et
- rediffuse la chaîne de blocs CB.
La vérification de la signature de la transaction TR_AB est mise en œuvre au moyen de l’exécution de la méthode GEN_CTRT_SPEC. En d’autres termes, la méthode GEN_CTRT_SPEC est aussi exécuté pour vérifier la signature de la transaction TR_AB avec la clé publique de Bob KEYBPUB et enregistrer le contrat personnalisé SCAB généré.
Conformément à la technologie des chaînes de blocs, tous les utilisateurs de la chaîne, et notamment Alice, Bob, Charly reçoivent la nouvelle chaîne de blocs
CB ; Alice peut ainsi prendre connaissance du contrat SCAB personnalisé conclu avec Bob.
Dans le mode de réalisation décrit ici, la méthode GEN_CTRT_SPEC vérifie que les conditions du champ COND posées par Bob sont acceptables avant de générer le contrat personnalisé SCAB.
Il est fondamental de constater que le propriétaire du contrat SCAB dans la chaîne de blocs est le contrat intelligent SCGA et non pas Bob. En particulier, le contrat SCAB n’est pas signé avec la clé privée KEYBPRIV de Bob. Le contrat SCAB est finalisé par le contrat intelligent SCGA à partir des conditions spécifiques de Bob mais le terminal TB de Bob n’intervient ni pour la génération du contrat personnalisé SCAB ni pour son enregistrement dans la chaîne de blocs. L’homme du métier des chaînes de blocs comprendra que le contrat intelligent SCGA peut toujours être vérifié puisqu’il est enregistré dans la chaîne de blocs CB.
Nous supposons maintenant qu’un autre utilisateur inscrit dans la chaîne des blocs, par exemple Charly, décide, comme Bob à l’étape B70, de répondre à la proposition de contrat d’Alice en invoquant la méthode de souscription SUBS_SCGA du contrat intelligent SCGA.
L’exécution de cette méthode génère alors l’affichage du formulaire Web FORM_CS dans le navigateur du terminal de Charly.
Au cours d’une étape similaire à l’étape B80 précédemment décrite, Charly peut fixer ses propres conditions d’acceptation et diffuser une transaction TR_AC, signée avec sa clé privée KEYCPRIV à destination des utilisateurs de la chaîne de blocs.
Cette transaction TR_AC est similaire à celle TR_AB de Bob. Elle comporte :
- l’adresse @C de la clé publique de Charly KEYCPUB dans la chaîne de blocs CB
- l’adresse @SCGA du contrat intelligent SCGA dans la chaîne de blocs CB ;
- l’identifiant GEN_CTRT_SPEC de la méthode de ce contrat à exécuter pour générer SCAC;
- des champs COND, DATE et SIGN qui reprennent les conditions, la date et la signature de Charly édités dans les champs « Cond », « Date » et « Sign » du formulaire FORM_SC et qui devront servir de paramètres à la méthode GEN_CTRT_SPEC pour générer un contrat personnalisé SCAC entre Alice et Charly.
L’identifiant GEN_CTRT_SPEC de la méthode du contrat à exécuter est utilisé aussi pour vérifier la transaction, et enregistrer le contrat SCAC généré.
Bien entendu, si les termes de la proposition de contrat lui conviennent tels quels, Charly peut ne pas fixer de conditions d’acceptation.
Au cours d’une étape similaire à l’étape U90 déjà décrite, un utilisateur Ui jouant le rôle de mineur dans la chaîne de blocs CB :
- vérifie la signature de la transaction TR_AC avec la clé publique de Charly KEYCPUB ;
- exécute la méthode GEN_CTRT_SPEC du contrat intelligent SCGA avec les données des champs COND, DATE et SIGN de la transaction TR_AC ;
- insère le contrat personnalisé SCAC dans un registre d’adresse @SCAC de la chaîne de blocs CB ; et
- rediffuse la rediffuse la chaîne de blocs CB.
Conformément à la technologie des chaînes de blocs, tous les utilisateurs de la chaîne, et notamment Alice, Bob, Charly reçoivent la nouvelle chaîne de blocs CB ; Alice peut ainsi prendre connaissance du contrat personnalisé SCAC conclu avec Charly.
Le propriétaire du contrat SCAC dans la chaîne de blocs est le contrat intelligent SCGA et non pas Charly ; le contrat SCAC n’est pas signé avec la clé privée KEYCPRIV de Charly.
La figure 8 représente la chaîne de blocs CB. Il est fondamental de constater qu’elle comporte :
- la proposition de contrat SCGA d’Alice ;
- les transactions TRA_AB et TR_AC ;
- deux contrats personnalisés SCAB, SCAC, générés par SCGA, et propriétés de SCGA.
Une copie de cette chaîne est mémorisée par les terminaux TA, TB, TC et Ui.
A titre d’exemple, @A est un pointeur permettant de retrouver la clé KEYAPUB d’Alice dans la chaîne de blocs.