Author

Topic: Émettre une transaction (Read 2528 times)

legendary
Activity: 1176
Merit: 1280
May Bitcoin be touched by his Noodly Appendage
August 12, 2011, 03:28:50 PM
#5
Merci, ça va m'aider à décortiquer tout ça

Je viens de faire une nouvelle transaction et j'ai quitté bitcoin instantanément, mais c'est pas mieux

Code:
01000000016fced4f8b8ebac7ec340d57e8f35fba68c30d8cd38dd5f011282f0d6c45c727f010000008b483045022100947e8dc37dcdca2531e6cdd8a549fc83bcecf8d1f75d703226036ea32f480c16022011f6620483a182b656bcf809c01132259f72c76b8b79d117516aebb3e8ab8dc801410431e04e5604398a2475f813e23d1a0105bbe98324207c952ff44f27a196a037eebdaa05183ebcfd65cfac67aaaa4e2ea53654facccc0125a8d44b570e6f298666ffffffff0230ca5a00000000001976a914863b319cbef4716230f5cc609334bc0041ff88a488ac404b4c00000000001976a9148e69ca0454bcba192c1a25188fa047716136289188ac00000000
#fin tx

0000000000000000000000000000000000000000000000000000000000000000   #hashblock
00ffffffff010100000001a9b4e8065f4eb3a0f7bfb66fb4e01c28e38007503d11312da57200bf07870019000000008a47304402203def3e33de6c0c5dea0bc5cbd2b1b5f0e0191548b822294bb86beaafd83b2c38022039300f8f4a7698ce905b8aa53464dda7eeb9deec03d34b1b8e882b76bfe9f171014104fa1d72a336d689c4a006ce87fbe9df0ab90b0ad08cb3c2f590d5ec28d143f6132a8233eed08bd06708eba09b83d47bf115437a12198b4adf8a07f978986e4782ffffffff0260baa210000000001976a914267f1607ee6af61e990764cdda1b6f271244785f88acc0d8a700000000001976a914985a6db0601efce483eaf7fb27d48af6a221a75e88ac00000000cafce70c401dbcc30ff8a32de4dacb703e65d62352799bb43ae77b00000000000540ad8138202836f2195617928f41f8e32dbabd9e05b12d83d32ffded11d8c8d08c521c0ed71338a590b7af3cfbb17cfa69098c15b8cb244768a92a58d86c087c48cb55015bf275f68c871fa5fb821a3dc11e5db9047a887018af51ae697fa76bf2fbdef06ded9fc112b351f625cfa4b940f6072f77b3981a6bc23800f06c4075f6533eda7db8cb049c7f354c38becfd31e2d848f26ce6b9c5ab11579b2b788a417000000020b66726f6d6163636f756e7400057370656e74000001000000618b454e0100
full member
Activity: 153
Merit: 100
August 12, 2011, 02:39:17 PM
#4
Pour le hash je trouve "d82f4ad23c0df709aedf16ac95cd9ddbb6332471f9585d671aa44cdd7e5fbc22".
Par contre j'ai implementé ça uniquement cet apres-midi et j'ai testé qu'une seule fois.

J'ai relu rapidement le code source c++.
Pour les transactions non confirmés (e.g. incluses dans aucun block), le client écris quand même une sérialisation de la classe "WalletTx".
Ca consiste dans l'ordre dans :
      -la transaction sérialisé        (classe CTransaction)
      -le hashBlock  (0)  (classe CMerkleTx)
      -le vMerkleBranch (liste de hash)  (classe CMerkleTx)
      -nIndex  (classe CMerkleTx)
      -vtxPrev (classe WalletTx)
      -mapValue (classe WalletTx)
      -vOrderForm (classe WalletTx)
      -fTimeReceivedIsTxTime (classe WalletTx)
      -nTimeReceived(classe WalletTx)
      -fFromMe (classe WalletTx)
      -fSpent (classe WalletTx)


Je pense qu'il te manque des valeurs par défaut pour tout ces champs.
Il faudrait que tu fasse un test avec une transaction ayant 0 confirmation et que tu dump les valeurs dans le wallet.dat
legendary
Activity: 1176
Merit: 1280
May Bitcoin be touched by his Noodly Appendage
August 12, 2011, 12:46:07 PM
#3
Merci de confirmer qu'elle est bonne déjà. Au cas où tu as bien le même hash?

C'est quoi une transaction pool? Ce que je peux te dire c'est que je peux importer correctement une transaction qui a été faite par un client bitcoin totalement offline, et qui n'a aucun rapport avec le client dans lequel j'importe
Donc l'importation de tx créée par un client bitcoin fonctionne bien

Le client doit donc écrire les transactions différemment...

Par exemple, la transaction c49d31616ad6554a1fcf51cadfab0c3a6350a586f5d05e7c56be363266e889f9 ( http://blockexplorer.com/tx/c49d31616ad6554a1fcf51cadfab0c3a6350a586f5d05e7c56be363266e889f9 ) a un nombre assez conséquent d'octets (inutiles?) à la fin....
Et encore, j'ai pris en exemple une de celles qui en a le moins
Code:
01000000
01            #input
402a52e2d8069e57ac3e259b7cfed2684e7ab8eb82af85ad82fedb58f1b006ca
00000000
8b
48
304502203754f775ff4127dc5021e631fc64132f1a199bbf5778b71ade1cab015d517131022100ed3801e74537e0920d1eff55abd850bea1095ea916da027a1338a3263747888e01
41
04589954d8d9c7b957e911bc78cbb593d5b062852f843e2060e84ca4d52598ee7fb1ecbec53e79c89b556dedf08fcf938d4386bcb1748466e678e20c0a9871dcd6
ffffffff

02              #outputs
#output1
6027289b00000000
19
76
a9
14
aed0dcd21e512bdd2333e3d5f8fbee44b159fe26
88
ac

#output2
00a7340b00000000
19
76
a9
14
0df0ec0f6323e98843dc2fb6b5de8aec23844294
88
ac
00000000

# fin attendue

573e111655cf0130afc7e4b6e94b1be5c310e51cc8294628021800000000000006c506945cdde2b307d4a00c0182ac6ab4e567c69e2a95faedb5cb2c0a80d5c5fd1a15628706830c34e232399a2c71c1e0f1c34e493fee4a7f975f860d3c7859530ac47fc5c4f33969a4dce224ab100244da884567c5c89a22a51d74487bfb8dd920cb2c103b41535d385b13773655e6c9246cd979ee1923337a1155177231d59b927c7132f408095a218e63ad043b4031d2b1fc991eaa93287e799f24aa13e6d25ade6c62f84c78df6c187b8a72c027863f9e579a6a0e3a6ee0db8111b339e9232100000000020b66726f6d6163636f756e7400057370656e7402303100000000001aa5f84d0001
full member
Activity: 153
Merit: 100
August 12, 2011, 12:04:47 PM
#2
Salut,

J'ai vérifié ta transaction et pour moi elle est bonne.
Elle décode bien, la signature valide bien, les inputs sont correcte et le montant OK.

J'aurais tendance à dire qu'il s'agit d'un problème d'insertion dans le wallet.dat.
Par contre, je maitrise moins cette partie là.

Y a t'il une transaction pool pour les transactions qui ne sont pas encore dans un block?

legendary
Activity: 1176
Merit: 1280
May Bitcoin be touched by his Noodly Appendage
August 12, 2011, 09:25:39 AM
#1
Bonjour
C'est un peu dans la continuité du post d'hier
J'ai créé une transaction (testnet) à la main, je l'ai signée et je l'ai importée dans un wallet mais quand je lance bitcoin j'obtiens ces erreurs :

Code:
************************
EXCEPTION: NSt8ios_base7failureE      
CDataStream::read() : end of data      
bitcoin in AppInit()      



************************
EXCEPTION: NSt8ios_base7failureE      
CDataStream::read() : end of data      
bitcoin in CMyApp::OnUnhandledException()      

terminate called after throwing an instance of 'std::ios_base::failure'
  what():  CDataStream::read() : end of data


Ça semble être une erreur de lecture, donc peut-être une erreur dans les longueurs des variables, mais j'ai vérifié et tout colle
Voici la transaction :
Code:
01000000

01     #input
500892538f59ad5b84ec342a90830fc0bb54c99188e4374d808357e6820a40ce
01000000
8b
48
3045022100a7e46423d8377a9af24cb7387ebe49b9f4e550db612b5ce7c598c41b25ee207e0220042acdf87818dbc4579a95c541f3936077867f07c61bfb04c6226101ac39807001
41
04fe8915c44a955dcaa0af2da00a20d44c6d94ffc9c719382bda18af5ad500a17390380f89a7510e2712b3866509f2ff9c6f6b942efd347d05a3144e4fae723a49
ffffffff

01      #output
ec9e9c0000000000
19
76
a9
14
ef833c585f12d8376fef2aaf661ab0fb00ba63f5
88
ac
00000000
Son hash est 3a30caeb095a6a46878f25d0aa418eb6758bc58bb41fe39426145796789e98a5


Jump to: