Comptes en négatif?

Bonjour,

Je me suis amusé à analyser la blockchain de la G1.

Je trouve des comptes à somme négative, par exemple:
6vGwW4pJAZSdSthg9HRyKgNurceAY1csaksVwZ2JDbNY
3QGxXouGucYdu834jt7VnWaoWxPVdTdGfbC9NmCCXdei

Je trouve à peu près 400 comptes dans cet état. Qu’est ce qui m’échappe ?

2 « J'aime »

C’est vrai que c’est bizarre, lorsque je consulte dans Cesium les comptes avec les clés que tu as fourni.
Je n’ai pas un solde négatif mais à 0.
Et si je regarde le details, je constate qu’il a plus de débit que de crédit, c’est chelou…

@matograine une idée ? :slight_smile:

2 « J'aime »

Même constat avec Jaklis:

Matograine doit savoir, je pense que c’est dû aux transactions de g1pouboire, elles sont en attente d’être dépensés, avant d’être retournées à l’envoyeurs, mais je ne saurais en dire plus.

La seconde transaction est multi-issuer, la clé 6vGw a bien envoyé son UTXO de 50 Ğ1 provenant de la transaction précédente.

détails
{
  "data": {
    "balance": {
      "amount": 0,
      "base": 0
    },
    "txsHistoryBc": {
      "both": {
        "edges": [
          {
            "node": {
              "blockstamp": "275015-000007D7DC013EE8AE32BA11BA23F827BCDD637AB734BD6B9EFF64C4DEFD8248",
              "inputs": [
                "16000:0:T:8A52D1B963A1FEBC5A61DAD1911D1E4007B620B1CDAB54CC35ABB210B8B88F74:60",
                "109900:0:T:1DFBD9BB5B35FAB087DD034C41819214C7852F0ACDB8099FA1FACA396562ADA6:30"
              ],
              "issuers": [
                "CvrMiUhAJpNyX5sdAyZqPE6yEFfSsf6j9EpMmeKvMCWW"
              ],
              "outputs": [
                "5000:0:SIG(AGvKuW3zmcV54svaJTS2Y4PWrw6JEhrAC8tVC9SovC4E)",
                "5000:0:SIG(7J8tGPNz2BeXXz8bq9XHvs7DRvt8o8bC4t3bi5qUA9Dg)",
                "5000:0:SIG(3ZtnyTHgH1t8Y8hGD2f8EhrcR2NADd3VMqacPQGDVmuU)",
                "5000:0:SIG(6vGwW4pJAZSdSthg9HRyKgNurceAY1csaksVwZ2JDbNY)",
                "5000:0:SIG(2r4qmgsMUTstkyLsnphNGTARN4QBwvbpg2FUiPqvLsXJ)",
                "5000:0:SIG(6XDAZJTb244YHGX7Kq39HNnseTdDrUG2CHjuR6FojGCg)",
                "5000:0:SIG(H78nW2E3Si7oAKGxD7YCAYwU5V6BuidojBXqmcnS5bSC)",
                "5000:0:SIG(FKUuRxN2wc7dh5egDTvAAhwrKBZkWHjMgcsVJ3i3YQM7)",
                "5000:0:SIG(3pUf3qNqmkBEePaQY9zkJfso9dJ1MVBbSZ2RmEXysE4t)",
                "5000:0:SIG(2uEgpu64YtemxQnRfACNiY5Lx8por7vqzUcj3b3zCvYf)",
                "5000:0:SIG(3ayV7p85F9Chsbc42jhyKQ3768FRfwBiWwiibtM9kQqo)",
                "5000:0:SIG(EjxpweXSSeM6kAD8826Q86vhAUTv4zinRhkSkbVFdpmj)",
                "65900:0:SIG(CvrMiUhAJpNyX5sdAyZqPE6yEFfSsf6j9EpMmeKvMCWW)"
              ],
              "unlocks": [
                "0:SIG(0)",
                "1:SIG(0)"
              ]
            }
          },
          {
            "node": {
              "blockstamp": "275023-000003D81C2AB8D40F78A11D61AA30C9B300006F28D7ECA0FC3437E218F63C22",
              "inputs": [
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:0",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:1",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:2",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:3",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:4",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:5",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:6",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:7",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:8",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:9",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:10",
                "5000:0:T:0A096BA737F3454B2C442BFA0E3D81236E0129B24F64A5C619F69C15C488C5D2:11"
              ],
              "issuers": [
                "AGvKuW3zmcV54svaJTS2Y4PWrw6JEhrAC8tVC9SovC4E",
                "7J8tGPNz2BeXXz8bq9XHvs7DRvt8o8bC4t3bi5qUA9Dg",
                "3ZtnyTHgH1t8Y8hGD2f8EhrcR2NADd3VMqacPQGDVmuU",
                "6vGwW4pJAZSdSthg9HRyKgNurceAY1csaksVwZ2JDbNY",
                "2r4qmgsMUTstkyLsnphNGTARN4QBwvbpg2FUiPqvLsXJ",
                "6XDAZJTb244YHGX7Kq39HNnseTdDrUG2CHjuR6FojGCg",
                "H78nW2E3Si7oAKGxD7YCAYwU5V6BuidojBXqmcnS5bSC",
                "FKUuRxN2wc7dh5egDTvAAhwrKBZkWHjMgcsVJ3i3YQM7",
                "3pUf3qNqmkBEePaQY9zkJfso9dJ1MVBbSZ2RmEXysE4t",
                "2uEgpu64YtemxQnRfACNiY5Lx8por7vqzUcj3b3zCvYf",
                "3ayV7p85F9Chsbc42jhyKQ3768FRfwBiWwiibtM9kQqo",
                "EjxpweXSSeM6kAD8826Q86vhAUTv4zinRhkSkbVFdpmj"
              ],
              "outputs": [
                "60000:0:SIG(CvrMiUhAJpNyX5sdAyZqPE6yEFfSsf6j9EpMmeKvMCWW)"
              ],
              "unlocks": [
                "0:SIG(0)",
                "1:SIG(1)",
                "2:SIG(2)",
                "3:SIG(3)",
                "4:SIG(4)",
                "5:SIG(5)",
                "6:SIG(6)",
                "7:SIG(7)",
                "8:SIG(8)",
                "9:SIG(9)",
                "10:SIG(10)",
                "11:SIG(11)"
              ]
            }
          }
        ]
      }
    }
  }
}

Il y a encore du travail côté client pour afficher ça correctement.

4 « J'aime »

Oui :wink:

Oui :wink:

Non :wink:

J’ai mentionné ça à @poka en privé.
Je pense que vous comprendrez mieux en allant voir le bloc où la transaction s’est faite :wink:
C’est le bloc 275026, je ne sais pas si le lien vers l’extension Cesium fonctionne.

moz-extension://1fbdcb7c-2434-4ce1-b307-e2e6a685891b/index.html#/app/block/275026


@tuxmain a juste !

Ce sont des transactions multi-issuers. Elles regroupent plusieurs clefs publiques pour faire l’envoi à une seule. Donc on a affiché sur un compte +100 / -500, parce que dans le -500 il y a 400 venant d’autres clefs publiques.

C’est une question d’affichage. Ces comptes sont bien à 0, aucun compte ne peut descendre en-dessous de 0 sur duniter/Ğ1.

5 « J'aime »

ooh je vois :slight_smile:.
Donc sur ce compte (comme sur les autres dans la même transaction) il aurait fallu afficher 500/nombre d’issuers?

Merci !

Non. Il n’y a pas de « il aurait fallu », chaque client gère ça comme il l’entend. D’autre part, dans ce cas précis chaque pubkey a dépensé 100, mais les montants dépensés auraient pu être différents.

Pour moi, une bonne façon de faire est d’afficher -100 (montant dépensé par cette pubkey particulière) et de permettre de déplier la transaction pour en voir le détail. (montant total, autres pubkeys, montants de chaque pubkey).

Mais le choix d’afficher le montant total (avec un signe indiquant une TX spéciale), et de permettre de déplier de la même façon, est tout aussi légitime et lisible. Les goûts et les couleurs…

2 « J'aime »

euh oui ok ^^.

Pardon? Tous les 5 issuers ici ne participent tous à 1/5 au 500? Comment fait-on alors pour savoir qui à dépensé quoi ?

Dans ce cas précis, oui. Mais on peut aussi faire :

A : 30    }
B : 100   } -> D : 150
C : 20    }

Et même, si on est farceur :

A : 30    }
B : 100   } -> E : 150
C : 20    } -> (F : 50) OU (G : 50 SI G a le mot de passe)
D : 50    }

Mais, sauf erreur de ma part, il n’y a aucun moyen de savoir la contribution de chacun dans la blockchain de la G1.

Si, on regarde les inputs, issuers, et unlocks (voir le bloc cité par Tuxmain au-dessus).
Lire le protocole pour plus de détails.

1 « J'aime »

Autant pour moi je n’avais pas vu la subtilité des transactions multi issuers.

Une dernière question alors, comment expliques tu ce compte:
CdfXWMEj46R2SE9fSveuCDcFeivcmyBJXJHzaEYTbybS

Une clef pub peut participer à la signature d’une transaction, même si elle ne dépense pas de monnaie dans cette transaction. C’est le cas que tu soulèves ici. La clef pub est donc issuer de la transaction, sans avoir rien dépensé. Ici c’est juste parce que Ğ1dons fait ça comme un bourrin.

J’ai demandé à Cgeek pourquoi il y avait cette fonctionnalité. Ca permet par exemple, dans le cadre d’une entreprise, que la patronne signe une transaction avec sa clef perso pour la valider publiquement, même si les fonds sont dépensés par la clef pub de l’entreprise. Aucun client n’implémente ça, hein, mais c’est une possibilité autorisée par Duniter.

2 « J'aime »

Super merci. Je vais continuer de fouiller :slight_smile:.

Si tu parles Fourchelang (python), tu peux jouer avec Silkaj, j’ai trouvé ça très accessible. J’ai donné une conf aux RML14 sur ce genre de bidouillages. C’était ma première conf comme « dev », je trouve qu’elle est très, très mauvaise, mais si ça peut t’aider…

1 « J'aime »

Super merci ! Yes je travaille beaucoup en fourchelangue xD. Par contre j’ai aspiré toute la blockchain en local comme ça plus de requêtes aux noeuds. Je regarde directement les json en local pour aller plus vite.

2 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.