Title: mrkl_tree Post by: FabioCarpi on March 08, 2014, 01:53:03 PM estou tentando entender o mrkl_tree
li varias paginas mas não ta dando certo aki estou tentando repodruzir o bloco 100000 que tem so 4 transações http://blockexplorer.com/rawblock/000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506 estou tendo como resposta e0172299a5f4721b039a8a759f84fc7457dfe14296a6b39b32140feb32bda194 enquanto o esperado e ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815 eis meu código php function inv($in){ $split = str_split(strrev($in)); $x = ""; for($i = 0; $i < count($split); $i += 2){ $x .= $split[$i + 1].$split[$i]; } return $x; } function h($value){ return hash("sha256", $value); } $a = inv("8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87"); $b = inv("fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4"); echo h(h($a.$b)); Title: Re: mrkl_tree Post by: girino on March 08, 2014, 04:34:20 PM estou tentando entender o mrkl_tree li varias paginas mas não ta dando certo aki estou tentando repodruzir o bloco 100000 que tem so 4 transações http://blockexplorer.com/rawblock/000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506 estou tendo como resposta e0172299a5f4721b039a8a759f84fc7457dfe14296a6b39b32140feb32bda194 enquanto o esperado e ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815 eis meu código php function inv($in){ $split = str_split(strrev($in)); $x = ""; for($i = 0; $i < count($split); $i += 2){ $x .= $split[$i + 1].$split[$i]; } return $x; } function h($value){ return hash("sha256", $value); } $a = inv("8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87"); $b = inv("fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4"); echo h(h($a.$b)); As strings estão em hexadecimal, vc precisa de strings binárias pra gerar a hash. Não conheço PHP mas você provavelmente precisa de algo como: $x .= char(int($split[$i + 1].$split[$i], 16)) (i.e., converte o hex pra inteiro, depois converte pra "char".) Title: Re: mrkl_tree Post by: FabioCarpi on March 08, 2014, 05:38:49 PM 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87 convertido seria 1000110010100111100001101101111110111110001101000010010111110110111111110110111 0111111001111111000101110010101101101010000010100100110110110101010110000011101 000111111111101101010001001010111011111010001111010000110110110000111???
Title: Re: mrkl_tree Post by: girino on March 08, 2014, 06:20:02 PM 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87 convertido seria 1000110010100111100001101101111110111110001101000010010111110110111111110110111 0111111001111111000101110010101101101010000010100100110110110101010110000011101 000111111111101101010001001010111011111010001111010000110110110000111??? não, seria algo que vc nem conseguiria postar aqui porque estaria cheio de caracteres especiais... Title: Re: mrkl_tree Post by: FabioCarpi on March 08, 2014, 06:57:49 PM ok vamos la
8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87 vira ���=�P>o=����Z�I�*���(J���m� fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4 vira ��R[�1@-В"�u`�ux{Ҹ~V�Z{�0��� concateno os 2 string: ���=�P>o=����Z�I�*���(J���m���R[�1@-В"�u`�ux{Ҹ~V�Z{�0��� o hash disso é: 204ee246463fecd48b2071a6512204cf952a006f8fc08bb61d0cbd8f53b063e0 mas o esperado seria ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815 Title: Re: mrkl_tree Post by: girino on March 09, 2014, 03:40:20 AM ok vamos la 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87 vira ���=�P>o=����Z�I�*���(J���m� fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4 vira ��R[�1@-В"�u`�ux{Ҹ~V�Z{�0��� concateno os 2 string: ���=�P>o=����Z�I�*���(J���m���R[�1@-В"�u`�ux{Ҹ~V�Z{�0��� o hash disso é: 204ee246463fecd48b2071a6512204cf952a006f8fc08bb61d0cbd8f53b063e0 mas o esperado seria ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815 Não sei como você fez, como eu disse, não entendo de PHP, mas fiz aqui em python rapidinho: Code: a = '8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87' o resultado deu "15b88c5107195bf09eb9da89b83d95b3d070079a3c5c5d3d17d0dcd873fbdacc", que é o que você esperava. Ah sim, acabei de conferir. Sua entrada está invertida... você tem "???=?P>o=????Z?I?*???(J??m?" quando na verdade deveria ter "?mУ?J(???*?I?Z???=o>P?=???". O mesmo deve acontecer com a segunda entrada (não conferi). Title: Re: mrkl_tree Post by: FabioCarpi on March 10, 2014, 12:09:20 AM Rapaz
Agradeço muito a ajuda mas o python não me ajudou em nada Tentei entender mas boiei Mas no fim das conta eu tive uma ideia de tentar um código que eu tinha conseguido antes o código constrói o hash do bloco atual dei umas adaptadas e funcionou resumindo o código faz: inverte o a e o b concatena os 2 transforma em binário tira o hash transforma em binário tira o hash inverte ainda tenho varias duvidas sobre o bitcoin... só que e chato ter que ficar escrevendo preferiria conversar valeu |