0% ont trouvé ce document utile (0 vote)
5 vues8 pages

Bchain

Transféré par

manoula mahboula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues8 pages

Bchain

Transféré par

manoula mahboula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

École Nationale Polytechnique d’Oran – Maurice Audin

Traçabilité Logistique Inviolable : Intégration de la Blockchain


Ethereum dans l’ERP Odoo

Réalisé par : Zinai Manel


Belameiri Fatima Zohra
Filière : Systèmes d’Information
Option : Ingénierie et Management des Systèmes d’Information
Niveau : 5ème année
Département : Génie des Systèmes
Professeur : M. Khiat
Année Universitaire : 2025/2026
1 Introduction Générale
1.1 Contexte : L’impératif de la traçabilité dans la Supply Chain
Dans le monde industriel moderne, la Supply Chain constitue un réseau complexe reliant fournisseurs,
transporteurs, plateformes logistiques et clients finaux. Dans ce contexte, la traçabilité des flux est
devenue un impératif stratégique et réglementaire. Elle permet :

• de garantir l’origine des produits,


• d’assurer la conformité aux normes de sécurité (alimentaire, pharmaceutique, énergétique),

• de minimiser les risques d’erreurs logistiques,


• et de faciliter les opérations de rappel de lots.

Ainsi, une traçabilité fiable n’est plus seulement une exigence opérationnelle, mais une condition
indispensable pour instaurer une confiance durable entre les acteurs de la chaı̂ne logistique.

1.2 Problématique : Les limites du modèle centralisé (ERP)


Malgré ses performances et son haut niveau de modularité, l’ERP Odoo repose sur une base de données
centralisée utilisant PostgreSQL. Ce modèle introduit deux faiblesses majeures :

Mutabilité des données Un administrateur disposant d’un accès avancé, ou un attaquant ayant
compromis le système, peut modifier une date, un identifiant ou un fournisseur dans la base de données,
sans laisser de preuve irréfutable. Cette possibilité de manipulation remet en question l’intégrité des
enregistrements de stock.

Manque de confiance externe Lors d’un audit ou d’une certification, les données internes du système
d’information ne sont pas perçues comme une source totalement neutre. L’entreprise contrôle la base, ce
qui limite la valeur probante des données lors d’un litige, d’un contrôle ou d’un audit qualité.

1.3 Solution proposée : L’ancrage cryptographique sur la Blockchain


Pour lever ces limitations, nous proposons l’intégration d’un mécanisme de traçabilité inviolable basé
sur la Blockchain Ethereum.
Le principe repose sur la création d’un Notaire Numérique :

1. À chaque validation d’un mouvement de stock dans Odoo, les données critiques sont collectées.

2. Ces données sont condensées en une empreinte unique (hachage cryptographique).


3. Cette empreinte est envoyée vers la Blockchain Ethereum privée (déployée via Hardhat).
4. Une fois inscrite dans la Blockchain, la preuve devient immuable et infalsifiable.

Cette approche garantit une traçabilité absolue, car aucune entité — pas même l’entreprise — ne
peut modifier une preuve une fois qu’elle est ancrée dans un bloc miné.

2 Architecture Technique du Projet


2.1 Schéma global de l’intégration
L’architecture repose sur une interaction constante entre la plateforme ERP (Odoo) et la Blockchain
Ethereum utilisée comme registre de confiance. Chaque composant joue un rôle spécifique dans le pro-
cessus de sécurisation des données.

• Odoo collecte les informations du transfert de stock et génère un hachage cryptographique.


• [Link] assure la signature numérique de la transaction et transmet la requête au réseau Blockchain.

1
• Hardhat exécute le Smart Contract, valide la transaction et l’inscrit dans un bloc.
• Ethereum renvoie un Transaction Hash unique à Odoo, servant de preuve inviolable et permanente.

Ce schéma garantit que chaque étape du processus logistique est associée à une preuve blockchain
immuable, assurant ainsi une traçabilité complète et infalsifiable.

3 Phase 1 : Développement du Cœur Blockchain (Backend)


3.1 Conception et Implémentation du Smart Contract
Le cœur du système de traçabilité repose sur le contrat intelligent TrackingRegister, qui agit comme
un registre notarié décentralisé. Son rôle est d’enregistrer de manière immuable les empreintes cryp-
tographiques générées par l’ERP Odoo.

A. Code Source Solidity


Voici l’implémentation finale du contrat déployé sur le réseau local Hardhat :

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract TrackingRegister {

// Structure définissant les métadonnées d’une preuve de traçabilité


struct TrackingEvent {
uint timestamp; // Heure de minage (fournie par la Blockchain)
address sender; // Adresse de l’ERP ayant émis la preuve
}

// Registre associant un Hash de données (ID unique) à son événement


mapping(bytes32 => TrackingEvent) public trackingHistory;

// Événement déclenché à chaque nouvel enregistrement pour le monitoring externe


event EventLogged(bytes32 indexed dataHash, uint timestamp, address sender);

/**
* @dev Enregistre l’empreinte (Hash) d’un document logistique Odoo.
* @param _dataHash L’empreinte SHA-256 générée par l’ERP.
*/
function addTrackingEvent(bytes32 _dataHash) public {

// Sécurité : Emp^
eche d’écraser une preuve déjà existante (Immutabilité)
require(trackingHistory[_dataHash].timestamp == 0, "Event already logged.");

// Stockage définitif dans la Blockchain


trackingHistory[_dataHash] = TrackingEvent({
timestamp: [Link],
sender: [Link]
});

// Émission du log pour confirmation immédiate


emit EventLogged(_dataHash, [Link], [Link]);
}
}

B. Analyse Technique du Code


1. Structure TrackingEvent Le contrat stocke uniquement les informations essentielles :

2
• le timestamp du minage (preuve de temps vérifiée par la Blockchain),
• l’adresse sender correspondant à l’instance Odoo émettrice.

Ce choix minimise les coûts de gaz en évitant de stocker des données volumineuses.

2. Garantie d’Immutabilité grâce au require La ligne suivante est fondamentale :

require(trackingHistory[_dataHash].timestamp == 0, "Event already logged.");

Elle empêche toute tentative d’écrasement d’une preuve déjà existante. Ainsi, une empreinte enreg-
istrée dans la Blockchain devient :

• permanente,
• infalsifiable,

• irréversible.

3. Utilisation de [Link] Contrairement à une horloge serveur (modifiable), le timestamp


blockchain est généré et signé par les mineurs du réseau. C’est une preuve de temps fiable et impossible
à manipuler.

3.2 Déploiement et Infrastructure


1. Simulation du Réseau Ethereum Local Le lancement de la commande :
npx hardhat node
a permis de générer un réseau Ethereum local (EVM) avec des comptes préconfigurés et un minage
instantané.

2. Compilation et Déploiement Le script deploy [Link] a été utilisé pour compiler et trans-
former le code Solidity en bytecode, puis pour le déployer automatiquement sur le réseau Hardhat.

3. Résultat du Déploiement L’exécution du script a fourni :

• Adresse du Contrat Déployé : 0x5FbDB2315678afecb367f032d93F642f64180aa3


• ABI (Application Binary Interface) : Fichier JSON généré automatiquement, servant d’interface
pour permettre à Odoo d’invoquer la fonction addTrackingEvent() via [Link].

Cette adresse et l’ABI constituent les éléments essentiels permettant l’intégration entre Odoo et la
Blockchain.

4 Phase 2 : Développement du Module Odoo (Frontend &


Logique)
Cette phase décrit l’intégration du système de preuve Blockchain au sein de l’ERP Odoo. L’objectif est
d’automatiser la génération, le hachage et l’envoi des données logistiques vers le Smart Contract.

4.1 Héritage du Modèle et Ajout du Champ de Preuve


Pour associer chaque document logistique Odoo à sa preuve Blockchain, le modèle standard [Link]
a été hérité. Cette méthode permet d’étendre proprement les fonctionnalités natives sans modifier le code
de base d’Odoo.

Ajout du champ blockchain tx hash Un champ de type Char a été créé dans PostgreSQL afin de
stocker l’identifiant de la transaction Ethereum. Ce champ est défini avec l’attribut readonly=True,
garantissant qu’aucun utilisateur ne puisse modifier manuellement ce reçu cryptographique.

3
Visibilité dans l’interface Le champ est ensuite intégré dans la vue XML du formulaire de transfert
de stock pour permettre aux équipes logistiques d’accéder facilement au lien de preuve.

4.2 Présentation de l’algorithme d’ancrage


La logique métier d’enregistrement se décompose en trois blocs principaux, présentés ci-dessous.

A. Capture de l’Événement : button validate


Ce bloc constitue le point d’entrée du processus d’ancrage.

• Surcharge de la méthode native : La fonction button validate est redéfinie afin d’intégrer
le module Blockchain. L’appel à super() permet de garantir l’exécution complète des mécanismes
logistiques d’Odoo (réservation, mouvements, affectations).

• Condition de déclenchement : La génération de la preuve n’a lieu que lorsque :


– le transfert atteint l’état done (Fait),
– aucune preuve n’a encore été enregistrée pour ce document.

B. Création de la Preuve : prepare and send hash


Cette fonction exécute la transformation cryptographique des données Odoo :

• Construction des données critiques : Les champs clés (Nom, Date, Emplacements) sont con-
caténés pour produire une chaı̂ne unique.

• Hachage SHA-256 : Cette chaı̂ne est transformée en une empreinte cryptographique de 32 octets,
garantissant :
– intégrité,
– unicité,
– confidentialité (les données originales ne sont pas exposées).
• Checksum Ethereum : La fonction [Link] checksum address() est utilisée pour valider la casse
de l’adresse Ethereum afin d’éviter toute erreur pouvant invalider une transaction.

C. Dialogue avec la Blockchain : Interaction via [Link]


Le module communique avec la Blockchain locale Hardhat en utilisant le protocole standard Ethereum.

• Nonce : Le module récupère le numéro de transaction associé au compte expéditeur afin d’éviter
toute attaque par relecture et d’assurer un ordre strict des transactions.

• Construction de la transaction : La transaction est créée en appelant la fonction addTrackingEvent


du contrat, en lui passant le Hash comme paramètre.
• Signature cryptographique : La transaction est signée à l’aide de la clé privée stockée sur le
serveur Odoo, garantissant l’authenticité de l’émetteur.
• Attente de confirmation : L’appel à wait for transaction receipt suspend l’exécution jusqu’à
ce que l’empreinte soit minée et incluse dans un bloc, assurant une finalité forte.

Ce mécanisme garantit que chaque document logistique validé dans Odoo est automatiquement ancré
dans la Blockchain, offrant une preuve d’intégrité, d’immutabilité et de transparence.

4
5 Phase 3 : Tests et Résultats
Cette phase vise à valider l’intégrité complète de la chaı̂ne de transmission, depuis l’action de l’utilisateur
dans Odoo jusqu’à l’écriture définitive de la preuve dans le registre distribué Ethereum.

5.1 Démonstration du Flux Opérationnel


Les tests ont été réalisés sur un transfert de stock interne. Le scénario opérationnel se déroule en trois
étapes majeures :

• Validation dans Odoo : L’utilisateur clique sur le bouton Valider. Odoo exécute les opérations
logistiques standards, puis déclenche automatiquement le processus d’ancrage Blockchain via le
module développé.
• Traitement sur la Blockchain (Logs Hardhat) : Le nœud Hardhat reçoit la transaction signée
et affiche dans le terminal un message du type : Contract call: TrackingRegister#addTrackingEvent.
Un nouveau bloc est immédiatement miné (par exemple : Block #2 ) contenant l’empreinte cryp-
tographique du transfert.
• Retour d’information vers Odoo : Une fois la transaction confirmée, Odoo récupère le Trans-
action Hash et le stocke automatiquement dans le champ blockchain tx hash. Ce reçu constitue
la preuve irréfutable de l’inscription du mouvement dans la Blockchain.

5.2 Importance de la Configuration des Clés


Le fonctionnement correct de l’ensemble repose sur une configuration précise de quatre paramètres es-
sentiels reliant Odoo à Hardhat :

• RPC URL (Le Pont) : Défini sur [Link] C’est l’interface réseau permettant
à Odoo d’envoyer des commandes à la Blockchain.
• SC ADDRESS (La Cible) : Adresse du contrat intelligent déployé lors de la Phase 1. Elle
indique à Odoo quel registre contacter pour inscrire la preuve.
• SENDER ADDRESS (L’Identité) : L’adresse publique du Compte #0 généré par Hardhat.
Elle identifie l’ERP comme l’émetteur officiel et légitime des transactions.
• PRIVATE KEY (Le Secret) : La clé privée du Compte #0. Elle permet à Odoo de signer
chaque transaction, garantissant son authenticité et empêchant toute usurpation.

Une mauvaise configuration d’un seul de ces paramètres peut empêcher la transaction d’être acceptée
ou signée correctement.

5.3 Analyse de la Preuve et Vérification d’Intégrité


La robustesse du système repose sur la dissociation entre :

• le contenu des données (ce qui a été haché),


• et le horodatage certifié (fourni par la Blockchain).

Méthode de vérification de l’intégrité Si un doute apparaı̂t un an après l’enregistrement d’un


transfert, la démarche de contrôle est la suivante :

1. Re-hachage des données actuelles : Les données présentes dans Odoo (Nom, Produits, Date,
Emplacements) sont réassemblées et hachées à nouveau avec SHA-256.
2. Consultation de la Blockchain : À partir du Transaction Hash stocké dans Odoo, on retrouve
la transaction et le Hash initial inscrit dans le bloc.
3. Comparaison des empreintes :
• Si les deux Hash sont identiques : La donnée est authentique et n’a jamais été modifiée.

5
• Si les Hash diffèrent : Cela prouve de manière mathématique et irréfutable que l’enregistrement
dans Odoo a été modifié après la validation initiale.

Ce mécanisme permet de garantir une traçabilité totale, tout en fournissant une preuve de conformité
robuste aux audits et contrôles qualité.

6 Conclusion
Le projet a démontré la faisabilité et l’efficacité de l’intégration d’une technologie Blockchain dans un
système ERP afin d’assurer une traçabilité logistique inviolable. Grâce à la conception d’un Smart
Contract dédié, au déploiement d’une infrastructure Ethereum privée via Hardhat, et à l’extension fonc-
tionnelle d’Odoo, nous avons pu mettre en œuvre un mécanisme complet d’ancrage cryptographique
garantissant l’intégrité des données de stock.
L’approche proposée répond pleinement aux limites des systèmes centralisés traditionnels :
• Immutabilité des preuves inscrites dans la Blockchain, rendant toute modification a posteriori
détectable.

• Authenticité assurée via la signature numérique du compte ERP.


• Non-répudiation grâce au stockage permanent du Transaction Hash associé à chaque mouvement
de stock.
• Confiance renforcée pour les audits, certifications et contrôles externes.

Les tests réalisés ont confirmé la solidité du flux : validation dans Odoo, génération du Hash, trans-
mission sécurisée vers la Blockchain, minage du bloc, puis retour du reçu numérique. Cette chaı̂ne
opérationnelle illustre la complémentarité entre l’ERP — outil métier — et la Blockchain — registre
distribué de confiance.
En conclusion, ce travail ouvre la voie à une nouvelle génération de systèmes logistiques hybrides,
combinant la richesse fonctionnelle d’Odoo et les garanties cryptographiques de la Blockchain Ethereum.
Il constitue une base solide pour des évolutions futures, telles que l’audit automatique, la certification
réglementaire ou l’intégration de réseaux Blockchain inter-entreprises.

6
References
[1] Odoo S.A., Odoo Documentation: Inventory Management and Traceability, 2024. [En ligne].
Disponible sur: [Link]
[2] Vitalik Buterin, A Next-Generation Smart Contract and Decentralized Application Platform, 2014.
[Ethereum Whitepaper].
[3] Arshdeep Bahga, Vijay Madisetti, Blockchain Applications: A Hands-on Approach, VPT, 2017.
[4] Ethereum Foundation, [Link]: A Python library for interacting with Ethereum, v6.0 Documenta-
tion.

[5] Nomic Foundation, Hardhat: The Ethereum professional development environment, 2024.
[6] Ethereum Foundation, Solidity Documentation, v0.8.20. [En ligne]. Disponible sur:
[Link]

Vous aimerez peut-être aussi