Brevet FR3062499A1 — publié le 20180803

Procédé de réduction de la taille d'une base de données répartie de type chaine de blocs, dispositif et programme correspondant 1. Domaine L'invention se rapporte au domaine du traitement de transactions. Plus particulièrement, l'invention se rapporte au traitement de transactions authentifiées. Une transaction authentifiée est généralement mise en oeuvre dans la cadre du traitement d'obligation et/ou dans un cadre contractuel. Une transaction authentifiée, plus particulièrement, se présente sous la forme d'une structure de données dont le contenu est authentifié : le contenu de la structure de donnée (tout comme la structure de données elle-même), ne peux pas faire l'objet de modifications ou d'altération une fois que la transaction est validée. L'invention apporte une solution simple et efficace aux traitements transactionnels mis en oeuvre dans le cadre de transactions authentifiées et plus particulièrement dans le cadre de chaines de blocs (de l'anglais pour "BlockChain"). 2. Art Antérieur Une chaîne de blocs est une technologie de stockage et de transmission d'informations. Une chaine de bloc, de par les technologies mises en oeuvre pour la créer possède plusieurs caractéristiques à savoir qu'elle est transparente, sécurisée, et qu'elle fonctionne de manière décentralisée. Ainsi, dans le langage usuel, l'expression chaîne de blocs est également utilisée pour faire référence à 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 noeuds de stockage. Une chaine de bloc, par extension, est donc une chronologie décentralisée et sécurisée de toutes les transactions effectuées depuis l'initialisation du système réparti. Une chaine de blocs, typiquement, comprend en son sein des transactions authentifiées. Une des chaines de blocs la plus connue est celle mise en oeuvre dans la cadre de la gestion de la crypto monnaie "BitCoin". D'autres chaines de blocs existent cependant, et ce pour la gestion d'activité diverses allant de la gestion de transactions financières à la gestion de contrats de services. La mise en oeuvre d'une chaine de blocs est basée sur l'utilisation d'un nombre important de noeuds, qui chacun possède une copie de la chaine de blocs et est en mesure de participer à la génération et à la validation des blocs de la chaine de blocs et des 3062499 2 transactions qui s'y trouvent. Ainsi, pour la mise en oeuvre d'une chaine de blocs, il est nécessaire de disposer d'une pluralité de noeuds, qui chacun, de manière indépendante, est en mesure de valider les transactions passées entre les utilisateurs de la chaine de blocs et est en mesure de participer à la création de nouveaux blocs. L'intérêt suscité par 5 les gains obtenus pour une participation à la création de blocs entraine une croissance rapide du nombre de noeuds. Cette croissance a plusieurs conséquences : la première est une augmentation importante de la consommation énergétique. En effet, pour la génération de nouveaux blocs, des conditions particulières sont ajoutées. Parmi ces conditions, certaines requièrent l'obtention de données cryptographiques complexes, 10 notamment par l'utilisation de fonctions mathématiques injectives de type fonction de hachage, qui nécessitent des calculs extensifs et donc une énorme dépense énergétique. Ajoutons que la mise en oeuvre de ces fonctions est réalisée en concurrence : cela signifie que les différents noeuds se font concurrence pour la mise en oeuvre de ces fonctions et que généralement seul le noeud qui obtient le résultat escompté est le noeud qui obtient la 15 récompense. Ceci participe à l'inefficacité énergétique du système. Il existe d'autres systèmes dans lesquels il n'y a pas de mise en concurrence, mais plutôt une participation à l'effort, système dans lequel la récompense est attribuée en fonction d'une preuve de participation au résultat et non d'une preuve d'accomplissement d'un travail. La deuxième conséquence de la croissance du nombre de noeud est indirecte et se 20 rapporte à la croissance du nombre de transactions. En effet, plus le nombre de noeud augmente, plus il est aisé d'utiliser le système de chaine de blocs pour effectuer une transaction puisque cela implique que la transaction est validée de manière beaucoup plus rapide. Or, l'augmentation du nombre de transactions entraine mécaniquement une augmentation du nombre de blocs de la chaine de blocs, ce qui entraine une 25 augmentation importance du besoin de stockage des transactions. Or, la confiance accordée à la chaine de blocs réside dans le fait que chaque noeud dispose d'une copie de cette chaine de blocs. Ainsi, par exemple, dans le cas du bitcoin, la totalité de la chaine de blocs représente au jour de la présente, plus de 100 Go. Chaque noeud possède donc une copie de cet ensemble de données. Cela représente une dépense considérable en termes 30 d'espace total de stockage et participe à l'inefficacité de la chaine de blocs à ce sujet. 3062499 3 Il existe donc un besoin, consistant à fournir une solution pour limiter la croissance de la base de données (de la chaine de blocs) tout en conservant le caractère authentifié des transactions qui sont mises en oeuvre dans le cadre de la chaine de blocs. 3. Résumé 5 La présente technique permet de solutionner, au moins en partie, ce problème lié à la nécessité de disposer d'un historique de données au sein de la chaine de blocs. Plus particulièrement, il est proposé un procédé de réduction de la taille d'une base de données répartie de type chaine de blocs, procédé mis en oeuvre par un dispositif électronique, appelé noeud, connecté à un ensemble de noeud formant un système de 10 gestion de base de donnée répartie. Selon l'invention, ce procédé comprend : une étape de détermination d'un instant t de création d'un dictionnaire A[t], courant comprenant pour chaque utilisateur de la chaine de blocs, à l'instant t un couple de type (clé, valeur), en fonction d'au moins un paramètre de détermination prédéterminé ; 15 une étape de création, pour l'instant t de création, du dictionnaire A[t] en fonction d'au moins un paramètre de création prédéterminé, au sein d'une structure de donnée ; une étape d'obtention, à partir du dictionnaire A[t], d'une donnée cryptographique unique DCA, représentative du dictionnaire ; 20 une étape de suppression de blocs de la chaine de blocs en fonction d'au moins un paramètre de suppression prédéterminé ; Éventuellement de l'instant t de création est également pris en compte pour la suppression des blocs. Ainsi, selon l'invention, comme le dictionnaire est créé en fonction de l'instant de 25 création t et des données de la chaine de blocs antérieures à cet instant t, il est aisé de diminuer la taille de la chaine de blocs en supprimant les blocs antérieurs à l'instant t. Comme explicité par la suite, cette suppression est effectuée en fonction de paramètre de suppression, comme par exemple le temps écoulé depuis la création du dictionnaire ou encore le nombre de blocs ajoutés à la chaine de blocs depuis la création du dictionnaire. 30 Ainsi, en fonctionnement nominal, itératif, le procédé permet de à taille de la chaine de 3062499 4 blocs de rester relativement constante : cette taille évolue entre une borne maximum et une borne minimum, bornes dépendant de la valeur des paramètres du procédé. Selon un mode de réalisation particulier, le procédé comprend, postérieurement à l'étape d'obtention, une étape d'insertion de la donnée cryptographique unique DCu au 5 sein d'un enregistrement d'un bloc de la chaine de blocs. Ainsi, la donnée cryptographique est insérée dans la chaine de bloc elle-même et bénéficie donc des caractéristiques de la chaine de blocs : transparence et auditabilité. Selon une caractéristique particulière, le paramètre de suppression prédéterminé comprend un paramètre relatif au nombre de blocs créés depuis l'insertion de la donnée 10 cryptographique unique DCu au sein d'un enregistrement d'un bloc de la chaine de blocs. Ainsi, il est possible de borner la taille de la chaine de blocs de manière plus efficace tout en assurant une sécurisation des transactions : les blocs antérieurs à l'instant t ne sont supprimés que lorsqu'un certain nombre de blocs supplémentaires ont été ajoutés, postérieurement à l'instant t. 15 Selon une caractéristique particulière, le nombre de blocs créés depuis la création du dictionnaire courant est supérieur ou égal à quatre. Dans un mode de réalisation particulier, ce nombre est supérieur ou égal à six. Selon une caractéristique particulière, l'étape de suppression de blocs de la chaine de blocs comprend la suppression de l'ensemble des blocs de la chaine de blocs antérieurs 20 audit dictionnaire courant. Selon un mode de réalisation particulier, l'étape d'obtention, à partir du dictionnaire A[t], de la donnée cryptographique unique DCu, comprend une étape d'application, sur la structure de données dudit dictionnaire, d'une fonction de hachage, délivrant un haché dudit dictionnaire. 25 Selon une caractéristique particulière, le procédé comprend en outre au moins une étape de transmission de la donnée cryptographique unique DCu, à au moins un noeud dudit ensemble de noeuds. Ainsi, la donnée cryptographique unique peut être auditée et acceptée par d'autres noeuds, ce qui participe à la prise en compte du dictionnaire par d'autre noeud du 30 réseau de noeuds. Selon une caractéristique particulière, l'étape de transmission comprend : 3062499 5 une étape de création d'un enregistrement de la chaine de blocs ; une étape d'adjonction, à titre de métadonnées dudit enregistrement, de la donnée cryptographique unique DCA ; une étape d'insertion, au sein d'un bloc courant de la chaine de blocs, dudit 5 enregistrement. Selon un autre aspect, l'invention se rapporte également à un dispositif de réduction de la taille d'une base de données répartie de type chaine de blocs, dispositif au sein d'un dispositif électronique, appelé noeud, connecté à un ensemble de noeud formant un système de gestion de base de donnée répartie. Un tel dispositif comprend : 10 des moyens de détermination d'un instant t de création d'un dictionnaire A[t], courant comprenant pour chaque utilisateur de la chaine de blocs, à l'instant t un couple de type (clé, valeur), en fonction d'au moins un paramètre de détermination prédéterminé ; des moyens de création, pour ledit instant t de création, du dictionnaire A[t] en 15 fonction d'au moins un paramètre de création prédéterminé, au sein d'une structure de donnée ; des moyens d'obtention, à partir du dictionnaire A[t], d'une donnée cryptographique unique DCA, représentative du dictionnaire ; des moyens de suppression de blocs de la chaine de blocs en fonction d'au moins 20 un paramètre de suppression prédéterminé. Selon une implémentation préférée, les différentes étapes des procédés selon l'invention sont mises en oeuvre par un ou plusieurs logiciels ou programmes d'ordinateur, comprenant des instructions logicielles destinées à être exécutées par un processeur de données selon l'invention et étant conçu pour commander l'exécution des différentes 25 étapes des procédés. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. 30 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 3062499 6 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 lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. 5 Le support d'informations 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 une disquette (floppy disc) ou un disque dur. 10 D'autre part, le support d'informations 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 peut être un circuit intégré dans lequel 15 le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant 20 matériel ou à un ensemble de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel 25 composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, passerelle, routeur, etc.) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc.). De la même manière, un composant matériel correspond à tout élément d'un 30 ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un 3062499 7 composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. Chaque composante du système précédemment décrit met bien entendu en 5 oeuvre ses propres modules logiciels. Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en oeuvre de l'invention. 4. Figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à 10 la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1 présente un synoptique de la technique proposée, pour la création d'un dictionnaire d'une chaine de blocs ; la figure 2 présente la création d'un dictionnaire à différentes phases de la 15 croissance d'une chaine de blocs selon la présente technique. la figure 3 décrit un dispositif pour la mise en oeuvre de la méthode de traitement décrite. 5. Description 5.1. Rappel du principe 20 Comme explicité précédemment, le principe général de l'invention consiste à déterminer dans une chaine de blocs, à un instant donné, une base de départ authentifiée, base de départ qui est utilisée comme source pour la génération de blocs ultérieurs. D'une certaine manière, cette base de départ constitue une version compressée de l'ensemble des blocs précédents, qui peut être utilisée comme source fiable de départ pour la 25 création des enregistrements ultérieurs. Dans un mode de réalisation, l'invention consiste à intégrer, au sein de la chaine de blocs, un dictionnaire de valeurs clés authentifiées. Ce dictionnaire de valeurs clés, également appelé dictionnaire par la suite, bénéficie des avantages de la chaine de blocs : visibilité publique et résistance aux attaques. En fonction de l'implémentation (par 30 exemple dans le cas d'une crypto monnaie), le dictionnaire représente un état instantané des engagements des utilisateurs (par exemple un état du compte des utilisateurs) à un 3062499 8 instant donné (moment où le dictionnaire est créé). Dans d'autres cas, le dictionnaire peut représenter un ensemble de valeurs d'autres natures : il peut s'agir de valeurs cumulatives, par exemple dans le domaine de l'énergie de valeurs cumulant une production donnée et/ou une consommation donnée. Il peut encore s'agir de valeurs 5 composites, de types tableau, représentant un ensemble de valeurs ou encore des positions dans un espace géo référencé. Dans le cadre de la présente, un utilisateur peut être un utilisateur humain, au sens commun du terme ; un utilisateur peut aussi être un serveur, un logiciel, un service : la définition de ce qui est considéré comme un utilisateur dépend de l'objet de la chaine de blocs, comme indiqué supra. 10 Quoi qu'il en soit, la création de nouveaux blocs de la chaine de blocs peut être réalisée en utilisant les données du dictionnaire plutôt que les données des blocs précédents. On suppose ainsi, dans le cadre de l'invention, que l'ensemble des utilisateurs de la chaine de blocs est identifiable, au moins à l'aide d'une information publique constante (telle qu'une clé publique appartenant à un couple clé privée/clé publique) : cela 15 signifie que quand bien même l'utilisateur ne peut pas être nommé, il peut à tout le moins être identifié sur la base d'une clé publique, clé qui est diffusée à l'ensemble du réseau de noeuds, afin de vérifier la signature des enregistrements issus de l'activité de l'utilisateur. Avantageusement, postérieurement à l'établissement du dictionnaire, les blocs antérieurs sont supprimés de la chaine de blocs. Cette suppression présente des 20 avantages, notamment celui de réduire la taille de la chaine de blocs, et donc de réduire l'espace nécessaire au stockage de celle-ci. On note que cette suppression n'est pas obligatoire : un noeud peut tout à fait décider de conserver l'ensemble de la chaine de blocs, s'il souhaite par exemple disposer d'un historique complet des enregistrements. L'autre avantage est l'oubli progressif des enregistrements passés : tout comme dans une 25 gestion patrimoniale classique, les enregistrements les plus anciens sont progressivement oubliés, ce qui présente l'avantage d'assurer un certain respect de confidentialité et un relatif maintien de la vie privée. Ainsi, à la différence de la solution proposée par exemple dans le document « BitCoin : A Peer-to-Peer Electronic Cash System », on ne conserve pas un historique de 30 hachage. On rappelle en effet que l'historique de la chaine de bloc est conservé dans le BitCoin en utilisant le principe des arbres de Merkle, principe dans lequel seul le haché 3062499 9 racine (le haché de plus haut niveau) est conservé, afin d'effectuer une vérification des enregistrements réalisés tout au long de la chaine de blocs. Le mécanisme proposé, à l'inverse, consiste bien en une suppression pure et simple des blocs antérieurs à l'établissement du dictionnaire, et non pas en une réduction 5 de la taille de ceux-ci. Pour assurer qu'une telle suppression ne soit pas nuisible à la chaine de blocs, celle-ci est réalisée postérieurement à la création du dictionnaire et à sa diffusion. Plus particulièrement, selon l'invention, la suppression de blocs antérieurs (à la création du dictionnaire) de la chaine de blocs est mise en oeuvre lorsqu'un nombre suffisant de nouveaux blocs de la chaine de blocs est créé (par exemple uniquement 10 lorsque plus de quatre nouveaux blocs ont été créés après la création du dictionnaire, le nombre de blocs étant paramétrable en fonction d'une part de la nature des données des enregistrement et du caractère privé ou public de la chaine de blocs, du nombre de participants, etc.). Cette caractéristique relative à la suppression est importante car elle permet d'assurer que le dictionnaire créé est suffisamment enfoui dans la chaine de blocs 15 pour que sa modification soit en pratique quasiment impossible (comme celle des enregistrements passés). En effet, une autre caractéristique de l'invention est de faire en sorte que le dictionnaire (qui vient d'être créé), soit le point de référence de nouvelles vérifications des enregistrements suivants. En revanche, le dictionnaire n'acquiert la fonction de point de référence qu'après un temps donné, par exemple après un temps 20 prédéterminé ou après qu'un certain nombre d'autres blocs aient été créés, comme explicité précédemment. En d'autres termes, pour un instant donné "t" (déterminé préalablement), un dictionnaire est créé. L'instant "t" en question peut dépendre de plusieurs paramètres, tels que la taille de la chaine de blocs et/ou le temps écoulé depuis la création d'un 25 dictionnaire précédent. Ce dictionnaire, ou une information unique représentative de celui-ci (par exemple un haché du dictionnaire) est par exemple diffusé dans le réseau. Le dictionnaire peut être créé par un ou par plusieurs noeuds du réseau. Plus particulièrement, dans un mode de réalisation, un dictionnaire est créé par une pluralité de noeuds du réseau, lorsque les conditions de création sont réunies. Plus particulièrement 30 encore, le processus de création de dictionnaire est soumis aux mêmes contraintes que la création d'un enregistrement de la base de données (chaine de blocs) : cela signifie que, 3062499 10 lorsque le dictionnaire est diffusé dans le réseau, l'approbation du dictionnaire suit des règles identiques à celles de l'approbation des nouveaux enregistrements eux-mêmes. La création de ce dictionnaire et sa diffusion aux noeuds du réseau n'influe pas sur la création de nouveaux enregistrements, qui restent soumis aux mêmes conditions 5 d'acceptations que celles édictées dans le protocole de la chaine de blocs : lorsque suffisamment de noeuds valident l'enregistrement (par exemple sur la base de l'historique des enregistrements antérieurement réalisées et sur la base de l'horodatage du nouvel enregistrement), celle-ci est considéré comme accepté et est entériné dans la base de données (dans la chaine de blocs). Ainsi, le nouvel enregistrement créé après la création 10 du dictionnaire en lui-même n'est pas basé sur le dictionnaire qui vient d'être créé, mais sur l'historique des enregistrements qui est établi soit depuis le début de la chaine de blocs, soit depuis la création et l'acceptation du dictionnaire précédent (t-1). Dès lors, selon la présente, le risque d'insertion d'un dictionnaire "fantaisiste" dans le réseau est minime. Pour faire accepter un tel dictionnaire par les noeuds, il faudrait que 15 l'attaquant ait à sa disposition une puissance de calcul qui serait supérieure à celle des noeuds "honnêtes" : il faudrait en d'autres termes que les noeuds "frauduleux" soient en mesures d'accepter le dictionnaire frauduleux à une majorité. D'une manière générale, en relation avec la figure 1, le procédé de l'invention comprend, au niveau d'un noeud d'un réseau de noeud de gestion d'une chaine de blocs 20 (base de données répartie) : une étape de détermination (10) d'un instant t de création d'un dictionnaire A[t], courant comprenant pour chaque utilisateur de la chaine de blocs (BC), à l'instant t un couple de type (clé, valeur), en fonction d'au moins un paramètre de détermination prédéterminé ; 25 une étape de création (20), pour ledit instant t de création, à partir de la chaine de blocs (BC), du dictionnaire A[t] en fonction d'au moins un paramètre de création prédéterminé, au sein d'une structure de donnée ; une étape d'obtention (30), à partir du dictionnaire A[t], d'une donnée cryptographique unique DCA, représentative du dictionnaire ; 3062499 11 une étape de suppression (40) de blocs de la chaine de blocs (BC) en fonction d'au moins un paramètre de suppression prédéterminé et optionnellement dudit instant t. Comme explicité précédemment, parmi les paramètres prédéterminés de création 5 d'un dictionnaire, on réalise une distinction entre : l'ensemble des enregistrements depuis la création de la chaine de blocs, et/ou l'ensemble des enregistrements depuis la création d'un dictionnaire précédemment créé. On présente, en relation avec la figure 2, les différentes phases de croissance et de 10 décroissance de la chaine de blocs relativement à la méthode précédemment présentée. Dans une première phase (A), la chaine de blocs (BC) est constituée d'une pluralité de blocs (non représentés). Optionnellement, cette chaine de blocs (BC) peut déjà être basée sur un dictionnaire de référence (T-1). En second lieu (B), après que la chaine de blocs (BC) ait reçue des nouveaux blocs, un dictionnaire est créé et sa donnée 15 cryptographique unique est par exemple insérée dans un enregistrement (TO) (comme s'il s'agissait d'un enregistrement classique). De nouveaux blocs (NBC) sont ajoutés (C) à la chaine de blocs en lien avec les blocs précédents tout en enfouissant l'enregistrement (TO). Lorsque suffisamment de nouveaux blocs sont ajoutés (NBC+xBs), les blocs antérieurs à l'enregistrement (TO) sont supprimés (D). Le dictionnaire lié à l'enregistrement (TO) 20 devient alors le point de référence. Puis lorsque la nouvelle chaine de blocs (NBCC) atteint une taille déterminée (et/ou lorsqu'un temps déterminé s'est écoulé et/ou lorsqu'un autre évènement survient), le processus est réitéré (E) et un nouvel enregistrement T1 est ajouté. Ainsi, la taille de la chaine de blocs reste relativement constante et à tout le moins n'excède pas une taille prédéterminée. Par ailleurs, les calculs réalisés sur cette chaine de 25 blocs sont facilités. Ainsi, en fonctionnement « nominal », Il y a presque toujours dans la chaîne « active » (au moins) « deux » dictionnaires : l'un est à la base de la chaîne et sert de référence (pour vérifier les enregistrements) et l'autre est un bloc normal tant qu'il n'a pas été succédé par un nombre de blocs prédéterminé (par exemple six, à tout le moins supérieur ou égal à quatre). Lorsque cela arrive, le premier dictionnaire est obsolète, et le 30 second dictionnaire devient le bloc de base (on supprime les blocs précédents). 3062499 12 Selon la présente, comme explicité précédemment, la diffusion de la donnée cryptographique unique, représentative du dictionnaire nouvellement créé est optionnelle. Cette diffusion peut être avantageusement réalisée en adjoignant cette donnée cryptographique à un enregistrement prenant place dans la chaine de blocs, à titre 5 de métadonnée de cet enregistrement. Pour ce faire, on s'assure que la donnée cryptographique unique est suffisamment courte pour qu'elle n'excède pas la longueur des métadonnées de l'enregistrement. Dans un autre mode de réalisation, la donnée cryptographique unique est par exemple insérée dans un enregistrement de la chaine de blocs, au même titre que toute autre donnée : il ne s'agit donc pas de données cachées. 10 Le dictionnaire, en tant que tel, peut, lorsqu'il n'est pas directement inclus dans la chaine de blocs, être diffusé auprès d'un hébergeur tiers. Cet hébergeur ne bénéficie pas nécessairement du statut de tiers de confiance : en effet, dans la mesure où la donnée cryptographique unique est dérivée du dictionnaire, il importe peu que celui-ci soit hébergé auprès d'un tiers de confiance, dans la mesure ou la vérification de l'intégrité du 15 dictionnaire (c'est à dire le calcul de la donnée cryptographique du dictionnaire) implique la comparaison avec la donnée cryptographique unique de référence (celle calculée au moment de la création du dictionnaire). Ainsi, toute altération ultérieure du dictionnaire entraine nécessairement une modification de la donnée cryptographique que l'on peut calculer sur ce dictionnaire et donc entraine une invalidation de celui-ci. L'avantage de 20 cette décentralisation du dictionnaire est de ne pas nécessiter un espace de stockage du dictionnaire dans la chaine de blocs. On réduit donc ainsi la taille de la chaine de blocs, particulièrement lorsque le nombre d'utilisateurs générant des enregistrements est important. De plus, astucieusement, le dictionnaire n'est diffusé auprès d'un hébergeur tiers que lorsqu'il prend la fonction de point de référence. Ainsi, c'est seulement lorsque le 25 dictionnaire devient un point de référence pour l'adjonction de nouveaux enregistrements que le dictionnaire devient accessible chez l'hébergeur. On assure ainsi, comme pour la création de nouveaux enregistrements, que le dictionnaire est assez ancien (et donc que la donnée cryptographique unique est suffisamment enfoui dans la chaine de blocs), avant qu'il soit hébergé en dehors de la chaine de blocs. 30 5.2. Description d'un mode de réalisation 3062499 13 Le mode de réalisation présenté ici, décrit en relation avec la figure 2, s'applique plus particulièrement aux chaines de blocs qui mettent en oeuvre une crypto monnaie, par exemple de type "BitCoin". L'objet du procédé de traitement mis en oeuvre est ici de réaliser une "compression" de la chaine de blocs (sous la forme d'un arrêté de compte), 5 compression qui est réalisée lorsqu'un nombre de blocs de transactions financières suffisant est atteint. Cette compression peut être réalisée de manière autonome par un noeud, sans qu'il soit nécessaire d'avertir les autres noeuds. Avantageusement, cependant, cette compression est mise en oeuvre par un nombre significatif de noeuds et est propagée à l'ensemble du réseau de noeuds. 10 On rappelle, pour cet exemple du "BitCoin", qu'un bloc de la chaine de blocs est une structure de données dans laquelle qui contient un ensemble de transactions et un entête de bloc. L'entête de bloc contient, de manière classique, un haché du bloc précédent (formant la chaine), un haché racine et un nombre (nonce). Dans ce mode de réalisation, le dictionnaire représente le solde des comptes de 15 tous les utilisateurs à un instant donné. Concrètement, le dictionnaire est une structure de données dans laquelle est enregistrée tous les soldes de tous les utilisateurs à un instant donné, noté t. On note A[i,t] le solde d'un utilisateur i à un instant t. On note A[t], le solde de tous les utilisateurs à un instant t, A[t] étant ainsi un tableau, pouvant être enregistré dans toute structure de données adéquate. 20 Le dictionnaire A[t] peut être obtenu par tout noeud ou utilisateur du réseau à l'aide des informations publiques de la chaine de blocs : à partir de l'historique des transactions (c'est-à-dire des données contenus dans les enregistrements) de la chaine de blocs (et éventuellement d'un dictionnaire précédemment obtenu A[t-1]), on met en oeuvre : 25 une étape de détermination d'un temps de référence t courant, [temps pour lequel un arrêté de compte est effectué] en fonction d'au moins un paramètre prédéterminé (le paramètre prédéterminé étant par exemple un nombre de blocs de la chaine de blocs et/ou un temps écoulé depuis la détermination d'un temps de référence précédent (t-1); 30 une étape de calcul, pour chaque utilisateur, d'un solde de compte, le solde étant obtenu par l'application, sur un solde initial, à un temps de référence t-1 3062499 14 précédent, d'un ensemble (potentiellement vide) de transactions de crédit et/ou de débit effectuées par ledit utilisateur, délivrant un dictionnaire courant A[t] ; une étape de calcul d'une donnée cryptographique unique à l'aide du dictionnaire courant A[t]; 5 Cette donnée cryptographique unique est par exemple un haché du dictionnaire courant A[t]. Ce haché peut être calculé à l'aide d'une fonction de hachage prédéterminée (comme par exemple la fonction SHA-256). Avantageusement, ce haché (c'est à dire la suite d'octets) respecte au moins un critère prédéterminé de formation et/ou de temps auquel il est formé. 10 Par exemple, un premier Haché peut être obtenu à partir du dictionnaire A[t]. Ce haché de niveau 1, nommé H1=H(A[t]) est alors concaténé avec un nombre aléatoire (nonce) N, pour former une donnée intermédiaire DI=H(A[t]) + N. Un deuxième haché H2 est alors calculé sur la base de la donnée intermédiaire H2=H(DI) de sorte que ce deuxième haché respecte au moins un critère prédéterminé (par exemple un certain nombre 15 d'octets ou de bits à 0). Le nombre aléatoire N est modifié par le noeud qui effectue ce calcul jusqu'à l'obtention de ce critère pour le haché H2. Alternativement, le haché de niveau 1 (H1) est simplement ajouté dans l'entête d'un bloc. Ce haché de niveau 1 du bloc participe alors, comme entrée, à la détermination du haché du bloc. Le haché du bloc est calculé de la manière suivante H(Bloc) = H(H- 20 1,Hracine, H(A[t]), N). Les valeurs H-1, Hracine et H(A[t]) sont connues. Le nombre aléatoire (nonce) N est alors successivement modifié pour obtenir un haché de bloc H(Bloc) respectant au moins un critère prédéterminé (par exemple un certain nombre d'octets ou de bits à 0). L'avantage de cette inclusion est de permettre une intégration naturelle dans la 25 création des blocs de la chaine de blocs, en respectant les critères usuellement mis en oeuvre pour la détermination d'un haché de blocs. Alternativement, la création du dictionnaire et son insertion dans un bloc peut être réalisée à tout moment, par exemple lors de la création d'une transaction TO par un utilisateur. Au moment où la transaction TO est réalisée par l'utilisateur, celui-ci calcule le 30 dictionnaire A[tO], où tO correspond au temps auquel la transaction TO est effectuée. Un haché de ce dictionnaire H(A[t0]) est attaché à la transaction, par exemple en insérant ce 3062499 15 haché dans des métadonnées de la transaction. Le dictionnaire, en tant que tel (c'est à dire l'ensemble des comptes d'utilisateurs), peut être stocké au sein d'un ou plusieurs blocs ou être conservé par l'utilisateur. Il est à noter que le mécanisme décrit dans ce mode de réalisation, n'entraine pas 5 de modification du mécanisme de chaîne de blocs existant et peut donc être appliqué directement sur une infrastructure existante (par exemple Bitcoin). Il n'y a pas de différence pour les autres utilisateurs (c'est-à-dire qu'il s'agit simplement d'un compromis local réalisé entre auditabilité et mémoire). Au-delà de l'avantage évident d'avoir des exigences de quantité de mémoire plus 10 faibles (ce qui rend la présente technique adaptée pour les petits appareils), le fait de ne conserver que les soldes disponibles conduit à une vérification plus rapide de la validité de la transaction: Il est beaucoup plus facile de vérifier qu'un compte donné dispose des fonds pour une transaction. Cette exploitation plus rapide, en particulier pour les mineurs (i.e. les utilisateurs qui participent à la validation de la chaine de blocs), crée une incitation 15 économique qui encourage les utilisateurs à la diminution de la taille de la chaine de blocs : cette diminution augmente en effet un peu les chances d'être récompensés (i.e. c'est à dire les chances de trouver un nonce N qui satisfait les exigences de la chaine de blocs). Toutefois, il n'est pas suffisant d'encourager les noeuds à comptabiliser des 20 transactions telles que TO. En effet, un noeud peut tout simplement calculer ces informations pour son propre bénéfice (avec ou sans diffusion, utilisant un code MAC au lieu d'une fonction de hachage, de sorte que seul celui qui calcule le MAC à accès au dictionnaire). Deux méthodes permettent de résoudre le problème de diffusion du dictionnaire : 25 la première approche consiste à rémunérer la clé à TO et le dictionnaire A [tO]. De cette façon, les utilisateurs sont récompensés pour le partage de cette information. la deuxième approche consiste à rémunérer la création de transactions telles que TO. Cette approche n'est pas nécessairement compatible avec les chaînes de bloc 30 existantes, mais peut aisément être incorporée. Dans ce scénario, après qu'un nombre prescrit de N de blocs a été ajouté, tous les mineurs seraient en 3062499 16 concurrence pour calculer TO (par exemple selon la méthode présentée précédemment), et le bloc résultant pourrait être récompensé plus que d'habitude ; Après avoir calculé ce bloc, le compteur à N est réinitialisé. Comme cela a été exposé précédemment, on note que A [tO] peut être stocké dans 5 un format compressé sur un seul serveur et partagé par plusieurs utilisateurs. Une fois qu'un nouveau bloc A [tu] a été créé et que suffisamment de blocs ont été ajoutés pour sécuriser T1, il n'y a plus besoin de A [tO] et il peut être supprimé. 5.3. Autres caractéristiques et avantages On décrit, en relation avec la figure 3, un dispositif électronique de minage mis en 10 oeuvre pour diminuer la taille de la chaine de blocs, selon le procédé décrit préalablement. Par exemple, le dispositif électronique de minage comprend une mémoire 31 comprenant par exemple une mémoire tampon, un processeur de traitement général 32, équipée par exemple d'un microprocesseur, et pilotée par un programme d'ordinateur 33, et/ou une mémoire sécurisée 34, un processeur de traitement sécurisé 35, pilotée par un 15 programme d'ordinateur 36, ces unités de traitement mettant en oeuvre des procédés de traitement et de suppression de blocs décrits précédemment, pour diminuer la taille de la chaine de blocs et faire en sorte que celle-ci reste comprise dans des limites préalablement définies. À l'initialisation, les instructions de code du programme d'ordinateur 36 sont par 20 exemple chargées dans une mémoire avant d'être exécutées par le processeur de traitement sécurisé 35. Le processeur de traitement 35 reçoit en entrée au moins une donnée représentative d'un temps ou bien une donnée représentative d'une transaction à effectuer ou d'un enregistrement à créer. Le processeur de traitement sécurisé 35 met en oeuvre les étapes du procédé de traitement, selon les instructions du programme 25 d'ordinateur 36 pour déterminer la nécessiter d'effectuer un calcul d'un dictionnaire basé sur les enregistrements précédents et calculer une données cryptographique unique associée à ce dictionnaire. Pour cela, le dispositif électronique de minage comprend, outre la mémoire 34, des moyens de communications, tels que des modules de communication réseau, des moyens 30 de transmission de donnée et des circuits de transmission de données entre les divers composants du dispositif électronique de minage. 3062499 17 Les moyens précédemment décrits peuvent se présenter sous la forme d'un processeur particulier implémenté au sein d'un terminal, tel qu'un terminal d'utilisateur, ou encore d'un serveur. Selon un mode de réalisation particulier, le dispositif électronique de minage met en oeuvre une application particulière qui est en charge de la réalisation 5 des opérations précédemment décrites, cette application étant par exemple fournie par le fabricant du processeur en question afin de permettre l'utilisation du processeur. Pour ce faire, le processeur comprend des moyens d'identification uniques. Ces moyens d'identification uniques permettent d'assurer l'authenticité du processeur. Les moyens mis en oeuvre peuvent, selon les modes de réalisation, être des circuits 10 ou processeurs électroniques spécifiquement construits et optimisées pour effectuer un traitement de l'information le plus rapidement et/ou efficacement possible. Par exemple, des circuits spécifiques de chiffrement de données peuvent être mis en oeuvre au sien du dispositif afin de garantir une efficacité accrue du chiffrement. Il en est de même pour le calcul du dictionnaire, qui peut être mis en oeuvre sous la forme d'un processeur 15 particulier, adapter au type d'enregistrement à traiter, afin de réduire le temps et l'énergie nécessaire au calcul de ce dictionnaire. 20 REVENDICATIONS1. Procédé de réduction de la taille d'une base de données répartie de type chaine de blocs, procédé mis en oeuvre par un dispositif électronique, appelé noeud, connecté à un ensemble de noeud formant un système de gestion de base de donnée répartie, procédé caractérisé en ce qu'il comprend : une étape de détermination (10) d'un instant t de création d'un dictionnaire A[t], courant comprenant pour chaque utilisateur de la chaine de blocs, à l'instant t un couple de type (clé, valeur), en fonction d'au moins un paramètre de détermination prédéterminé ; une étape de création (20), pour ledit instant t de création, du dictionnaire A[t] en fonction d'au moins un paramètre de création prédéterminé, au sein d'une structure de donnée ; une étape d'obtention (30), à partir du dictionnaire A[t], d'une donnée cryptographique unique DCu, représentative du dictionnaire ; une étape de suppression (40) de blocs de la chaine de blocs en fonction d'au moins un paramètre de suppression prédéterminé. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend, postérieurement à l'étape d'obtention (30), une étape d'insertion de la donnée cryptographique unique DCu au sein d'un enregistrement d'un bloc de ladite chaine de blocs. 3. Procédé selon la revendication 2, caractérisé en ce que ledit paramètre de suppression prédéterminé comprend un paramètre relatif au nombre de blocs créés depuis l'insertion de la donnée cryptographique unique DCu au sein d'un enregistrement d'un bloc de ladite chaine de blocs. 4. Procédé selon la revendication 3, caractérisé en ce que le nombre de blocs créés depuis la création du dictionnaire courant est supérieur ou égal à quatre. 3062499 19 5. Procédé selon la revendication 1, caractérisé en ce que l'étape de suppression de blocs de la chaine de blocs comprend la suppression de l'ensemble des blocs de la chaine de blocs antérieurs audit dictionnaire courant. 5 6. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'obtention (30), à partir du dictionnaire A[t], de la donnée cryptographique unique DCu, comprend une étape d'application, sur la structure de données dudit dictionnaire, d'une fonction de hachage, délivrant un haché dudit dictionnaire. 10 7. Procédé selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comprend en outre au moins une étape de transmission de la donnée cryptographique unique DCu, à au moins un noeud dudit ensemble de noeuds. 8. Procédé selon la revendication 7, caractérisé en ce que ladite étape de 15 transmission comprend : - une étape de création d'un enregistrement de la chaine de blocs ; - une étape d'adjonction, à titre de métadonnées dudit enregistrement, de la donnée cryptographique unique DCu une étape d'insertion, au sein d'un bloc courant de la chaine de blocs, dudit 20 enregistrement. 9. Dispositif de réduction de la taille d'une base de données répartie de type chaine de blocs, dispositif au sein d'un dispositif électronique, appelé noeud, connecté à 25 un ensemble de noeud formant un système de gestion de base de donnée répartie, dispositif caractérisé en ce qu'il comprend : - des moyens de détermination (10) d'un instant t de création d'un dictionnaire A[t], courant comprenant pour chaque utilisateur de la chaine de blocs, à l'instant t un couple de type (clé, valeur), en fonction d'au moins un paramètre de 30 détermination prédéterminé ; 3062499 20 des moyens de création (20), pour ledit instant t de création, du dictionnaire A[t] en fonction d'au moins un paramètre de création prédéterminé, au sein d'une structure de donnée ; des moyens d'obtention (30), à partir du dictionnaire A[t], d'une donnée 5 cryptographique unique DCA, représentative du dictionnaire ; des moyens de suppression (40) de blocs de la chaine de blocs en fonction d'au moins un paramètre de suppression prédéterminé. 10. Produit programme d'ordinateur téléchargeable depuis un réseau de 10 communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution d'un procédé de réduction selon la revendication 1 à 8, lorsqu'il est exécuté par un processeur. 15