Description de l'étiquette data-transfer
Posté à StackOverflow mais aucune réponse. Pensé que je pourrais avoir plus de chance ici.
J'ai créé avec succès une transaction Bitcoin en C# selon les spécifications du protocole. Voici la transaction en binaire:
010000000162EF5D87E91090453009860C6F135EA2A490133B2633F8F7BA014889F5FF7E4A000000008A4730440220497E2D3F9BBBC0C122D839968FF880514440CED08A71D28E614FF4C871964024022049687008E4AF72682992325F17E95DA382D63E3FB14605A81B4498DFF9210E310141040BCF1BECF4EF6A5C24FD790CA86E8DCDFA3538CB97E99C254F84D209CFE47BFC6BF3B11ACA05DB7C7638301711070F176E848B650A406EB7AFC30AA9EA242489FFFFFFFF02404B4C00000000001976A9140A24F0387F05A6EECD1F8B327BB442EAB767CBC888ACCA165E00000000001976A914F8FB3B4E5D75652795DD13B209E0BE7BBD66B5D488AC00000000
Je sais que la transaction est solide parce que le BTCs ont été transmis correctement. En outre, en collant mon opération ci-dessus en ce validateur indique les valeurs correctes.
Ce estompe moi est la façon officielle de l'ID de transaction est généré. Tout sur le Bitcoin et StackOverflow StackExchange sites indiquent qu'il est généré par le hachage de la transaction octets deux fois. J'ai essayé de faire comme suit:
const String txHex="010000000162EF5D87E91090453009860C6F135EA2A490133B2633F8F7BA014889F5FF7E4A000000008A4730440220497E2D3F9BBBC0C122D839968FF880514440CED08A71D28E614FF4C871964024022049687008E4AF72682992325F17E95DA382D63E3FB14605A81B4498DFF9210E310141040BCF1BECF4EF6A5C24FD790CA86E8DCDFA3538CB97E99C254F84D209CFE47BFC6BF3B11ACA05DB7C7638301711070F176E848B650A406EB7AFC30AA9EA242489FFFFFFFF02404B4C00000000001976A9140A24F0387F05A6EECD1F8B327BB442EAB767CBC888ACCA165E00000000001976A914F8FB3B4E5D75652795DD13B209E0BE7BBD66B5D488AC00000000";
SHA256Managed sha256Hasher=new SHA256Managed();
Func<byte[],byte[]> doubleHash=(octets)=>{
retour sha256Hasher.ComputeHash((sha256Hasher.ComputeHash(octets)));
};
Chaîne txidHex=Utils.ToHex(doubleHash(Utils.FromHex(txHex)));
Utils.ToHex()
et Utils.FromHex()
sont des fonctions d'assistance copié à partir de StackOverflow qui convertir entre byte[]
et d'une chaîne hexadécimale.
Le code ci-dessus donne une txidHex
valeur de 27E6C3EF18D14FB49CBAC182BBDB47FC9D6F79DA65C101873207B60A957852A7
mais la recherche BlockExplorer.com pour txid ne donne aucun résultat.
Je l'ai mentionné plus tôt que mon opération n'a exécuter correctement. Il s'avère qu'elle le fait à l'aide d'un txid de 11172aed3a61fe64ae82cb02e886757d352a4452f956a0703d0809880538ba58
. Si vous collez que txid en BlockExplorer vous verrez mon opération.
Ce qui m'amène à ma question: étant Donné une transaction valide flux d'octets (byte[]), comment fait-on correctement calculer un ID de transaction?
Merci.