Numerotation (doc)
This commit is contained in:
parent
a7f773dc4b
commit
556df33dcb
@ -2,45 +2,45 @@
|
||||
* 1. [Objectif](#Objectif)
|
||||
* 2. [Portée](#Porte)
|
||||
* 3. [3. Documents de référence](#Documentsderfrence)
|
||||
* 4. [## 4. Variable `SharedPeerList` du SDK (Wasm)](#4.VariableSharedPeerListduSDKWasm)
|
||||
* 5. [5. Structure du stockage en cache](#Structuredustockageencache)
|
||||
* 5.1. [5.1. Relais](#Relais)
|
||||
* 5.2. [5.2. Process](#Process)
|
||||
* 5.3. [5.3. Liste des hashs des messages reçus](#Listedeshashsdesmessagesreus)
|
||||
* 5.4. [5.4. Liste des sockets ouverts](#Listedessocketsouverts)
|
||||
* 6. [6. Caractéristiques générales des messages de type `Message` et de type `MessageConnect`](#CaractristiquesgnralesdesmessagesdetypeMessageetdetypeMessageConnect)
|
||||
* 6.1. [6.1. SharedPeerList](#SharedPeerList)
|
||||
* 6.2. [6.2. SharedProcessList](#SharedProcessList)
|
||||
* 6.3. [6.3. Taille des données](#Tailledesdonnes)
|
||||
* 6.4. [6.4. Preuve de travail](#Preuvedetravail)
|
||||
* 6.5. [6.5. Adresse SP de faucet](#AdresseSPdefaucet)
|
||||
* 7. [7. Traitements par les clients](#Traitementsparlesclients)
|
||||
* 7.1. [7.1. Connexion d'un client à sa liste relais via les messages de type `MessageConnect`](#ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect)
|
||||
* 7.1.1. [7.1.1. Récupération et choix des relais](#Rcuprationetchoixdesrelais)
|
||||
* 7.1.2. [7.1.2. Envoi du message de type `MessageConnect` à chaque relais](#EnvoidumessagedetypeMessageConnectchaquerelais)
|
||||
* 7.2. [7.2. Envoi de `RequestPcd` sur les relais via les messages de type `Message`](#EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage)
|
||||
* 7.3. [7.3. Envoi de `RequestPrd` sur les relais via les messages de type `Message`](#EnvoideRequestPrdsurlesrelaisvialesmessagesdetypeMessage)
|
||||
* 7.4. [7.4. Traitement des messages de type `Message` par les clients](#TraitementdesmessagesdetypeMessageparlesclients)
|
||||
* 8. [8. Traitements par les relais](#Traitementsparlesrelais)
|
||||
* 8.1. [8.1. Traitement des messages de type `MessageConnect` par les relais](#TraitementdesmessagesdetypeMessageConnectparlesrelais)
|
||||
* 8.2. [8.2. Connexion au réseau de relais via les messages de type `MessageConnect` par les relais](#ConnexionaurseauderelaisvialesmessagesdetypeMessageConnectparlesrelais)
|
||||
* 9. [9. 9. Traitement des messages de type `Message` par les relais](#TraitementdesmessagesdetypeMessageparlesrelais)
|
||||
* 9.1. [9.1. Broadcast des messages de type `Message` vers les relais](#BroadcastdesmessagesdetypeMessageverslesrelais)
|
||||
* 9.2. [9.2. Broadcast des messages de type `Message` vers les clients connectés](#BroadcastdesmessagesdetypeMessageverslesclientsconnects)
|
||||
* 10. [10. Connexions aux réseaux de noeuds de bitcoin de réseaux side chain ou mainnet](#Connexionsauxrseauxdenoeudsdebitcoinderseauxsidechainoumainnet)
|
||||
* 10.1. [10.1. Protocole de Découverte des Pairs](#ProtocoledeDcouvertedesPairs)
|
||||
* 10.2. [10.2. Protocole de Transmission des Transactions](#ProtocoledeTransmissiondesTransactions)
|
||||
* 10.3. [10.3. Protocole de Partage des Blocs](#ProtocoledePartagedesBlocs)
|
||||
* 10.4. [10.4. Validation et relais](#Validationetrelais)
|
||||
* 10.5. [10.5. Gestion des Forks](#GestiondesForks)
|
||||
* 10.6. [10.6. Connexion au réseau de nœuds de side chain](#Connexionaurseaudenudsdesidechain)
|
||||
* 10.6.1. [10.6.1. Clients](#Clients)
|
||||
* 10.6.2. [10.6.2. Relais](#Relais-1)
|
||||
* 10.7. [10.7. Connexion au réseau de nœuds de layer 1](#Connexionaurseaudenudsdelayer1)
|
||||
* 10.8. [10.8. Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP)](#HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP)
|
||||
* 11. [## 11. Transactions mainnet Bitcoin](#11.TransactionsmainnetBitcoin)
|
||||
* 11.1. [11.1. Horodatage et ancrage des blocs de la side chain sur Bitcoin](#HorodatageetancragedesblocsdelasidechainsurBitcoin)
|
||||
* 11.2. [11.2. Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin](#RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin)
|
||||
* 4. [## Variable `SharedPeerList` du SDK (Wasm)](#VariableSharedPeerListduSDKWasm)
|
||||
* 5. [Structure du stockage en cache](#Structuredustockageencache)
|
||||
* 5.1. [Relais](#Relais)
|
||||
* 5.2. [Process](#Process)
|
||||
* 5.3. [Liste des hashs des messages reçus](#Listedeshashsdesmessagesreus)
|
||||
* 5.4. [Liste des sockets ouverts](#Listedessocketsouverts)
|
||||
* 6. [Caractéristiques générales des messages de type `Message` et de type `MessageConnect`](#CaractristiquesgnralesdesmessagesdetypeMessageetdetypeMessageConnect)
|
||||
* 6.1. [SharedPeerList](#SharedPeerList)
|
||||
* 6.2. [SharedProcessList](#SharedProcessList)
|
||||
* 6.3. [Taille des données](#Tailledesdonnes)
|
||||
* 6.4. [Preuve de travail](#Preuvedetravail)
|
||||
* 6.5. [Adresse SP de faucet](#AdresseSPdefaucet)
|
||||
* 7. [Traitements par les clients](#Traitementsparlesclients)
|
||||
* 7.1. [Connexion d'un client à sa liste relais via les messages de type `MessageConnect`](#ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect)
|
||||
* 7.1.1. [Récupération et choix des relais](#Rcuprationetchoixdesrelais)
|
||||
* 7.1.2. [Envoi du message de type `MessageConnect` à chaque relais](#EnvoidumessagedetypeMessageConnectchaquerelais)
|
||||
* 7.2. [Envoi de `RequestPcd` sur les relais via les messages de type `Message`](#EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage)
|
||||
* 7.3. [Envoi de `RequestPrd` sur les relais via les messages de type `Message`](#EnvoideRequestPrdsurlesrelaisvialesmessagesdetypeMessage)
|
||||
* 7.4. [Traitement des messages de type `Message` par les clients](#TraitementdesmessagesdetypeMessageparlesclients)
|
||||
* 8. [Traitements par les relais](#Traitementsparlesrelais)
|
||||
* 8.1. [Traitement des messages de type `MessageConnect` par les relais](#TraitementdesmessagesdetypeMessageConnectparlesrelais)
|
||||
* 8.2. [Connexion au réseau de relais via les messages de type `MessageConnect` par les relais](#ConnexionaurseauderelaisvialesmessagesdetypeMessageConnectparlesrelais)
|
||||
* 9. [Traitement des messages de type `Message` par les relais](#TraitementdesmessagesdetypeMessageparlesrelais)
|
||||
* 9.1. [Broadcast des messages de type `Message` vers les relais](#BroadcastdesmessagesdetypeMessageverslesrelais)
|
||||
* 9.2. [Broadcast des messages de type `Message` vers les clients connectés](#BroadcastdesmessagesdetypeMessageverslesclientsconnects)
|
||||
* 10. [Connexions aux réseaux de noeuds de bitcoin de réseaux side chain ou mainnet](#Connexionsauxrseauxdenoeudsdebitcoinderseauxsidechainoumainnet)
|
||||
* 10.1. [Protocole de Découverte des Pairs](#ProtocoledeDcouvertedesPairs)
|
||||
* 10.2. [Protocole de Transmission des Transactions](#ProtocoledeTransmissiondesTransactions)
|
||||
* 10.3. [Protocole de Partage des Blocs](#ProtocoledePartagedesBlocs)
|
||||
* 10.4. [Validation et relais](#Validationetrelais)
|
||||
* 10.5. [Gestion des Forks](#GestiondesForks)
|
||||
* 10.6. [Connexion au réseau de nœuds de side chain](#Connexionaurseaudenudsdesidechain)
|
||||
* 10.6.1. [Clients](#Clients)
|
||||
* 10.6.2. [Relais](#Relais-1)
|
||||
* 10.7. [Connexion au réseau de nœuds de layer 1](#Connexionaurseaudenudsdelayer1)
|
||||
* 10.8. [Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP)](#HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP)
|
||||
* 11. [Transactions mainnet Bitcoin](#TransactionsmainnetBitcoin)
|
||||
* 11.1. [Horodatage et ancrage des blocs de la side chain sur Bitcoin](#HorodatageetancragedesblocsdelasidechainsurBitcoin)
|
||||
* 11.2. [Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin](#RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin)
|
||||
* 12. [Exemples de Code](#ExemplesdeCode)
|
||||
* 13. [Todo](#Todo)
|
||||
|
||||
@ -62,13 +62,13 @@ Ce document concerne les messages de type `Message` et de type `MessageConnect`
|
||||
|
||||
Voir [_Doc_references.md](_Doc_references.md).
|
||||
|
||||
## 4. <a name='4.VariableSharedPeerListduSDKWasm'></a>## 4. Variable `SharedPeerList` du SDK (Wasm)
|
||||
## 4. <a name='VariableSharedPeerListduSDKWasm'></a>## Variable `SharedPeerList` du SDK (Wasm)
|
||||
|
||||
La variable `SharedPeerList` du SDK (Wasm) est une liste de relais partagée avec les relais, c'est la première liste disponible, en dur fournie par le relais sur lequel on est connecté.
|
||||
|
||||
## 5. <a name='Structuredustockageencache'></a>5. Structure du stockage en cache
|
||||
## 5. <a name='Structuredustockageencache'></a>Structure du stockage en cache
|
||||
|
||||
### 5.1. <a name='Relais'></a>5.1. Relais
|
||||
### 5.1. <a name='Relais'></a>Relais
|
||||
|
||||
Le cache est constitué de 2 parties :
|
||||
|
||||
@ -85,7 +85,7 @@ Le cache est constitué de 2 parties :
|
||||
|
||||
Dans chaque partie, les relais sont stockés sous forme d'objets `SharedPeer` (décrits dans [Specs-Datamodel.md](Specs-Datamodel.md)).
|
||||
|
||||
### 5.2. <a name='Process'></a>5.2. Process
|
||||
### 5.2. <a name='Process'></a>Process
|
||||
|
||||
Le cache est constitué de 2 parties :
|
||||
|
||||
@ -98,7 +98,7 @@ Le cache est constitué de 2 parties :
|
||||
|
||||
Dans chaque partie, les `ItemProcess` sont stockés sous forme d'objets `SharedProcess` (décrits dans [Specs-Datamodel.md](Specs-Datamodel.md)).
|
||||
|
||||
### 5.3. <a name='Listedeshashsdesmessagesreus'></a>5.3. Liste des hashs des messages reçus
|
||||
### 5.3. <a name='Listedeshashsdesmessagesreus'></a>Liste des hashs des messages reçus
|
||||
|
||||
Le cache contient une liste des hashs des messages de type `Message` et de type `MessageConnect` reçus, répartie en plusieurs parties :
|
||||
|
||||
@ -110,42 +110,42 @@ Le cache contient une liste des hashs des messages de type `Message` et de type
|
||||
* TxFaucetIdList: Liste des `transaction SP` du faucet.
|
||||
* TxSpIdList: Liste des `transaction SP` reçues.
|
||||
|
||||
### 5.4. <a name='Listedessocketsouverts'></a>5.4. Liste des sockets ouverts
|
||||
### 5.4. <a name='Listedessocketsouverts'></a>Liste des sockets ouverts
|
||||
|
||||
Le cache contient une liste des sockets ouverts, répartie en 2 parties :
|
||||
|
||||
* SocketClientList: liste des sockets ouverts en tant que clients.
|
||||
* SocketServerList: liste des sockets ouverts parles clients.
|
||||
|
||||
## 6. <a name='CaractristiquesgnralesdesmessagesdetypeMessageetdetypeMessageConnect'></a>6. Caractéristiques générales des messages de type `Message` et de type `MessageConnect`
|
||||
## 6. <a name='CaractristiquesgnralesdesmessagesdetypeMessageetdetypeMessageConnect'></a>Caractéristiques générales des messages de type `Message` et de type `MessageConnect`
|
||||
|
||||
### 6.1. <a name='SharedPeerList'></a>6.1. SharedPeerList
|
||||
### 6.1. <a name='SharedPeerList'></a>SharedPeerList
|
||||
|
||||
`SharedPeerList` est une liste de relais. Les relais et les clients partagent cette liste qu'ils complètent au fur et à mesure de leur découverte de relais.
|
||||
|
||||
### 6.2. <a name='SharedProcessList'></a>6.2. SharedProcessList
|
||||
### 6.2. <a name='SharedProcessList'></a>SharedProcessList
|
||||
|
||||
`SharedProcessList` est une liste de `ItemProcess`. Les relais et les clients partagent cette liste qu'ils complètent au fur et à mesure de leur découverte de `ItemProcess`.
|
||||
|
||||
### 6.3. <a name='Tailledesdonnes'></a>6.3. Taille des données
|
||||
### 6.3. <a name='Tailledesdonnes'></a>Taille des données
|
||||
|
||||
Les objets `SharedPeer` indiquent la taille maximale des données pour les messages de type `Message` et de type `MessageConnect` dans l'attribut `data_max_size` du sous attribut `relay`. Les messages plus gros que cette taille sont rejetés.
|
||||
|
||||
### 6.4. <a name='Preuvedetravail'></a>6.4. Preuve de travail
|
||||
### 6.4. <a name='Preuvedetravail'></a>Preuve de travail
|
||||
|
||||
Les objets `SharedPeer` indiquent les caractéristiques de la preuve de travail pour les messages de type `Message` et de type `MessageConnect` dans les attributs `pow_difficulty`, `pow_pattern`, `pow_prefix`, `pow_nonce`, `pow_timeout` du sous attribut `relay`. Les messages ne satisfaisant pas à la preuve de travail sont rejetés.
|
||||
|
||||
### 6.5. <a name='AdresseSPdefaucet'></a>6.5. Adresse SP de faucet
|
||||
### 6.5. <a name='AdresseSPdefaucet'></a>Adresse SP de faucet
|
||||
|
||||
L'utilisateur fournit aux relais une`adresse SP` (SP) dite de faucet `faucet_sp_address`. Un wallet est généré en mémoire pour chaque relais, à la réception des fonds les fonds sont transférés vers l'addresse SP de l'utilisateur et le wallet est supprimé.
|
||||
|
||||
L'utilisateur reçoit en retour une transaction Silent Payment (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address`, cette transaction contient un output supplémentaire avec le hash du message de type `MessageConnect` ou de type `Message` correspondant.
|
||||
|
||||
## 7. <a name='Traitementsparlesclients'></a>7. Traitements par les clients
|
||||
## 7. <a name='Traitementsparlesclients'></a>Traitements par les clients
|
||||
|
||||
### 7.1. <a name='ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect'></a>7.1. Connexion d'un client à sa liste relais via les messages de type `MessageConnect`
|
||||
### 7.1. <a name='ConnexiondunclientsalisterelaisvialesmessagesdetypeMessageConnect'></a>Connexion d'un client à sa liste relais via les messages de type `MessageConnect`
|
||||
|
||||
#### 7.1.1. <a name='Rcuprationetchoixdesrelais'></a>7.1.1. Récupération et choix des relais
|
||||
#### 7.1.1. <a name='Rcuprationetchoixdesrelais'></a>Récupération et choix des relais
|
||||
|
||||
Afin de pouvoir discuter avec les relais du réseau et faire relayer des `RequestPcd` et des `RequestPrd` sous forme de `Message`, l'utilisateur doit se connecter à un ou plusieurs relais, 4 par défaut.
|
||||
|
||||
@ -161,19 +161,19 @@ Les relais dits "navigators" ont un nom de domaine et un certificat SSL afin de
|
||||
|
||||
Les connexions sont en websocket avec ou sans SSL (url commençant par `ws://` ou `wss://`) et les messages sont en JSON.
|
||||
|
||||
#### 7.1.2. <a name='EnvoidumessagedetypeMessageConnectchaquerelais'></a>7.1.2. Envoi du message de type `MessageConnect` à chaque relais
|
||||
#### 7.1.2. <a name='EnvoidumessagedetypeMessageConnectchaquerelais'></a>Envoi du message de type `MessageConnect` à chaque relais
|
||||
|
||||
L'utilisateur parcourt sa liste de relais et envoie un message de type `MessageConnect` en JSON (voir [Specs-Datamodel.md](Specs-Datamodel.md)) à chaque relais pour se connecter, il partage sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
Il n'y a pas de retour attendu pour ce message.
|
||||
|
||||
### 7.2. <a name='EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage'></a>7.2. Envoi de `RequestPcd` sur les relais via les messages de type `Message`
|
||||
### 7.2. <a name='EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage'></a>Envoi de `RequestPcd` sur les relais via les messages de type `Message`
|
||||
|
||||
Une fois le `RequestPcd` finalisé, il est chiffré par la `ProcessKey` du `ItemProcess`. Cette partie chiffrée est la valeur de l'attribut `request_enc` du `Message`.
|
||||
|
||||
L'utilisateur parcourt sa liste de relais et envoie un message correspondant de type `Message` en JSON (voir [Specs-Datamodel.md](Specs-Datamodel.md)) à chaque relais pour se connecter, il partage sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
### 7.3. <a name='EnvoideRequestPrdsurlesrelaisvialesmessagesdetypeMessage'></a>7.3. Envoi de `RequestPrd` sur les relais via les messages de type `Message`
|
||||
### 7.3. <a name='EnvoideRequestPrdsurlesrelaisvialesmessagesdetypeMessage'></a>Envoi de `RequestPrd` sur les relais via les messages de type `Message`
|
||||
|
||||
Une fois le `RequestPrd` finalisé, une transaction SP est réalisée, dans cette transaction plusieurs hashs sont ajoutés (voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md)). :
|
||||
|
||||
@ -209,7 +209,7 @@ Puis le `RequestPrd` est chiffré par la `ProcessKey` du `ItemProcess`. Cette pa
|
||||
|
||||
L'utilisateur parcourt sa liste de relais et envoie un message correspondant de type `Message` en JSON (voir [Specs-Datamodel.md](Specs-Datamodel.md)) à chaque relais pour se connecter, il partage sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
### 7.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>7.4. Traitement des messages de type `Message` par les clients
|
||||
### 7.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>Traitement des messages de type `Message` par les clients
|
||||
|
||||
Le client reçoit un nouveau message dans le socket ouvert avec le relais.
|
||||
|
||||
@ -229,7 +229,7 @@ Déchiffrement du message avec la `ProcessKey` du `ItemProcess` et contrôles su
|
||||
|
||||
Mises à jour des données du cache.
|
||||
|
||||
## 8. <a name='Traitementsparlesrelais'></a>8. Traitements par les relais
|
||||
## 8. <a name='Traitementsparlesrelais'></a>Traitements par les relais
|
||||
|
||||
### 8.1. <a name='TraitementdesmessagesdetypeMessageConnectparlesrelais'></a>Traitement des messages de type `MessageConnect` par les relais
|
||||
|
||||
@ -252,7 +252,7 @@ Mises à jour des données du cache.
|
||||
|
||||
Envoi de la transaction Silent Payment (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address` avec un output supplémentaire avec le hash du message de type `MessageConnect` correspondant.
|
||||
|
||||
### 8.2. <a name='ConnexionaurseauderelaisvialesmessagesdetypeMessageConnectparlesrelais'></a>8.2. Connexion au réseau de relais via les messages de type `MessageConnect` par les relais
|
||||
### 8.2. <a name='ConnexionaurseauderelaisvialesmessagesdetypeMessageConnectparlesrelais'></a>Connexion au réseau de relais via les messages de type `MessageConnect` par les relais
|
||||
|
||||
Le relais parcourt la liste de relais mise à jour et se connecte à chacun des nouveaux relais via un `MessageConnect` en partageant à son tour sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
@ -260,7 +260,7 @@ Envoi vers chaque nouveau relai d'une transaction Silent Payment (SP) contenant
|
||||
|
||||
Il n'y a pas de retour attendu pour ce message.
|
||||
|
||||
## 9. <a name='TraitementdesmessagesdetypeMessageparlesrelais'></a>9. 9. Traitement des messages de type `Message` par les relais
|
||||
## 9. <a name='TraitementdesmessagesdetypeMessageparlesrelais'></a>Traitement des messages de type `Message` par les relais
|
||||
|
||||
Le relais reçoit un nouveau message dans le socket ouvert avec le client.
|
||||
|
||||
@ -281,7 +281,7 @@ Mises à jour des données du cache.
|
||||
|
||||
Envoi de la transaction Silent Payment (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address` avec un output supplémentaire avec le hash du message de type `MessageConnect` correspondant.
|
||||
|
||||
### 9.1. <a name='BroadcastdesmessagesdetypeMessageverslesrelais'></a>9.1. Broadcast des messages de type `Message` vers les relais
|
||||
### 9.1. <a name='BroadcastdesmessagesdetypeMessageverslesrelais'></a>Broadcast des messages de type `Message` vers les relais
|
||||
|
||||
Le relais parcourt la liste de relais mise à jour et se connecte à chacun des nouveaux relais via un `MessageConnect` en partageant à son tour sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
@ -293,7 +293,7 @@ Le relais parcourt la liste de relais mise à jour et envoie le `Message` reçu
|
||||
|
||||
Il n'y a pas de retour attendu pour ce message.
|
||||
|
||||
### 9.2. <a name='BroadcastdesmessagesdetypeMessageverslesclientsconnects'></a>9.2. Broadcast des messages de type `Message` vers les clients connectés
|
||||
### 9.2. <a name='BroadcastdesmessagesdetypeMessageverslesclientsconnects'></a>Broadcast des messages de type `Message` vers les clients connectés
|
||||
|
||||
Le relais parcourt la liste des sockets ouverts et envoie le `Message` reçu à chaque client connecté en partageant à son tour sa liste de relais et sa liste de `ItemProcess`.
|
||||
|
||||
@ -301,11 +301,11 @@ Envoi vers chaque client d'une transaction Silent Payment (SP) contenant des jet
|
||||
|
||||
Il n'y a pas de retour attendu pour ce message.
|
||||
|
||||
## 10. <a name='Connexionsauxrseauxdenoeudsdebitcoinderseauxsidechainoumainnet'></a>10. Connexions aux réseaux de noeuds de bitcoin de réseaux side chain ou mainnet
|
||||
## 10. <a name='Connexionsauxrseauxdenoeudsdebitcoinderseauxsidechainoumainnet'></a>Connexions aux réseaux de noeuds de bitcoin de réseaux side chain ou mainnet
|
||||
|
||||
Pour plus de détails, voir : [Specs-References.md](Specs-References.md).
|
||||
|
||||
### 10.1. <a name='ProtocoledeDcouvertedesPairs'></a>10.1. Protocole de Découverte des Pairs
|
||||
### 10.1. <a name='ProtocoledeDcouvertedesPairs'></a>Protocole de Découverte des Pairs
|
||||
|
||||
Bitcoin utilise un mécanisme de découverte de pairs pour que les nouveaux nœuds puissent trouver d'autres nœuds du réseau. Cela peut être réalisé via des "DNS seeds" (des serveurs DNS qui retournent une liste d'adresses IP de nœuds Bitcoin actifs) ou via une liste de nœuds connus codée en dur dans le logiciel.
|
||||
|
||||
@ -313,7 +313,7 @@ Bitcoin utilise un mécanisme de découverte de pairs pour que les nouveaux nœu
|
||||
|
||||
Dans le cas de 4NK, l'équivalent des DNS est la liste de relais partagée `SharedPeerList`.
|
||||
|
||||
### 10.2. <a name='ProtocoledeTransmissiondesTransactions'></a>10.2. Protocole de Transmission des Transactions
|
||||
### 10.2. <a name='ProtocoledeTransmissiondesTransactions'></a>Protocole de Transmission des Transactions
|
||||
|
||||
* **Mempool et Transactions Orphelines** : Lorsqu'un nœud reçoit une nouvelle transaction, il l'ajoute à son pool de transactions en attente (mempool) avant de la transmettre à ses pairs. Si une transaction fait référence à des entrées inexistantes (par exemple, si elle dépend de transactions non confirmées), elle peut être traitée comme orpheline jusqu'à ce que ses dépendances soient résolues.
|
||||
|
||||
@ -333,7 +333,7 @@ Le protocole P2P de Bitcoin définit la manière dont les nœuds communiquent en
|
||||
|
||||
* **headers** : Utilisé pour transmettre des en-têtes de blocs en réponse à un message getheaders, facilitant la vérification et la synchronisation de la blockchain sans télécharger tous les blocs complets.
|
||||
|
||||
### 10.3. <a name='ProtocoledePartagedesBlocs'></a>10.3. Protocole de Partage des Blocs
|
||||
### 10.3. <a name='ProtocoledePartagedesBlocs'></a>Protocole de Partage des Blocs
|
||||
|
||||
* **Propagation des Blocs** : Lorsqu'un nœud mine un nouveau bloc, il le transmet immédiatement à ses pairs. Comme pour les transactions, la propagation utilise un mécanisme similaire au protocole "gossip" pour assurer une distribution rapide du bloc à travers le réseau.
|
||||
|
||||
@ -347,41 +347,41 @@ Le protocole P2P de Bitcoin définit la manière dont les nœuds communiquent en
|
||||
|
||||
Dans le cas de 4NK, les block relay, compact blocks, et les blocs filters permettent de travailler rapidement et côté client directement sur les données des blocs et transactions du réseau.
|
||||
|
||||
### 10.4. <a name='Validationetrelais'></a>10.4. Validation et relais
|
||||
### 10.4. <a name='Validationetrelais'></a>Validation et relais
|
||||
|
||||
* **Validation** : Les nœuds valident les transactions et les blocs selon les règles de consensus de Bitcoin et les règles de filtrage local avant de les relayer à d'autres nœuds. Cela inclut la vérification des signatures, la conformité des structures de données, et d'autres critères spécifiques à Bitcoin.
|
||||
|
||||
* **Relais** : Après validation, les transactions et les blocs sont relayés aux autres pairs, favorisant ainsi la propagation rapide et la redondance des données à travers le réseau.
|
||||
|
||||
### 10.5. <a name='GestiondesForks'></a>10.5. Gestion des Forks
|
||||
### 10.5. <a name='GestiondesForks'></a>Gestion des Forks
|
||||
|
||||
Lorsque deux blocs sont minés presque simultanément, cela peut créer une bifurcation temporaire dans la blockchain. Les nœuds choisissent le premier bloc qu'ils reçoivent et continuent à construire dessus, mais ils gardent aussi une trace de la branche alternative. Si la branche alternative devient plus longue (c'est-à-dire qu'elle devient la chaîne avec le plus de travail cumulé), les nœuds basculent sur cette chaîne, réorganisant ainsi leur blockchain locale.
|
||||
|
||||
### 10.6. <a name='Connexionaurseaudenudsdesidechain'></a>10.6. Connexion au réseau de nœuds de side chain
|
||||
### 10.6. <a name='Connexionaurseaudenudsdesidechain'></a>Connexion au réseau de nœuds de side chain
|
||||
|
||||
#### 10.6.1. <a name='Clients'></a>10.6.1. Clients
|
||||
#### 10.6.1. <a name='Clients'></a>Clients
|
||||
|
||||
Les clients se connectent comme un nœud depuis le SDK au réseau de nœuds de side chain via les protocoles p2p de Bitcoin. Ils reçoivent les blocs et les transactions (mempool) de la side chain et scannent les transactions de la side chain pour trouver les transactions Silent Payment (SP) correspondantes aux RequestPrd, puis les `RequestPcd` correspondant aux RequestPrd.
|
||||
|
||||
#### 10.6.2. <a name='Relais-1'></a>10.6.2. Relais
|
||||
#### 10.6.2. <a name='Relais-1'></a>Relais
|
||||
|
||||
Les relais hébergent un nœud complet de la side chain, connecté aux autres membres de ce réseau. Voir [Specs-Deployment.md](Specs-Deployment.md) pour les détails de déploiement.
|
||||
|
||||
### 10.7. <a name='Connexionaurseaudenudsdelayer1'></a>10.7. Connexion au réseau de nœuds de layer 1
|
||||
### 10.7. <a name='Connexionaurseaudenudsdelayer1'></a>Connexion au réseau de nœuds de layer 1
|
||||
|
||||
Les relais hébergent un nœud complet du mainnet, connecté aux autres membres de ce réseau. Voir [Specs-Deployment.md](Specs-Deployment.md) pour les détails de déploiement.
|
||||
|
||||
### 10.8. <a name='HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP'></a>10.8. Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP)
|
||||
### 10.8. <a name='HorodatageetancragedesRequestPrdvialestransactionsSilentPaymentSP'></a>Horodatage et ancrage des `RequestPrd` via les transactions Silent Payment (SP)
|
||||
|
||||
Les `RequestPrd` sont horodatés et ancrés sur la side chain via des transactions Silent Payment (SP) contenant les hashs des messages et des signatures associées ( RequestPrd). Ces transactions sont ajoutées aux blocs, eux-mêmes signés par les nœuds "certificator" de la side chain pour être ajoutés à cette timechain. La dépense des UTXO de la transaction Silent Payment (SP) vaut pour signature (validation de la possession de la clé privée associée). Voir [Specs-Deployment.md](Specs-Deployment.md) pour les détails de déploiement.
|
||||
|
||||
## 11. <a name='11.TransactionsmainnetBitcoin'></a>## 11. Transactions mainnet Bitcoin
|
||||
## 11. <a name='TransactionsmainnetBitcoin'></a>Transactions mainnet Bitcoin
|
||||
|
||||
### 11.1. <a name='HorodatageetancragedesblocsdelasidechainsurBitcoin'></a>11.1. Horodatage et ancrage des blocs de la side chain sur Bitcoin
|
||||
### 11.1. <a name='HorodatageetancragedesblocsdelasidechainsurBitcoin'></a>Horodatage et ancrage des blocs de la side chain sur Bitcoin
|
||||
|
||||
Le temps de référence est en blocs. Tous les hashs de blocs de la side chain sont historisés par lots de 6 * 24 blocs. À toutes les hauteurs de blocs multiples de 144, chaque lot de hashs de blocs est l'objet lui-même d'un hash qui est inscrit dans un output de transaction sur Bitcoin (mainnet).
|
||||
|
||||
### 11.2. <a name='RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin'></a>11.2. Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin
|
||||
### 11.2. <a name='RemboursementdesfraisdhorodatageetancragedesblocsdelasidechainsurBitcoin'></a>Remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin
|
||||
|
||||
Le minage "vert" de 4NK permet de produire les jetons nécessaires au remboursement des frais d'horodatage et ancrage des blocs de la side chain sur Bitcoin. La dépense des UTXO de la transaction Silent Payment (SP) vaut pour signature (validation de la possession de la clé privée associée).
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user