Transaction Opération de change

Bonjour,

Lorsque je regarde ce bloc il y a 2 transactions et 4 opérations de change.
Lorsque yannlefranco a fait sa transaction, il n’y a pas d’operations de change liées à son compte.
Lorsque nana m’a fait le virement, elle n’a pas fait d’autres opérations.

Qui peut m’expliquer ce que cela veut dire ? Quelles sont ces opérations de change et contre quelle monnaie ?

cesium bloc

1 J'aime

Une transaction n’est pas juste définie par un mouvement de X Ğ1 d’un compte à un autre.

Chaque DU créé s’ajoute sur le compte, et sont comme des pièces avec chacun une valeur propre. Quand on envoie une transaction, le logiciel choisit des DU disponibles et les utilise en sources pour la transaction. La transaction crée des sorties (UTXO, sortie de transaction non dépensée), au moins une pour le destinataire et une en retour pour l’expéditeur s’il y a un reste.

Les UTXO peuvent être utilisés comme sources de transactions comme les DU.

Une transaction a un nombre maximum de sources. Si toutes les sources disponibles sont petites, et qu’il faut faire une grande transaction, alors on génère des transactions qui prennent plein de petites sources pour en créer de plus grosses, jusqu’à pouvoir générer une transaction valide du montant voulu. Ce sont les transactions de change.

2 J'aime

Merci @tuxmain

mais ça me rajoute 3 questions :

1/ pourquoi ce n’est pas le cas pour la premier transaction du bloc et même pour d’autres transactions que j’ai déjà vues et qui sont de gros montant ?

2/ veux-tu dire que les vieux DU du début présents dans la chaine valent toujours 10G1 ?

3/ cela veut-il dire que les DU sont des jetons identifiés, traçables, qu’on peut retracer leur parcours ? savoir qui les a créé ?

1 J'aime

Si on a des UTXO et DU assez gros pour ne pas dépasser la limite, pas besoin de transactions de change. Par exemple, si on a reçu des transactions de plusieurs centaines de Ğ1, on peut les utiliser comme sources, et on a directement le montant suffisant.

S’ils n’ont pas été dépensés, oui.

Non, pas forcément. Quand un UTXO ou un DU est utilisé en source d’une transaction, il est détruit, et des UTXO en sortie de la transaction sont créés. Ces UTXO ne font pas référence à des DU, c’est comme si on avait fondu des pièces ensemble pour en former de nouvelles. La quantité de métal reste la même, mais on a changé les motifs et la taille des pièces.

Techniquement, pour utiliser un DU en source de transaction, on dit juste qu’on consomme le DU de telle clé publique, créé à tel bloc. Pour créer un UTXO, on dit juste qu’on crée une source de tant de Ğ1 qui nécessite la signature de telle clé publique pour être consommée.

4 J'aime

@tuxmain ok je comprends UTXO.
J’en déduis qu’il est théoriquement possible que lorsqu’on paie en DU on utilise celui de la valeur souhaitée si la clef émettrice en dispose.

@tuxmain quand tu dis « non pas forcément » a la question de la traçabilité d’un DU qui n’est pas passé par une opération de change, en fait je viens de penser que c’est une réponse floue mais qui dit que parfois oui il y a une traçabilité. Je viens de penser à ça car avec un ami nous mangeons des prunes au sirop ce soir en discutant des tokens non fongibles, donc justement de la traçabilité.
Alors est-ce qu’il existe une possibilité de traçage du parcours d’un DU dans la blockchain duniter ?

De l’ explication de tuxmain, je comprends que des qu’un du est consommé dans une utxo, on perd la traçabilité…

2 J'aime

Non tu peux toujours faire des analyses de graphes dans la blockchain pour tracer n’importe quelle transaction, pour remonter aux différents DUs sources.

On peut tout à fait imaginer un outil où tu rentres le hash d’une transaction, et qui t’affiche tout de suite tous DU sources, leurs dates de création et le membre en question, avec des propotions pour chacunes de ces sources.

Par exemple je te pay 25G1 une friteuse.
Je pourrais voir sources:

  • DU de Attilax le 02/05/2019 (27%)
  • DU de Matrograine le 15/12/2020 (54%)
  • DU de Galuel le 24/03/2021 (19%)
3 J'aime

Dans certains cas, les sources seront traçables, mais dans d’autres, on pourra seulement avoir un résultat probabiliste.

Exemple :

  1. Alice envoie 1 source DU à Bob (sans opération de change)
  2. Bob envoie 1 DU à Carole et 1 DU à David dans une même transaction (1 UTXO qui lui vient d’Alice, et 1 source DU à lui, sans opération de change)

Se demander quelle source est allée à Carole ou à David n’a pas de sens. On pourrait dire que Carole et David ont reçu chacun 50% du DU d’Alice et 50% du DU de Bob, mais pourquoi pas une autre répartition ? Le protocole blockchain ne définit pas cela.

5 J'aime

je crois que je commence à comprendre. Cela m’amène à une autre question :
les DUs présents dans la blockchain n’auraient donc pas tous la même valeur de change en G1 ?

La blockchain ne gère pas des transferts de DU, mais des centimes de G1. Il n’y a aucun change g1/DU, il y a juste la valeur du DU en centiG1 au moment où il est créé.

Voir par exemple le bloc qui a créé le DU aujourd’hui. dividend : 1032

2 J'aime

ok je ne comprends plus rien. Si le DU est direct en centiG1 dès le début, alors à quoi sert une opération de change ?

Une transaction, c’est un document qui est écrit et signé (puis enregistré en blockchain).

Une transaction consomme des sources (DU et UTXO) et crée des UTXO. La somme des sources entrantes égale la somme des UTXO sortantes, sinon la TX n’est pas valable.

Hors, le document a un nombre limité de lignes. Je vais simplifier à l’extrême : 100 lignes en tout, pour les sources + les UTXO.

Mon portefeuille A a 150 sources disponibles de 1000 centimes chacune. Je souhaite envoyer toute cette monnaie à un autre portefeuille B. Je ne peux pas tout envoyer dans un seul document, car les 150 sources prennent plus de 100 lignes.

Je vais donc m’auto-envoyer une première transaction « de change » de 99 x 1000 :
99 sources de 1000 (depuis A) + 1 UTXO de 99000 (vers A).

Je vais ensuite pouvoir envoyer à B une seconde transaction de 150 x 1000, en utilisant la UTXO précédemment créée :
1 source de 99000 (depuis A) + 51 sources de 1000 (depuis A) + 1 UTXO (vers B)

Les deux transactions (dont une « de change ») ont un nombre de lignes inférieur ou égal à 100.

Est-ce que c’est plus clair ?


Le terme « de change » ne veut pas dire « changer un DU contre des Ğ1 », il veut dire « changer la monnaie » : donner 10 pièces de 1 pour avoir 1 pièce de 10 et la transporter plus facilement.


En vrai, il y a d’autres éléments que les sources et les UTXO qui entrent en jeu, mais j’ai grandement simplifié pour répondre à ta question. D’autre part, on peut regrouper des sources de montants différents sans souci. Le besoin de faire une transaction de change ne dépend donc pas du montant de la transaction, mais du nombre de sources nécessaire pour l’écrire et du nombre de UTXO.

8 J'aime

ok donc si j’ai bien compris la blockchain ne contient pas seulement des montants comme les comptes bancaires, mais elle contient des pièces et des billets de différentes valeurs. Certains billets ont la valeur des DU alors que d’autres billets sont valorisés au moment des transactions par ce qu’on appelle des opérations de change.

j’ai récemment reçu un virement de 6880 G1, il y a eu 7 opérations de change.
Mais pourquoi une telle usine à gaz ? Pourquoi ne pas simplement transférer un montant en une seule ligne ?

Oui. Le montant d’un portefeuille, c’est la somme de toutes les sources qu’il est en droit de dépenser.

Non. Je veux dire, les montants ne sont pas regroupés par tranche de 10, 20, 50, 100, etc. comme le sont pièces et billets. L’image des pièces et billets est mauvaise.

Les sources sont des nombres entiers quelconques.

Toute transaction crée une ou des UTXOs, pas seulement les transactions de change. Si ton portefeuille a reçu 253.21Ğ1, alors une source de montant 25321 est dépensable par ton portefeuille, et vient s’ajouter au montant total.

1 J'aime

ok j’ai compris merci

Parce que je n’ai présenté qu’un cas très très simple. On peut dépenser des UTXO de portefeuilles différents (par ex. dans ce bloc), avec des conditions de déblocage de monnaie en plus… Et pour chaque UTXO, il faut vérifier (donc écrire) que le portefeuille émetteur est en droit de dépenser la monnaie.

Par ailleurs, le document de transaction est limité pour éviter qu’une seule transaction demande trop de puissance de calcul et de vérification (il y a sans doute d’autres raisons, mais c’est celle que je vois)

1 J'aime

Ce n’est pas une usine à gaz, c’est ce que font toutes les crypto-monnaies, y compris le bitcoin :slight_smile:

C’est au contraire plus léger car ça permet de vérifier plus rapidement si un compte possède bien la monnaie qu’il envoie: plutôt que de compter son solde (la somme de toute la monnaie qu’il a créée et reçu - la somme de toute la monnaie qu’il a dépensée) , on vérifie juste l’origine de la monnaie (ça vient de tel DU créé à tel block, ou de telle transaction reçue de un tel à telle date).

Ce système de sources de monnaies atomiques et d’inputs/outputs à de très nombreux avantages techniquement, et permet de généraliser la notion de transaction pour permettre des transactions complexes (multi-émétteur, multi-destinataire, avec des scripts de conditions d’utilisations de la monnaie, etc).

Les clients Ğ1 n’exploitent pas encore ces possibilités plus poussées, car il manque encore au protocole une notion permettant de cibler facilement un compte géré par un script, mais ce sera prochainement mis en place.

Il sera alors possible de créer des comptes gérés par des groupes (en décidant que P personne sur N doivent signer par exemple).
Les scripts ouvrent également plein d’autres champs d’applications possibles, ce sont des sortes de « smart contract » simplifiés.

3 J'aime

@kimamila Je pense que ce serait plus pertinent de masquer les opérations de change dans l’historique d’un compte cesium, car leur présence perturbe certains utilisateurs, ces transactions de changes ne peuvent être comprises que par des utilisateurs disposant de solides bases techniques, je pense qu’elles ne devraient être visibles qu’en mode expert :wink:

1 J'aime