Phát triển các nhà phân phối ứng dụng Développement d’applications distribuées ( middlewaremicroservices) et décentralisées (blockchain) dans les domaines de la finance, la supply chain et l’industrie
Introduction
Dans ce chapitre, nous allons présenter d’une manière générale, le cadre d’étude (IFI : Institut Francophone International), la structure d’accueil pour ce stage (Talium) et le projet.
Présentation du cadre d’étude : IFI
Présentation
Established in 1993 as the Institute of Francophonie for Computer Science, and renamed the International Francophone Institute in November 2014, IFI is a higher education and research institution focused on New Information and Communication Technologies Since 2014, IFI has been a member of the National University of Vietnam, with its facilities located on the second floor of building C3 at 144 Xuan Thuy, Cau Giay, Hanoi.
Offres de formation et Organisation
Today, IFI offers four training programs: Networks and Communication Systems, Intelligent Systems and Multimedia, Digital and Editorial Communication, and Banking, Finance, and FinTech The administration consists of a management team supported by a scientific council and various divisions The organizational structure of IFI's administration is illustrated in the diagram below, Fig 1.1.
Structure d’accueil
Founded in 2012 by digital transformation specialists Julien Brodier and François De Chezelles, TALIUM 1 is a Digital Services Company (ESN) that excels in new technologies and IT solutions for businesses The company develops and integrates customized solutions in blockchain and business applications, offering a range of specialized services to meet the evolving needs of its clients.
Blockchain technology offers significant support for businesses at various stages of their projects It can assist from the initial ideation phase of use cases, guiding overall project direction, to change management and the technical development of solutions Additionally, blockchain can facilitate the creation of a Proof of Concept or a Minimal Viable Product (MVP) and aid in migrating existing applications to Distributed Ledger Technologies (DLTs) Furthermore, it can provide targeted technical interventions as needed.
— Services ICO/TGEElle accompagne les entrepreneurs dans le montage de leur solution technique dans le cadre d’ICOs, et prend en charge l’architecture et le développement logiciel du projet de A à Z.
As an expert in Oracle middleware technologies, she provides technical advice and architectural solutions for application development Additionally, she specializes in creating advanced business mobile applications that are compatible with all mobile platforms and can operate offline.
Contexte et problématique du projet
Distributed Ledger Technologies (DLT) are poised to transform financial markets significantly, impacting both financial products and the underlying market infrastructure.
Asset tokenization, which involves the digital representation of real assets on distributed ledgers or the issuance of traditional asset classes in tokenized form, is central to the blockchain revolution The shared electronic recording system (DEEP) provides numerous advantages, including enhanced security, increased liquidity, and streamlined transactions.
— Une plus grande ouverture de marché géographique et temporelle,
— La réduction des cỏts permise par la suppression de certains intermédiaires,
— La transparence sur les conditions d’émission des titres financiers digitaux,
— La possibilité des procédés de conformité, la perspective de nouvelles structures de marché.
Since 2018, Talium has been developing the Talium Assets 2 project, a platform for the tokenization of various financial instruments using new technologies This initiative provides the backdrop for the internship topic.
Cette plateforme proposée en marque blanche aux intermédiaires en investisse- ment fait le pont entre les émetteurs et les investisseurs.
Objectifs du sujet
Les objectifs de stage sontde comprendre les enjeux de gouvernance des réseaux de blockchainsetd’implémenter des microservices sécurisésrépondant aux bonnes pratiques de développement : design patterns, softcraftsmanship qui sont :
— Initialisation des détenteurs de jetons :module qui permet de dématérialiser le registre physique des mouvements titres avec les dates exactes du mouvement.
— Registre des mouvements de titres :module de synchronisation du système à la blockchain afin d’extraire les transactions liées au jeton
An abstract ledger enables the creation of a comprehensive record that associates all transactions of a company, allowing for the duplication of a token along with its transaction history on a different blockchain.
— Gestion de remboursement d’obligation :module va donc assurer le rembourse- ment de ces emprunt au investisseurs.
2 https://www.talium-assets.com/fr/
Conclusion
The International Francophone Institute (IFI) is part of the National University of Vietnam, dedicated to training international master's students It offers four specialized programs: intelligent systems and multimedia, communication networks, banking finance and fintech, and digital and editorial communication Additionally, IFI provides internship opportunities for students nearing graduation I completed my final internship at Talium, an IT services company focused on digital transformation projects with expertise in Blockchain.
Introduction
This chapter focuses on the exploration of various concepts and technologies utilized in the development of a SaaS platform for tokenization We will begin by presenting blockchain technology and the tokenization of financial instruments Next, we will discuss SaaS architecture, followed by an examination of microservices and middleware Finally, the last section will analyze existing solutions in the field.
Blockchain
Historique
The architecture of blockchain technology was first outlined in 1991 by researchers Stuart Haber and W Scott Stornetta, who proposed a computer solution for timestamping digital documents to ensure they could not be backdated or altered.
Their system utilized a secure cryptographic blockchain to store timestamped documents In 1992, the Merkle tree protocol was introduced, enhancing the system's efficiency by allowing multiple documents to be combined into a single block However, this technology was forgotten, and the patent expired in 2004, four years before the creation of Bitcoin.
En 2004, l’informaticien et activiste cryptographique Hal Finney (Harold Thomas Finney II), lance un systốme appelộ RPoW (ô Reusable Proof Of Work ằ pour ô Preuve de travail rộutilisable ằ).[6]
In late 2008, a white paper introduced Bitcoin, a decentralized peer-to-peer electronic payment system Distributed via a cryptography-related email list by an individual using the pseudonym Satoshi Nakamoto, the Bitcoin network relies on the HashCash proof-of-work algorithm Unlike traditional systems that depend on a trusted computing function, Bitcoin utilizes a decentralized peer-to-peer protocol to prevent double spending by tracking and verifying transactions.
Le 3 Janvier 2009, le Bitcoin est né quand le premier bloc de Bitcoin est miné par Sa- toshi Nakamoto, le bloc offrait une récompense de 50 Bitcoins Le premier destinataire de Bitcoin fut Hal Finney, qui reỗut 10 Bitcoins de la part de Satoshi Nakamoto dans la première transaction mondiale de Bitcoins, le 12 Janvier 2009.
Définition de la Blockchain [7]
Blockchain is a secure technology for storing and transmitting information, functioning like a distributed database with added cryptographic protection and the ability to maintain a history of all transactions among participants These transactions, which include value exchanges, property transfers, and notarizations, occur through a chain of blocks containing the data, hence the term "blockchain." Unlike traditional databases, blockchain introduces a decentralized governance model that operates without intermediaries or the need for a third-party authority This innovation challenges the role of traditional trust actors, such as notaries and banks, paving the way for a new and disruptive approach to organizational structures.
FIGURE2.1 – Schéma de la blockchain [7]
Blockchain has introduced a new form of decentralized governance that is integrated and managed by technology, eliminating the need for intermediaries and the presence of a third-party authority This characteristic sets it apart from traditional databases.
En somme, la technologie Blockchain repose sur trois grands principes techniques fondamentaux :
1 Une architecture décentraliséeou architecture pair à pair pour assurer la rési-
2 L’utilisation decryptographieasymétrique pour garantir la sécurité des infor- mations
3 La mise en place d’un algorithme, appeléconsensus, pour éliminer le risque de fraude et garantir la confiance au sein du système.
Peer-to-peer (P2P) is a computer networking model that enables equal communication between computers, allowing them to distribute and receive data or files Unlike the client-server model, each client in a P2P network also acts as a server This structure enhances and speeds up data exchanges among multiple computers within the network.
Centralized architecture refers to a system where all necessary resources for processing are gathered on a central machine or node, typically accessed through terminals connected to a central computer This central computer can directly control all peripherals that are physically connected to it or manage them via a terminal server If capable, terminals may connect directly to the central computer over a network In client-server architecture, the central machine or node often functions as a central server.
Une architecture ou un réseau informatique est dit distribué dès lors que toutes les ressources ou informations du réseau ne sont pas centralisées sur une même machine.
In a distributed architecture, information is spread across the network without a central organ, ensuring that if one node becomes inactive due to an attack, the information remains accessible through other nodes This design exemplifies robustness and resilience, making it a foundational principle of the Internet, which is built on distributed architecture.
La cryptographie asymétrique
La cryptographie symétrique consiste à chiffrer puis déchiffrer un message en uti- lisant la même clé et le même algorithme.
Asymmetric cryptography, also known as public key cryptography, is a groundbreaking concept introduced by Diffie and Hellman It effectively addresses the key distribution problem found in symmetric cryptographic systems by implementing digital signatures.
Cette méthode se base sur le principe de deux clés :
— Une clé publique, permettant le chiffrement.
— Une clé privée, permettant le déchiffrement.
The public key is accessible to anyone wishing to encrypt a message, which can only be decrypted with the confidential private key Asymmetric cryptography is also employed to ensure message authenticity; the message's hash is encrypted using the private key and attached to the message Recipients then decrypt the hash with the public key to verify the sender's identity, a process known as digital signature.
La signature numérique est un mécanisme permettant de garantir l’intégrité d’un document électronique et d’en authentifier l’auteur, par analogie avec la signature ma- nuscrite d’un document papier.
Digital signatures are a crucial component of data security and integrity on a blockchain They are essential in most blockchain protocols, primarily used to secure transactions and transaction blocks, transfer sensitive information, distribute software, manage contracts, and detect and prevent external tampering in various applications.
Les signatures numériques utilisent la cryptographie asymétrique, ce qui signifie que l’information peut être partagée avec n’importe qui, grâce à l’utilisation d’une clé publique.
Les signatures numériques sont uniques au signataire et sont créées à l’aide de trois algorithmes :
— Un algorithme de génération de clé, fournissant une clé privée et publique.
— Un algorithme de signature qui combine les données et la clé privée pour créer une signature.
— Un algorithme qui vérifie les signatures et détermine si le message est authen- tique ou non en fonction du message, de la clé publique et de la signature.
Les principales caractéristiques de ces algorithmes sont :
Rendre absolument impossible l’élaboration de la clé privée sur la base de la clé publique ou des données qu’elle a cryptées.
S’assurer de l’authenticité d’une signature basée sur le message et la clé privée, vé- rifiée par la clé publique.
Le mécanisme de consensus
Consensus is a fundamental issue in distributed systems that requires two or more agents to agree on a specific value necessary for computation Given that some of these agents may be unreliable, the consensus process must be resilient The need for consensus mechanisms arises to ensure the secure updating of a process or state according to defined state transition rules, allowing a distributed set to execute these transitions Essentially, consensus enables a collection of distributed processes to reach an agreement on a value or action despite the presence of certain failing processes (Correia, 2011) In blockchain technology, this agreement is crucial, necessitating verification and acceptance by all network members, commonly referred to as consensus.
To achieve consensus in a distributed mechanism, various algorithms can be employed In a blockchain network, consensus is crucial for preventing dishonest actors from introducing potentially invalid information into the database (Swanson, 2015) The specific consensus mechanism utilized for a given blockchain depends on several factors, including the level of trust between parties, alignment of their interests, and aspects related to the network's structure and timing (Correia, 2011).
2.2.4.1 La Proof-of-Work (PoW), ou preuve de travail
Le protocole de Proof-of-Work est le plus utilisé de tous les consensus blockchain. Depuis 2009, il a pu démontrer sa résistance et sa sécurité aux différentes tentatives d’attaques.
In the Proof-of-Work protocol, the network participants known as miners must solve complex mathematical problems that require significant computational power to confirm transactions.
To achieve this, a mathematical process known as hashing is employed Hashing enables the recording of transaction data into blocks and linking them together Various types of hashing exist, such as SHA-256, which is utilized in Bitcoin Once the hash is recorded in the blockchain, it becomes tamper-proof.
A miner is rewarded for each block they successfully validate and confirm Their earnings are directly proportional to the computational power they can deploy to solve the problem.
2.2.4.2 La Proof-of-Stake (PoS), ou preuve d’enjeu
Proof-of-Stake (PoS) operates on a fundamentally different principle than Proof-of-Work (PoW) and does not require significant computational power In PoS, consensus participants are akin to shareholders in a business entity, granting them the privilege to engage in the consensus mechanism.
Proof of Stake (PoS) is a significantly less costly consensus mechanism compared to Proof of Work (PoW), as it does not require energy expenditures or specialized hardware To validate a block, nodes must demonstrate ownership of a certain amount of cryptocurrency and stake it on the network The more cryptocurrency a node holds, the higher the likelihood it will be selected to update the blockchain's ledger PoS assumes that these stakeholders are most motivated to defend against network attacks, which could jeopardize their investments.
2.2.4.3 La Delegated Proof of Stake (DPoS), ou preuve d’enjeu déléguée[12]
Emergée plus récemment, la Delegated Proof-of-Stake tend à répondre aux fai- blesses de la PoS et PoW en proposant un modèle hybride.
DPoS consensus operates on the same fundamental principle as PoS, but requires block producers to be elected by community members This election system ensures that the blockchain is not dominated by a small group, such as a miner with significant computational power or a PoS forger holding a large number of tokens.
Lisk est un très bon exemple de protocole DPoS Sa blockchain prévoit l’élection de
101 délégués responsables du mécanisme de consensus Ces délégués sont élus par les détenteurs de jetons lisks, et doivent reverser à aux électeurs une partie de leurs gains.
2.2.4.4 Preuve d’Autorité, ou Proof of Authority (PoA)[12]
In a proof-of-authority consensus, blocks and transactions are validated by pre-approved accounts, making the process largely automatic Aside from ensuring that the computer is secure, no additional actions are required To become a validator in this consensus model, your identity must be formally verified and displayed on the blockchain, as it is your identity and reputation that are at stake, rather than your computational power or wealth.
Il y a donc trois piliers sur lesquels ce consensus repose :
A reliable method to unequivocally verify a person's identity is essential The validation process is intentionally challenging, making the loss of validator status a significant concern for those who fail A standardized selection procedure ensures that all validators can trust one another By establishing a reputation system tied to individual identities, validators are motivated to perform transactions efficiently, honestly, and transparently Failure to do so could link their identity to a negative reputation, jeopardizing their hard-earned role as a validator.
However, this system has significant drawbacks, the most notable being its centralization The necessity to select validators indicates that a central authority indirectly controls the network Consequently, this consensus mechanism is well-suited for blockchains established by governmental administrations.
However, it is crucial to note that this approach is not suitable for crypto-assets intended to function as currency, where decentralization is vital A genuinely decentralized cryptocurrency cannot experience the same issues as the global banking and monetary system This is precisely why the concept of decentralization was central to the work of Satoshi Nakamoto.
Efficace d’un point de vue énergétique Extrême rapidité des transactions.
2.2.4.5 Practical Byzantine Fault Tolerance (PBFT)
PBFT (Practical Byzantine Fault Tolerance) is a replication algorithm designed to tolerate Byzantine faults, ensuring consensus coherence as long as two-thirds of the network nodes are secure (i.e., neither malicious nor faulty) This is achieved through protocols that select a leader to validate transactions and securely change leadership However, this method requires all generating nodes to be aware of each other and to communicate directly, which necessitates a private network with limited scalability to maintain performance.
Le fonctionnement de la blockchain
To understand how blockchains operate, it's best to start with a purely monetary example, such as Bitcoin In this context, a transaction essentially involves three key pieces of information: who is giving, what is being given, and who is receiving.
Par exemple, on peut imaginer que Dissi veuille donner deux bitcoins à Mawueyan.
Transactions between users on the network are first grouped into blocks Once this step is completed, it is essential to verify that Dissi has the necessary funds to complete the transaction before it is recorded on the blockchain The process is straightforward, as the blockchain does not allow overdrafts: for Dissi to send bitcoins to Mawueyan, he must have received them beforehand The individuals responsible for validating the transactions are known as "miners."
During the verification process, Dissi's transaction history was reviewed to ensure that the two bitcoins he received had not been spent again This step is crucial to prevent double spending of the funds Once the verification is complete, the block containing the transaction between Dissi and Mawueyan is validated by miners, utilizing techniques that vary depending on the type of blockchain This process achieves distributed consensus, which means that all nodes agree on the current state of the network.
In the Bitcoin blockchain, the technique known as "Proof-of-Work" involves solving complex algorithmic problems Once a block is validated, it is timestamped and added to the blockchain, making the transaction visible to the recipient and the entire network Mawueyan now owns two bitcoins.
FIGURE2.5 – Fonctionnement de la blockchain [23]
Les types de la Blockchain
Pour rappel, la blockchain est une technologie qui permet le stockage et la trans- mission d’informations de manière transparente et sécurisée Il existe aujourd’hui trois types de blockchain [15] :
A public blockchain enables transactions to be recorded and validated by the entire network, allowing anyone to write and read data without the need for a central regulatory authority, making it a permissionless solution This type of blockchain functions like an immutable ledger maintained by all participants, known as miners, who verify transactions and validate blocks Miners play a crucial role in ensuring the security, reliability, and continuous updating of data, and they are rewarded with crypto-assets for their efforts.
A public blockchain is a decentralized peer-to-peer network that enables direct exchanges between participants without intermediaries, relying on trust This type of blockchain is open to everyone, allowing users to conduct and verify transactions, often in exchange for rewards While transactions on a public blockchain are pseudonymous rather than anonymous, individuals' identities are not directly recorded; however, they can be traced through their public addresses, which are visible to the entire network and essential for transaction execution.
A consortium blockchain involves multiple private entities that collaborate for mutual benefit, with block validations decided by a majority of key members rather than the entire network Only these decision-makers have the authority to verify the validity of blocks This type of blockchain operates on a decentralized system with adjustable writing permissions, where nodes are private and cannot be challenged by users Certain information may be made public at the discretion of the decision-makers.
Access to this blockchain is less centralized, typically managed through an authority designated for each participating company This authority is responsible for delegated access management, ensuring that participants are identifiable, often through the use of aliases To ensure the reliability of information and the convergence of solutions to problems, a mechanism must be in place to guarantee trust in the network and the data being transmitted This is achieved through a consensus algorithm, with proof of work being the most well-known example, popularized by Bitcoin.
A private blockchain is a centralized technology that requires permission for access, often referred to as a "permissioned" blockchain The management of its infrastructure, rules, and operations is entirely centralized, facilitating information exchanges among various partners Data recorded on this blockchain is timestamped and signed, ensuring that information is exchanged at specific dates and times, with the authors being identifiable.
The security level is inherently high, with encrypted transactions and identifiable participants In the absence of direct identification, an administrator can access a correspondence table linking an alias to a physical person, ensuring that only the alias is recorded on the blockchain, in compliance with European and French legal recommendations.
This type of blockchain is primarily utilized by businesses, such as banks, that are interested in blockchain technology but are hesitant to adopt a public blockchain By starting with a private blockchain, these organizations can establish a trusted third party, maintain the privacy of their transactions, and ensure high levels of security and confidentiality.
The use of purely private blockchain technology is technically intriguing as it eliminates distributed ownership and authority from the outset However, it offers several appealing advantages for institutions during implementation, including simplified governance, familiar participants, reduced costs, increased speed, and enhanced confidentiality.
Les smart contrats
Smart contracts are one of the most promising applications of blockchain technology These autonomous programs automatically execute predefined conditions recorded on the blockchain once initiated They operate similarly to conditional statements, functioning on an "if-then" basis, where specific conditions trigger corresponding outcomes.
Les avantages des contrats intelligents vont de pair avec la blockchain.
— Rapidité et précision :les contrats intelligents sont numériques et automatisés.
Time is saved by automating the processing of entries, reconciling, and correcting errors commonly found in manually filled documents Additionally, computer code offers greater accuracy compared to the legal jargon typically used in traditional contracts.
Smart contracts automatically execute transactions based on predetermined rules, ensuring transparency and trust among participants The signed records of these transactions are shared, eliminating any concerns about information being altered for personal gain.
Blockchain transaction records are secured through digital signatures, making them highly resistant to tampering Each individual record is linked to both its preceding and following entries within a distributed ledger, meaning that altering a single record would require modifications to the entire chain.
Smart contracts eliminate the need for intermediaries by allowing participants to rely on visible data and technology to accurately execute transactions There is no requirement for an additional person to validate and verify the terms of an agreement, as these are embedded within the code itself.
Les tokens
Un token, ou jeton en franỗais, est un actif digital qui reprộsente une certaine va- leur, pouvoir ou droit dans un réseau.
Les jetons peuvent être transférables, échangeables d’un individu à un autre sans pas- ser par un intermédiaire, et en temps réel Il n’est pas possible de les dupliquer.
Les tokens permettent généralement de régir les relations entre les participants de ce réseau.
Thanks to blockchain technology, particularly Ethereum, it is possible to create tokens for various purposes For instance, tokens can be issued that grant specific rights, such as voting or ownership rights The utility of each token is determined and customized by its creators through a smart contract established at the time of the token's creation.
Il existe trois grandes catégories de jetons, même si certains rentrent dans les trois(ou aucune) :les utility tokens, les security tokens et les equity tokens.
Le SaaS (Software as a Service)
Architectures des solutions SaaS
SaaS solutions are primarily built on two types of architectures: multi-instance and multi-tenant In this context, "tenant" refers to the client’s team or organization.
In a multi-instance architecture, multiple companies run their own distinct instances of the application, each with its own database This setup ensures that each company has separate access to its data, maintaining data privacy and security.
Now let's explore another type of architecture: multi-tenant architecture In this model, multiple companies share a single instance of an application, which can be replicated if necessary, utilizing a common database While this architecture offers limited flexibility, it streamlines the process of adding features and fixing code bugs.
Tokenisation
Définition
Asset tokenization is the process of issuing tokens on a blockchain According to Blockchain France, a token is a digital asset customized by its creator, issued and tradable on a blockchain, possessing characteristics similar to cryptocurrency, such as immutability, uniqueness, and secure transaction records In other words, tokenization creates a digital representation of an asset in the form of a token on a blockchain This process registers the asset and its associated rights onto a digital token, allowing for instant and secure management and exchange on the blockchain.
Les Avantages de la tokénisation
La tokenisation d’actifs financiers présente plusieurs avantages :
— Une meilleure sộcurisation, transparence et traỗabilitộ des ộchanges
— Une meilleure efficience et une plus grande rapidité
— Une démocratisation de l’investissement ; possibilité d’acquérir une fraction de token
— Une ouverture de marché globale pour les actifs non cotés, autrement peu acces- sibles de l’étranger
Étude de l’existant
Santander [17]
Le 12 septembre 2019, le groupe bancaire espagnol Santander a émis des obli- gations tokenisées sur la blockchain Ethereum pour une valeur totale de 20 millions d’USD La procédure de cette émission d’obligations de Santander sur la blockchain se déroule comme suite :
This step enables issuers to create off-chain legal documents for bonds, store them with a custodian, and subsequently generate the corresponding bond tokens within a smart contract, which are then sent to the bondholder (seller).
2 Une tokenisation de la monnaie des banques commerciales
Simultanộment, l’argent est censộ ờtre stockộ chez un dộpositaire hors chaợne. Les jetons d’argent sont émis dans ce contrat intelligent et envoyés à l’investis- seur (acheteur).
3 Un échange du jeton obligataire contre un jeton monétaire
There are two additional smart contracts; one registers eligible entities for token ownership, while the other facilitates the execution of delivery against payment settlements However, no further information has been provided The known smart contracts can only be viewed through a bytecode decompiler, significantly limiting their readability for external parties.
4 Rachat de jetons d’argent(c’est-à-dire un rachat) d’un jeton monétaire contre de la monnaie fiduciaire La dernière étape du processus est la tokenisation in- verse (c’est-à-dire le rachat) de ces jetons d’argent Le Santander USD est ensuite détruit, et le montant équivalent en monnaie fiduciaire est censé être libéré hors chaợne.
Par conséquent, ce processus de rachat n’est toujours pas transparent pour les parties externes.
Le processus d’émission et d’échange de tokenisation d’obligations de Santander repose sur un système de livraison contre paiement (DvP).
FIGURE2.9 – Illustration of the Delivery versus Payment process [17]
EquiSafe SAS
Equisafe est une startup qui se positionne comme “banque d’investissement digi- tale” ayant une plateforme de tokenisation et une solution de levées de fonds.
Equisafe offre donc une infrastructure de marché non cotée pour les entrepreneurs, les investisseurs et les actionnaires.
1 La gestion du back office
— La tenue digitale des registres légaux des actionnaires et des employés
Companies maintain digital records similar to paper stock movement registers, tracking the evolution of their capital They configure shareholder policies and ensure the effectiveness of operations over time.
— La gestion des transactions et la mise à jour de la table de capitalisation
Equisafe gère les flux et les registres : ce qui est pratique pour finaliser une transaction.
— La dématérialisation de la gouvernance
Consultation des opérations de gouvernances
— Gestion des cashflows, des séquestres et des souscriptions
Equisafe offers escrow accounts, identifies financial flow labels, and automatically generates subscription-as-a-service funnels that comply with all regulatory aspects This ensures transparent cash flow tracking and enables real-time calculations of internal rates of return (IRR) and return on investment (ROI).
Création de marché secondaire ; Automatisations des règles de cession et d’acquisition prévues dans le pacte.
— Génération de la documentation juridiqueautomatiquement en fonction du contexte.
— Organiser le reporting et la communicationFournir une vue synthétique et chronologique de la vie de la société aux intervenants juridiques et finan- ciers
2 La gestion de l’identitépermet de vérifier l’éligibilité des investisseurs pour réa- liser une transaction et à matérialiser l’accord lors de la signature d’un contrat financier.
— Suivi des positions en temps réel
— Accès à un marché primaire de souscription en ligne
— Le cash-out à travers un marché de gré-à-gré pan-européen
Mipise
Mipise is a Fintech company that specializes in developing white-label solutions aimed at digitizing financial activities and promoting collaborative economy practices Below are the various ranges of solutions offered.
1 Une solution de plateforme de crowdfunding crowdsourcing en marque blanche.
2 Une solution de gestion dématérialisée des opérations sur le non coté : tenue de registre de mouvements de titres avec certification Blockchain, animation de place de marché, gestion des Assemblées Générales et des PV.
3 Une solution de digitalisation du bulletin de souscription pour les fonds de Pri- vate Equity et les Sociétés de Gestion.
— Gestion dynamique du bulletin de souscription
— Invitation à souscrire en mode direct ou indirect (100% digital)
— Personnalisation des étapes du workflow et des questionnaires investisseurs
— Contrôles de cohérence, retours en arrière et corrections facilités
— Génération automatique du bulletin de souscription
— Signature électronique eIDAS (multi-signatures possible)
2 Monitoring du processus de souscription
— Suivi de l’avancée d’une souscription en cours
— Tableaux de bord de gestion des souscriptions
— Contrôles de cohérence, retours en arrière et corrections facilités
— Espaces de gestion selon les rôles : back-office, middle-office, compliance, signataires etc.
— Gestion des équipes (multi middle-offices par zones géographiques et/ou par fonds)
— Traỗabilitộ, piste d’audit, horodatage des actions avec certification Block- chain possible
— Interfaỗage à des outils de gestion via API : E-Front, Sales Forces, Unicia, Souscript, Intralink, etc.
— Chargement des pièces justificatives en fonction de la nature des investis- seurs (particuliers, sociétés, PPE, bénéficiaires effectifs, etc.) et de leur ni- veau de risque
— Contrôle de la pièce d’identité du souscripteur
— Accès dépositaire (processus de validation des KYC)
— Notifications et alertes (dates de péremption, etc.)
— Due diligence des pièces justificatives
— Tableau de bord des investissements
— Coffre-fort électronique : bulletins de souscription et autres documents
— Boợte de rộception des messages
— Conservation des données pour des souscriptions ultérieures
— Envoi et suivi des invitations en ligne
— Pré-remplissage possible des bulletins de souscription
— Tableau de bord du portefeuille des ventes (par conseiller et/ou par tête de réseau)
— Vision des commissions en temps réel
— Hotline téléphonique avec possibilité de basculer l’appel aux équipes in- ternes SGP
— Workflows acheteur vendeur dédiés à une opération de transfert de titres
Mt Pelerin Group SA
Mt Pelerin is a Swiss fintech company leveraging blockchain technology to foster a new era of financial digitalization It offers the Bridge Protocol, an open-source platform designed for the tokenization of assets, enabling the issuance and management of security tokens on public blockchains.
Bridge Protocol permet de gérer l’émission, la distribution, les transferts, la com- pliance et les opérations de titres numériques sur blockchains publiques.
Ce service permet de configurer, déployer un nouvel actif sur la blockchain au choix et de gérer la vente
Assure la structuration de compliance on-chain en ajoutant une ou plusieurs règles à l’actif Elles définissent les règles de cession de l’actif.
3 Compliance KYC / AML et vérification d’identité
Permet d’identifier facilement les clients et investisseurs selon les processus de compliance KYC / AML suisse de premier ordre.
Bridge Protocol can be deployed on any EVM-compatible blockchain Currently, it is live on Ethereum, Binance Smart Chain (BSC), Polygon (formerly known as Matic), and xDai networks.
Synthèse
Various platforms provide different functionalities for tokenization and blockchain management Santanda focuses on bond tokenization, while Mipise offers a blockchain-based registry for security movements managed by the issuer Mt Pelerin specializes in the pure issuance of tokens on the blockchain, but both Mt Pelerin and EquiSafe have been noted for their complex user interfaces In contrast, Talium facilitates seamless tokenization, allowing tokens to circulate across multiple platforms (wallets and secondary markets) that adhere to the same standard (ERC-1400) Talium empowers investors to manage their tokens while maintaining issuer oversight and digitalizes the entire investment lifecycle.
Conclusion
In this chapter, we reviewed the various technologies that can assist in achieving the objectives of this internship We also introduced existing platforms and provided a synthesis highlighting the differences between them and the Talium Asset platform The following chapter will focus on the analysis and design of the platform.
Presentation de la plateforme actuelle
Introduction
In this chapter, we will outline the various components necessary for implementing our financial instrument tokenization platform We will discuss the different objectives and expected outcomes, explore the range of functionalities, and then present the overall design, system architecture, and detailed system design.
Objectifs
Talium Asset est une plateforme de digitalisation d’actifs en mode SaaS qui com- porte plusieurs modules comme l’indique la figure ci-dessus.
Le but de notre travail est de participer au développement des nouvelles features de la plateforme.
Utilisateurs cibles
Cette plateforme s’adresse à plusieurs types de clients :
• Les organisations émettrices de titres, souhaitant digitaliser leurs
— Opérations de haut de bilan : augmentation de capital, émission d’obliga- tion, fusion acquisition
— Opération post-trade : règlement-livraison, asset servicing (paiement de di- videndes et coupons)
— Corporate actions : communications, AG (convocation, vote, PV)
• Les Channel Partnerssouhaitant offrir la solution de Talium en marque blanche :
— Banques d’investissement, pour leurs clients émetteurs
— Les sociétés de gestion (assets managers), pour les sociétés de leur porte- feuille ou fonds
— Incubateurs et accélérateurs, pour leurs startups.
— Agences immobilières, pour les copropriétés
— Tiers de confiance habilités à inscrire des mouvements de titres
Spécifications fonctionnelles
Gestion des rôles et des utilisateurs
This feature enables the recording and modification of various roles and permissions on the platform Each permission corresponds to a specific task that a user can perform Permissions are assigned to roles, and a single role can encompass multiple permissions.
The platform allows for the creation of user accounts, assignment of roles, and sending invitation emails with login links By default, each user is assigned the role of "INVESTOR."
This feature allows users to log into the platform using either an email or an invitation link Once logged in, users can access and modify all their account information within the system Each user is uniquely identified by their email, which cannot be changed in their personal information.
FIGURE3.2 – Liste des cas d’utilisations
Gestion des émissions
— Les utilisateurs avec le rôleÉmetteurà travers cette fonction crée des opérations d’émissions des tokens Ces opérations sont deux types :
1 STO Security Token Offerings ou Offre de Token sécurisé : émission des jetons qui sont adossés à des actifs tangibles en temps réel et soumis à des règles fédérales et gouvernementales.
2 ICO Initial Coin Offerings ou offre initiale de titre : opération de création des utility tokens, des jetons qui permettent un accès futur aux produits ou services offerts par une entreprise.
This operation can be either public or private In the case of a private operation, the system records the various users participating in the offer and is responsible for sending emails to them.
— L’opération est soumise à une validation par un utilisateur (administrateur) qui a cette autorisation ou par le même émetteur si ce dernier dispose de cette auto- risation.
— L’émetteur va démarrer l’opération validée, ouvrant ainsi l’offre pour les sous- criptions
— Cette fonction permet également liste des opérations ainsi la progression de chaque opération.
• Soumis :L’opération est enregistrée et en attente de validation par l’administra- teur.
• Arrive prochainement :L’opération validée par l’administrateur et déployée sur la blockchain est en attente de lancement.
• Rejeté :L’opération est annulée par l’administrateur.
• En cours :L’opération est lancée et ouverte aux investisseurs.
• Finis :L’opération est arrivée à la date de fin ou a été arrêtée
La création des opérations suit les étapes suivantes :
1 Enregistrement les détails du jeton et le réseau du blockchain sur lequel sera dé- ployé le token.
2 Enregistrement les détails de l’opération
3 Enregistrement les balances des détenteurs de jetons
4 Enregistrer le nombre minimal et maximal de jetons que l’investisseur pourra détenir ;
5 Choisir le type de l’opération (publique ou privée) et enregistrer les adresses mail
6 Faire une review des informations enregistrées et les valider
7 Consulter la liste des opérations
— Cette fonctionnalité permet à l’administrateur de modifier les informations de l’opération enregistrées par l’émetteur.
— Il pourra aussi consulter ou modifier et ajouter les balances des détenteurs de jetons.
— Confirmer la somme des balances afin de confirmer l’initialisation des balances.
— La dernière action est de valider l’opération et annuler l’opération et donc enre- gistrer les motifs de l’annulation.
La validation déclenchera le déploiement des smart contracts suivant les informa- tions de l’opération et crée les tokens dans les portefeuilles de détenteurs de jetons.
FIGURE3.3 – Liste des cas d’utilisations
Gestion des documents
— L’émetteur enregistre le type de signature qui sera demandé aux investisseurs pour signer les documents On distingue deux types :signature manuelleetsi- gnature électronique
— L’émetteur pourra ajouter , modifier et afficher les documents de l’opération Ces documents sont demandés aux investisseurs lors de la souscription.
FIGURE3.4 – Liste des cas d’utilisations
Règles de transférabilité dynamiques
— L’émetteur enregistre et modifier les règles de transférabilité dynamiques
Gestion d’identité (KYC)
— l’utilisateur de remplir son profil (identité et adresse) et ajouter des documents justificatifs en fonction de leur nature (personne physique ou morale), le pays et leur niveau de risque.
— l’utilisateur de partager ce KYC avec l’émetteur de l’opération à laquelle il parti- cipe.
— l’émetteur de vérifier les informations de l’investisseur, les pièces justificatifs et ensuite d’accepter le KYC.
— l’émetteur de refuser le KYC et d’ajouter un commentaire explicatif à l’utilisateur. Une notification (mail) est envoyée à l’investisseur.
Le KYC aura le statut :
• à remplir :En attente de remplir le profil ou les documents.
• Complet :Toutes les informations sont renseignées
• Refusé :L’émetteur a refusé le KYC de l’investisseur
• Accepté :L’émetteur a accepté le KYC de l’investisseur
FIGURE3.5 – Use case (gestion des identités)
Gestions des souscriptions
— Cette fonctionnalité permet aux investisseurs de sélectionner une offre et d’ache- ter les jetons de cette opération.
— L’investisseur télécharge les documents de souscription pré-remplis, les com- plète et les signe manuellement.
— L’investisseur ajoute les documents signés et les soumet Une notification (mail) est envoyée à tous les utilisateurs ayant un rôle de validation des souscriptions.
— L’émetteur vérifie les documents de souscription et valide ou annule la souscrip- tion si tous les documents requis sont au complet pour permettre à l’investisseur de payer.
— Les émetteurs peuvent consulter la liste de toutes les souscriptions / les investis- seurs ne peuvent consulter que leurs propres souscriptions.
La souscription aura le statut :
• En attente de compléter les document
• En attente de validation des documents :Tous les documents sont soumis par l’investisseur.
• En attente de paiement des jetons souscrits :la souscription est validée
• Payé :Le paiement est enregistré
• Annulé :l’émetteur ou l’investisseur a annulé la souscription.
FIGURE3.6 – Use case (Gestion des souscriptions)
Gestion de paiement
— Cette fonction assure le règlement des souscriptions Ce paiement peut se faire par plusieurs moyens de paiement(virement, carte bancaire, crypto).
— L’émetteur enregistre les comptes bancaires qui seront communiqués aux inves- tisseurs en cas de paiement par virement.
— L’investisseur effectue le paiement suivant le moyen de paiement choisi.
— L’émetteur enregistre le paiement dès qu’il sera en possession de l’argent versé par l’investisseur.
FIGURE3.7 – Use case (Gestion des paiement)
Gestion de portefeuille
— Cette fonctionnalité permet d’afficher la portefeuille avec les détails des investis- sements de l’investisseur.
— L’utilisateur pourra transférer les jetons à partir de son portefeuille à un autre.
— Toutes ces informations proviennent directement de la blockchain.
Le portefeuille de l’investisseur est divisé en trois partitions :
1 Reserved : Les jetons sont transférés ou émis dans cette partition après la vali- dation de la souscription de l’investisseur.
2 Locked : Dès que le payement de la souscription est détecté, les jetons sont transférés de la partitionReservedà la partitionLocked.
3 Released : Après une période de blocage, l’émetteur déplace les jetons de la par- titionblockedde l’investisseur vers la partitionReleased.
L’investisseur peut désormais échanger ses jetons sur le marché secondaire.
Table de capitalisation
— Cette fonctionnalité permet aux émetteurs de lister de l’ensemble des action- naires et de leur pourcentage de détention du capital.
Conception Globale
Architecture Microservice
C’est le coeur de la plateforme qui regroupe plusieurs modules dans une architec- ture de microservices.
With a microservices architecture, the platform is built using independent components that execute each application process as a service These services communicate through a well-defined interface and lightweight APIs, and are developed to fulfill specific business capabilities Below are the various microservices.
— Core :Ce microservice contient presque la plupart de la logique de la plateforme et l’API REST expose plusieurs métiers vers l’extérieur.
— Access :Assure l’authentification des utilisateurs de la plateforme.
— Chain :Service d’interaction avec les blockchain et les smart contracts.
— Sign :Service de gestion de wallet ou portefeuilles des utilisateurs, la signature des transactions.
— Compliance :Service de gestion et d’application des règles de conformité.
— Notification :Service d’envoi de mail aux utilisateurs.
Blockchain
This architecture illustrates the nodes of Talium's private blockchain, built on Hyperledger Besu, an open-source Ethereum client developed under the Apache 2.0 license Based on Java, it is the initial blockchain project on Hyperledger that supports operations on public blockchains Additionally, it leverages other key technologies such as Gorli, Rinkeby, and Ropsten to ensure functionality.
En ce qui concerne la méthode de consensus, elle utilise la preuve d’autorité (Clique et IBFT 2.0) et la preuve de travail (Ethash).
Hyperledger BESU, qui permet de déployer des versions privées d’Ethereum, in- cluant de la confidentialité, des permissions et un autre modèle de consensus (IBFT).
Diagramme d’activité
Authentification
Conformité : vérification d’identité
Vérification manuelle
FIGURE3.10 – Diagramme de séquence de la vérification manuelle
FIGURE3.11 – Diagramme d’activité de la vérification manuelle
Souscription
Diagramme de séquence
FIGURE3.12 – Diagramme de séquence de la souscription
Conclusion
In this chapter, we explored the proposed solution to achieve the project's objectives, detailing the various methods selected for each task We discussed the platform's features, including diagrams, the overall architecture, and the interactions and functionalities of its components In the following chapter, we will present our various works.
Dans ce chapitre, nous aborderons les différentes responsabilités qui m’ont été confiées dans le projet au cours de mon stage.
Initialisation des détenteurs de jetons
Conception
Le processus d’initialisation des soldes de détenteurs se déroule comme suit :
When creating an operation, the holders are temporarily recorded with precise details, including the number of tokens per partition, the CFI code, and the subscription date The issuer then confirms the total to verify the recorded information.
Upon validating the transaction, the issuer confirms the amount once more After this validation, the system deploys the smart contract and registers the users associated with the holders and their wallets Subsequently, invitations are sent out, and the tokens are directly issued into the respective wallets.
— La plateforme permet également d’enregistrer les détenteurs après le lancement de l’opération.
— Une fois les jetons émis, les détenteurs enregistrés sont supprimés.
FIGURE4.1 – Use case de l’initialisation des détenteurs de jetons
FIGURE4.2 – Diagramme d’activité de l’initialisation des détenteurs de jetons
FIGURE4.3 – Diagramme de séquence de l’initialisation des détenteurs de jetons
FIGURE4.4 – Diagramme de classe de l’initialisation des détenteurs de jetons
To access our platform, each user must log in through the designated window The image below informs users that a login link has been sent to their email address.
This is the login page for the platform designed to accommodate users Each user accesses their account using their email address After entering the email, the system verifies the login and sends a connection link containing a token to the user's inbox, allowing them to log in using this link.
This page provides the issuer with an overview of all issued operations It features a button that directs users to the operation creation page and another button that allows users to view the details of a specific operation.
The homepage of the issuer features a comprehensive list of the operations issued, along with buttons for filtering these entries Each operation displays the token symbol, the amount raised, the type of asset, and the status of the operation.
Première étape de la création d’une opération : définition du jeton.
Creating an operation can only be performed by a user with the issuer role and involves six steps The first step defines the characteristics of the token, including symbols, financial classification codes, and the blockchain network for deployment The second step initializes the token holders, while the third and fourth steps outline the specific details of the operation The fifth step determines whether the operation will be public or private, including sending invitations to investors if applicable Finally, the last step verifies the entered information before saving it.
4.1.1.8 Initialisation des détenteurs de jetons
La deuxième étape de la création d’une opération permet d’initialiser des déten- teurs de jetons.
FIGURE4.9 – Liste des détenteurs de je- tons
Figure 4.9 illustrates the initialization step for shareholders, where the total number of tokens to be minted for each holder on the list is verified Meanwhile, Figure 4.10 demonstrates how to add a new holder to the list shown in Figure 4.9 This process includes defining the number of tokens per partition, the subscription date for the operation, and the user's name.
Gestion des mouvements de titres
Conception
Our platform ensures that all operations involving securities are recorded on the blockchain To create a comprehensive record of security movements, the system synchronizes with the blockchain to extract relevant token transactions These transactions are then filtered and logged as security movements in the database, with the latest block number of the synchronized token also being saved.
FIGURE4.11 – Use case de gestion de mouvements de titres
FIGURE4.12 – Diagramme de séquence de consultation des mouvements de titres
FIGURE4.13 – Diagramme de classe des mouvements de titres
4.2.1.4 Liste de mouvements de titres
FIGURE4.14 – Liste de mouvements de titres
The above figure illustrates the synchronized asset movements recorded on the blockchain It highlights the various participants involved, including the holder and beneficiary, during each transaction Additionally, it details the asset class, the number of tokens, and the type of movement, such as anchoring, creation, or transfer.
4.2.1.5 Table de capitalisation à une date donnée
Cette page permet de générer la table de capitalisation à une date.
FIGURE4.15 – Page de la table de capitalisation à une date donnée
One key feature of this module is its ability to calculate and display, based on security movements, the list of bondholders or the capitalization table This table outlines the holders of financial securities that grant access to a company's equity, including their respective share counts and ownership percentages as of a specific date.
Abstract ledger
Diagramme de cas d’utilisation
Diagramme de classe
FIGURE4.17 – Diagramme de classe des abstract ledger
Gestion de remboursement d’obligation
Introduction
Nous avons effectué une étude sur le remboursement des obligations afin de pro- poser des solutions.
A bond is a negotiable security representing a portion of a loan issued by a government, supranational institution, or corporation to finance investments The issuer, or borrower, is obligated to repay the bondholder, or lender, by a predetermined maturity date, except in the case of perpetual bonds Additionally, the issuer compensates the bondholder by paying interest, known as a coupon, at a specified rate and frequency, excluding zero-coupon bonds.
A coupon refers to the annual payment of predetermined interest that companies or governments pay to bondholders This payment is typically expressed as a percentage of the bond's face value.
Il existe trois méthodes de remboursement des obligations émises pour l’émetteur :
Constant annuity repayment involves the bondholder receiving both a coupon payment and a portion of the principal at each period The sum of these two components—coupon and principal repayment—remains consistent throughout the duration of the investment Thus, the annuities are referred to as constant.
— Remboursement par séries égales : À chaque période, l’obligataire percevra une fraction identique du principal.
In fine reimbursement refers to a bond structure where interest payments are made throughout the bond's lifespan, with the full principal amount returned in a lump sum on the final maturity date.
Conception
The issuer establishes a repayment schedule model based on the terms of the bond This model includes the percentage of the principal and interest due at specific times It facilitates the generation of individual schedules for each bondholder, in accordance with the contract terms.
— L’investisseur ou l’obligataire approuve l’échéancier Dans le cas contraire, il doit ajouter motif et les preuves.
— A l’échéance de chaque paiement, la plateforme notifie l’émetteur et l’investis- seur d’un prochain paiement.
The issuer processes the payment and records it on the platform, along with the tokens corresponding to the payment, which will be destroyed once the payment is validated by the investor.
— L’investisseur confirme le paiement ou conteste en apportant les preuves Une troisième partie (une autorité) viendra trancher après une analyse des preuves et les termes de contrat.
— Une fois le paiement confirmé, les jetons sont détruits par la plateforme.
Les différents statuts des remboursements sont :
— Ongoing (Les coupons dont les notification du délai de paiement sont envoyées à l’émetteur et à l’investisseur)
— Payed (Les coupons dont l’émetteur a déjà remboursé)
— Finished ( coupons dont l’investisseur a validé le remboursement)
— Disputed (Les coupons dont l’investisseur n’a pas validé le remboursement)
Nous avons aussi proposé plusieurs processus de rachat afin de détruire (redeem) les jetons.
The process occurs in two stages: on-chain and off-chain The investor requests payment and records their bank details The platform generates a certificate for the investor to sign, after which the obligations are secured These steps take place on the platform.
L’émetteur va procéder à un virement (off-chain) et ensuite enregistrer les preuves du paiement sur la plateforme L’investisseur validera le remboursement et le système effectuera la destruction des jetons.
FIGURE4.18 – Diagramme de séquence du rachat direct d’obligation
4.4.3.2 Rachat direct d’obligation avec contestation
L’inventeur conteste le virement que l’émetteur a enregistré sur la plateforme Il enregistre les preuves Une tierce partie (autorité) intervient pour trancher après avoir vérifié et analysé tous les documents.
FIGURE4.19 – Diagramme de séquence du rachat d’obligation avec contestation
The investor demands payment, leading to the sequestration of bonds In response, the issuer seeks a stablecoin provider to obtain enough coins for repayment These stablecoins are then locked in a smart contract and transferred to the investor, resulting in the destruction of the bonds Consequently, the investor will send the stablecoins to the provider in exchange for cash.
FIGURE4.20 – Diagramme de séquence du Rachat d’obligation avec stablecoins
Quelques écrans
Page de la liste des souscriptions
Cette page liste les souscriptions des investisseurs Sur cette page, l’émetteur valide les souscriptions, distribue les jetons.
FIGURE4.21 – Page de la liste des souscriptions
This page presents a list of investor subscriptions for a specific operation For each operation, users can take actions such as validating or deleting subscriptions, as well as distributing tokens Additionally, the page provides key information including the investor's name, subscription date, and subscription status.
On pourrait exporter cette liste sous format CSV.
Page de souscription de l’investisseur
FIGURE4.22 – Page de souscription de l’investisseur
This page appears after selecting an offer, allowing the investor to enter the number of tokens they wish to purchase They click the radio button to share their KYC data with the issuer, who will verify and validate this information Additionally, the investor selects the currency they will use for payment.
Page de validation de la souscription
FIGURE4.23 – Page de validation de la souscription
Commentaire :Ce figure est la page de notification après la validation de la sous- cription.
Page de portefeuille de l’investisseur
FIGURE4.24 – Page de portefeuille de l’investisseur
This page provides an overview of all the investor's investments, detailing the tokens categorized by partition From this page, investors have the ability to transfer tokens between different partitions.
Conclusion
In this chapter, we outlined the various tasks assigned to me, providing a detailed description of the different modules We also showcased the design process and presented several screens developed for the platform.
In an interconnected world where information evolves rapidly, a swift, integrated, and effective update system is essential to meet the demands of issuers and investors The Talium Asset platform empowers investors to actively monitor and manage their financial flows while providing issuers with a dedicated space to oversee and ensure the smooth execution of all operations related to their securities, such as coupon payments for bonds, dividend distributions for stocks, repayments, and capital increases.
This document outlines the work completed during the final internship for the Master’s degree in Intelligent Systems and Multimedia, focusing on the development of distributed and decentralized applications It details the software requirements specifications, the development process, and the implementation of the platform Additionally, it includes a conceptual analysis of obligation reimbursements and the outcomes of various modules for token holder initialization and securities movements The use of blockchain technology, known for its high data security, provides significant benefits such as the automation of regulatory requirements and contractual constraints through smart contracts, as well as reduced operational costs and automated management of events affecting securities Overall, the platform delivers these advantages to its users.
The article does not cover the topic of dividend payments, which involve distributing profits to shareholders and is a crucial module Future prospects for this project may include the integration of the dividend reimbursement module alongside the previously studied obligation reimbursement module.
[1] http://ifi.vnu.edu.vn/fr/dao-tao/Master-en-Informatique-Specialite-Systemes- Intelligents-et-Multimedia.html
[2] http://ifi.vnu.edu.vn/fr/dao-tao/Master-en-Informatique-Specialite-Reseaux-et- Systemes-communicants.html
[3] http://ifi.edu.vn/fr/dao-tao/Master-en-Banque-Finance-et-Fintech.html
[4] http://ifi.edu.vn/fr/dao-tao/Master-en-Information-Communication-Specialite- Communication-digitale-et-editoriale.html
[5] Haber, S., Stornetta, W.S How to time-stamp a digital document.
[7] Les RPOW d’Hal Finney : un dernier essai avant Bitcoin
[8] https://blockchainfrance.net/decouvrir-la-blockchain/c-est-quoi-la-blockchain/
[9] http://blog.octo.com/quel-consensus-dans-une-blockchain-privee/.
[10] https://www.astuces-aide-informatique.info/7540/peer-to-peer-definition
[11] A Poelstra On Stake and Consensus.
[12] https://bitconseil.fr/blockchain-consensus-pow-pos-dpos/
[13] M Castro, B Liskov, Practical Byzantine Fault Tolerance, Proceedings of the Third Symposium on Operating Systems Design and Implementation, New Orleans, USA, February 1999)
[14] (M Vukolic: The Quest for Scalable Blockchain Fabric: Proof-of-Work vs BFT Re- plication LNCS 9591, Proc iNetSeC 2015.)
[15] http://www.annales.org/ri/2017/ri-aout-2017/RI-AOUT-2017-Article-
[16] Solution SaaS - Quelle est la différence entre une architecture multi-instance et multi-tenant ?
[17] https://research.binance.com/en/analysis/santander-bond
[20] https://blockchainfrance.net/2018/05/22/comprendre-la-tokenisation/
[23] https://blog.ippon.fr/2018/01/08/fonctionnement-dune-blockchain/
* This code has not been reviewed.
* Do not use or deploy this code before reviewing it personally first.
This Solidity smart contract, compatible with version ^0.5.0, utilizes the OpenZeppelin library for secure mathematical operations and ownership management It imports essential contracts for ERC20 token standards and incorporates the ERC1820 protocol for interface registration Additionally, it includes a custom interface for ERC1400 tokens and defines roles for minting through the MinterRole contract, ensuring a structured approach to token management and compliance within the Ethereum ecosystem.
// Extensions import "./extensions/tokenExtensions/IERC1400TokensValidator.sol"; import "./extensions/tokenExtensions/IERC1400TokensChecker.sol"; import "./extensions/userExtensions/IERC1400TokensSender.sol"; import "./extensions/userExtensions/IERC1400TokensRecipient.sol";
*/ contract ERC1400 is IERC20, IERC1400, Ownable, ERC1820Client, using SafeMath for uint256;
// Token string constant internal ERC1400_INTERFACE_NAME = "ERC1400Token"; string constant internal ERC20_INTERFACE_NAME = "ERC20Token";
// Token extensions string constant internal ERC1400_TOKENS_CHECKER "ERC1400TokensChecker"; string constant internal ERC1400_TOKENS_VALIDATOR "ERC1400TokensValidator";
// User extensions string constant internal ERC1400_TOKENS_SENDER = "ERC1400TokensSender"; string constant internal ERC1400_TOKENS_RECIPIENT "ERC1400TokensRecipient";
****************************************/ string internal _name; string internal _symbol; uint256 internal _granularity; uint256 internal _totalSupply; bool internal _migrated;
// Indicate whether the token can still be controlled by operators or not anymore. bool internal _isControllable;
// Indicate whether the token can still be issued by the issuer or not anymore. bool internal _isIssuable;
// Mapping from tokenHolder to balance. mapping(address => uint256) internal _balances;
// Mapping from (tokenHolder, spender) to allowed value. mapping (address => mapping (address => uint256)) internal _allowed;
*********************************************/ struct Doc { string docURI; bytes32 docHash;
// Mapping for token URIs. mapping(bytes32 => Doc) internal _documents;
// List of partitions. bytes32[] internal _totalPartitions;
// Mapping from partition to their index. mapping (bytes32 => uint256) internal _indexOfTotalPartitions;
// Mapping from partition to global balance of corresponding partition. mapping (bytes32 => uint256) internal _totalSupplyByPartition;
// Mapping from tokenHolder to their partitions. mapping (address => bytes32[]) internal _partitionsOf;
// Mapping from (tokenHolder, partition) to their index. mapping (address => mapping (bytes32 => uint256)) internal
// Mapping from (tokenHolder, partition) to balance of corresponding partition. mapping (address => mapping (bytes32 => uint256)) internal
@GetMapping(value = "/users/{userId}/movements", produces "application/json")
@ApiOperation(value = "Get movements register of Authentificated User") public PageImpl getUserMovements(
@PathVariable(name = "userId") @ApiParam(name = "userId", value = "user ID", required = true) long userId,
@ApiParam(name = "page", value = "Index of the movements’ page when pagination is used") @RequestParam(name = "page", defaultValue = "0") int page,
@ApiParam(name = "size", value = "Max number of movements’ in a page when pagination is used") @RequestParam(name = "size", defaultValue = "" + Integer.MAX_VALUE) int size,
@RequestParam(name = "keyWord", required = false)
@ApiParam(name = "keyWord", value = "searched key word", required false) String keyWord,
@RequestParam(name = "sortDirection", required = false) String sortDirection,
@RequestParam(name = "sortBy", required = false) String sortBy) throws ChainApiCallException {
List movementsDto = null; movementPage = movementService.findUserMovement(userId, keyWord, page, size, sortDirection, sortBy); movementsDto = toDto(movementPage.getContent()); if (movementPage != null) { return new PageImpl(movementsDto, movementPage.getPageable(), movementPage.getTotalElements());
} else { return new PageImpl(List.of());
@GetMapping(value = "tge/{tgeId}/movements", produces "application/json")
@ApiOperation(value = "Get movements register of Authentificated User") public PageImpl getMovements(
@PathVariable(name = "tgeId") @ApiParam(name = "tgeId", value
= "TGE ID", required = true) long tgeId,
@ApiParam(name = "page", value = "Index of the movements’ page when pagination is used") @RequestParam(name = "page", defaultValue = "0") int page,
@ApiParam(name = "size", value = "Max number of movements’ in a page when pagination is used") @RequestParam(name = "size", defaultValue = "" + Integer.MAX_VALUE) int size,
@RequestParam(name = "keyWord", required = false)
@ApiParam(name = "keyWord", value = "searched key word", required false) String keyWord,
@RequestParam(name = "sortDirection", required = false) String sortDirection,
@RequestParam(name = "sortBy", required = false) String sortBy) throws ChainApiCallException {
List movementsDto = null; movementPage = movementService.findAllMovement(tgeId, keyWord, page, size, sortDirection, sortBy); movementsDto = toDto(movementPage.getContent()); if (movementPage != null) { return new PageImpl(movementsDto, movementPage.getPageable(), movementPage.getTotalElements());
} else { return new PageImpl(List.of());
@GetMapping(value = "tge/{tgeId}/movementCapitalizationTable", produces = "application/json")
@PreAuthorize("@accessControl.hasAuthorityForTge(’user_data_read’,
@ApiOperation(value = "Get capitalization table from register of given TGE at date") public ResponseEntity getCapitalizationTableAtTime(
@PathVariable(name = "tgeId") @ApiParam(name = "tgeId", value
= "TGE ID", required = true) long tgeId,
@ApiParam(name = "endDate", value = "The End Date of the Capitalization Table") @RequestParam(name = "endDate") long endDate ) { log.info("Retrieving capitalization table from TGE {} at {}", tgeId, Instant.ofEpochMilli(endDate));
List capitalizationTableDtos movementService.getCapitalizationTableAtTime(tgeId,
Instant.ofEpochMilli(endDate)); return new ResponseEntity(capitalizationTableDtos,