Essayer de trouver la longueur brute de la transaction Genesis

Tests sur des animaux

Essayer de trouver la longueur brute de la transaction Genesis


Je vois que de nombreux altcoins différents ont des longueurs différentes pour la genèse initiale tx. Comment pourrais-je trouver la longueur de la genèse initiale tx? J’ai vu une autre réponse mais je n’ai pas besoin de la rendre aussi compliquée; J’ai juste besoin de la longueur et rien d’autre.

Par exemple, Bitcoin est

 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000. 

Cependant, les altcoins ont des longueurs différentes. Existe-t-il un identifiant que je peux utiliser pour déterminer la longueur de la genèse tx et rien d’autre?

EDIT: Je fais un explorateur de blocs, donc je ne peux pas utiliser un explorateur de blocs pour m’aider à obtenir des informations.

Nick ODell

La transaction que vous avez publiée est de 204 octets. C’est ça que vous cherchez?

Tests sur des animaux

@NickODell Ce n’est que pour le bitcoin. Ce dont j’ai besoin, c’est de bitcoin.stackexchange.com/questions/36321/… dans un format condensé, de préférence fait en bash au lieu de python.

Réponses


 StephenM347

Malheureusement, le bloc genesis n’est pas indexé dans la plupart des altcoins (car ils proviennent de bitcoin et conservent le même bogue), vous ne pouvez donc pas vraiment y accéder via les méthodes RPC.

Ce que vous pourriez faire à la place:

  • Utilisez un explorateur de blocs qui vous indiquera la taille de la transaction. Par exemple, blockchain.info rend ces informations disponibles (204 octets).
  • Trouvez le fichier de paramètres et mettez une impression de la taille du bloc de genèse sur stdout.

La deuxième option consiste essentiellement à mettre les lignes suivantes à la fin de CMainParams() puis à compiler.

 CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); ssBlock << genesis; printf("block: %sn", HexStr(ssBlock.begin(), ssBlock.end()).c_str()); printf("block size: %in", (int)::GetSerializeSize(genesis, SER_NETWORK, PROTOCOL_VERSION)); printf("tx size: %in", (int)::GetSerializeSize(genesis.vtx[0], SER_NETWORK, PROTOCOL_VERSION)); 

Cela imprimera les données brutes du bloc, sa taille et la taille de la transaction. (Remarque, ceci n’est pas testé, mais quelque chose dans ce sens devrait fonctionner)

REMARQUE: Il est possible, bien que ce ne soit pas la norme, de placer plusieurs transactions dans un bloc Genesis. Vérifiez simplement que votre hypothèse est correcte.

Tests sur des animaux

La taille conviendrait certainement à cette situation. Le seul problème est que j’essaie de créer l’explorateur de blocs pour la pièce via Abe, donc l’option 1 ne m’est pas disponible. Pourriez-vous expliquer la deuxième option? Je suppose que vous voulez dire chainparams.cpp mais je ne sais pas comment imprimer la taille du bloc de genèse.

StephenM347

@AnimalTesting, voir la réponse mise à jour.

Tests sur des animaux

Comment utiliser le nouveau code? Quelle commande dois-je passer dans le démon?

StephenM347

Cela nécessite en fait de recompiler le démon après avoir mis le code en place. Ensuite, démarrez simplement le démon et il s’imprimera.

Tests sur des animaux

Cela indiquera-t-il également la taille du bloc ou de la transaction? Vous avez dit « Cela imprimera les données de bloc brutes et leur taille. » Mais dans la première option, vous montrez comment trouver la taille de la transaction.

 

#de, #la, brute, Essayer, Genesis, longueur, transaction, trouver

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *