Bit-Wasp / bitcoin-php

Bitcoin implementation in PHP
The Unlicense
1.05k stars 416 forks source link

Block hash in Dash #611

Open Vasiliy-Bondarenko opened 6 years ago

Vasiliy-Bondarenko commented 6 years ago

I'm extracting data from block hex in Dash.

Bitcoin::setNetwork(NetworkFactory::dash());

// block hash is 0000000000000039b7e3341e8bdd18056f6362471325ce6402cdc80de33fa9cc
$block = BlockFactory::fromHex("0000002068d6f1c872cf73d34013d2b445a5c399db640265db1e6ba309000000000000002d4538e3751dd00b4ec817571c24df1230475eba2940faa283f8167f631e681cf5b2615ad52840196f1ea2f31301000000010000000000000000000000000000000000000000000000000000000000000000ffffffff27031a4f0c04f5b2615a08000023a6b30300000fe4b883e5bda9e7a59ee4bb99e9b1bc04f09f909fa6a3da9e020824bd0a000000001976a9146d2ec0a7219b67efd092c105648f9a1870cd607988ac1424bd0a000000001976a9147c086eada12bdb10a265c16c08a7ae87366bd48188ac0000000001000000012c92648a32e8d9416459bb5e208ad742c18ae4235670eac5fefa9bbf88c24cbc010000006b48304502210098865e2d14286d30562df6e337b36aa1ba5859cff0a82e20c42562925c10af7502204184130a639e9a8288b90365b4950be8d0ad1c0bf2a40c89f4f1e8b7de3f7d4d0121029c1c6748374f4a88590dc7f909dbc0ddff25a9c329f11db131802aef4c0e3b22ffffffff01cc79df0b000000001976a914829c1f597af15e9dc04ce3deb9e95dd26df1855088ac000000000100000006b2e613c5ce56993b254eb9033609056f16c24b565bc62768c40a0c1d2613b701000000006a47304402201adec2b0e82d5114d1234c3d73ace07e1f27247c183d8ef573b7309557f00a92022007fca6f25c32d23dc37b7684dabafac84a51a686154317192e5f4e67e829a40b012103a9768108ad34afd46c306b1a4cfdb7d70a24091fef6b4f702f1dd723ee957006ffffffffcb879c289d51f30f08b187cd2a2332dabfc16d790ec53f5a56dcccaa0998b2d6cf0400006b48304502210093352b71e98687999303a6a4bc2c586c852ba92c1c6624021abf5f8454b14195022061df9043d9f006162758ed45fb3512147ca06199e9cbdb57d13056a426e356cb01210327e2b2c56ec3e440cfd57f8cf90ee00ed66b9092427159c0feb552c2ec611af4ffffffff377d42929377c2714ded7860e918225186c698b980725ac2dcfc343e947c72b6f80400006b48304502210090b4ceeb3ee9735a774c93592a11e98438960f24967f180b1e5bd17c93621fa3022008ff97befc699115eea19ab0100899b673afb5c5809225df8a78ed446334ca0401210334e50f197187a0d2e46f40ce57e99fd4b0a21b9e4d5cf414fd71c871ea2b8b6fffffffff04847db77987435b0b4f2ddcbdb1bdbcb3d2415c2751200df12cc669ca1268bc710100006a473044022035ef0a4e5def54ef84fb1518daf255df9c2ce64c7208461ce84c737b747aee58022004830c4f7f6b0c7f0a605a04097ef4c63b15c5df017ff4059c75ab70c4260ec3012102841b502f809a95f71a37c2d41aa0d9c63765168857ef0db19ce421b289dd7aafffffffff377d42929377c2714ded7860e918225186c698b980725ac2dcfc343e947c72b6fa0400006b483045022100896458d3d1520660e5e54897435127dabc4e04cc384c4d7dec6abe34e38cda52022038184a9d8495d90b4f119d405cb8e60b9716ada05cf58877c582106369a3814a012103b4bd683b74c202d4995fee9773bc39b5413653c8695924611983434d645b74baffffffff6a16c4964b92ee0b7b1d18b632f6a157853d3885635161117f89be5c2dd4ed76d20000006a4730440220479e0a518ce2f76ccfce024bca9d152a873fa874642ccf84c888363537e7a47b02205bbd89f1911338ac18c26c545772c79bf5844efed2858eae2f5241412b19e9030121026d89343a1b7a635702965246082c18ee01e046e2fcf919d3bd5579a68cea05eaffffffff0380f0fa02000000001976a914f8d6a93157e04fe87d2bcd645b37ac033491144488ac94388900000000001976a91424eebef9078b395e3ffc09f1554cab104a5e725088ac9dbd1a00000000001976a914f354cbac7151d8a6b692e45898e1169344aadc9c88ac0000000001000000010a9fff67d268dc30073a0e2869e332664f3ab9efad539eed899a00ee1921be6f000000006b483045022100d323b9d0a53b720dfbb0f0012bc91e13493d41eef960206b22f1aa6d379f695f02203dce45bc921bd7117970b32a55043085f77d7e7095489412009b235ff10ddc360121022c3c03cb2f9766b0adeda64b4dce6ae3ca881d12f838a709a081a2b84c424001ffffffff02624e761b000000001976a9144aa9a10d02e85afd01bb28681e8c539f56f7e9cb88ac619fa700000000001976a9145cb834cfb0ca22bb451762186640916c0597fe6f88ac0000000001000000010275cc3511796c0c11f937d336aca23673fa9543f312e3dc62d84d2915ef8a3f010000006b483045022100e08884233d1b4030af84be1a468a44c9530cc13af3fdb712e413495ba996c0d20220666583220b6a400475e29b3ffef8a62c6c18841e460af9d5b9bea3a329f73e020121037d31156679affe4c28aed5e34af775cbbbb0a2f6eaaa11a5ecdd80ba202bd87cffffffff02c0e1e400000000001976a91494d0ac16f67156a787bee0e7ebcc8ddebdf4b41988ac91448801000000001976a91423964d7f69717978b1cf9969af07fb467b51204388ac0000000001000000017207677188d5d321a56989408d2105a724a2f193ab5d2bcd485fb7e56b3746b2010000006b483045022100adc553c544d584e18bf633220ed64118bf9ed97416a715a0163d63b1136693b0022028de083b6c17b738ae257781ebf58d935f5b9d783c3db6207bdd9f549823f74a0121023d82da961301cb4f122ae2950f105cbcc9cd9a5ea72260e9d9fb97852aa4ad3dfeffffff0240420f00000000001976a9145af70af4d10e5e541fbf5f19c447751d8e4ddd8788acf6d42801000000001976a914cb31ec95e60f04f72e1416fbedf864e5b637cfda88ac194f0c00010000000184faa5370bf83745abbf01e85f42d7c97a4240a2d79604092a4dcf5d66f7382c010000006a4730440220287ba615114a94464d477fb5a83e626c87384bc92d0f0c64e9d4ee6f4cc3636e02203329c492cf68a5c6cc4f9ef1e4a9658bc77b5ec184325f08b3fad34b4739716c0121022c1fa3921d6a63bb342957cff2e9f5399f714c48b4f83650d41c624bdcba56e7feffffff0230750000000000001976a914a79cd83e8dce4896a917e42963cf422db3d0a61f88ace8450b00000000001976a914c7ea1c4bc6ce2e0fdf75ac060148ccaf6f1ae33c88acdd4e0c00010000000121708466e27a00ee21027a38f844a3e0303f908f1e299f174a492a3550221a38010000006b48304502210082c9900b44399a76f59cb4bbca725fcc8a5b0c590804688473c772d1f25c0f5f02205c9b1ed2b178904711cd3112b7af58a1df6de0f30cda45953b631a05b65bfba7012103e9d7c34fe69147e1cc6486bb6e6dfe1fd2cdad93635e79891218b6e4d555f5efffffffff01f782e700000000001976a9146fd4cdbd13b229fbe2a1f9a23e5fa517a2de6a9c88ac000000000100000001bd4e5cbd43b7fc642a6b71aa6a753b7b61039734dfc9dded459090f588c88fc4010000006a47304402205a65ed480c869fde51fa7778f1f4dc3288b69208f3adf63d5b099e96c08d361102203df60276af5b449f73d94bf544f686611d947c43e46f09ce45cfe99791832bc601210268ad9a84456239163ba145ab2ce389659b0d6bb2f5d715719ac4f428da4afc2dfeffffff0260721400000000001976a91426beb9961d9227b237a314aa2f2acfaaca0adf0788ac9d53a707000000001976a914484734e0f70d49db3feef4a111d1ad85ea99941c88ac184f0c0001000000013803497825edd6def6cde2d40d38d3425a6c55d39884fff7cf3b839ec3df91fb010000006a4730440220639f8c03513409ddb8d1f55fe065ea9f0a4cff09838588fcdb506ee41cd7244402201fc99a423da1029943f785f52e464300a3bf0977a2ed9ac73fd69ae14099c03701210227745288b82786fd4f79fcd979cc30778f7e544293c098b47292b0f04d07068ffeffffff0290ab1e00000000001976a9142167b9b522e826daf1efe6344f45a8e41ff35b0f88ac2ba78807000000001976a914b242a7d352fe752d2fae55b95a10c3724b71714388ac194f0c000100000001facb6f307a582eb1bffb3951be2d798514853187b9f2f666e292d7643ddd5f87010000006a47304402200e44885eccd7beaa03460274cf25bffe8598126f507985f0146860f75ef7e04b02201924e55cf0515fad9e897b34d1b2f5f246908712eaf1d88083c9831f499bfcae012103f2c2ebb366edd064eda36d62280c8fa51747680c573defcf5d93883dfa00079dfeffffff0230390a00000000001976a914b451d41e7d068e9b4fbaa27129bf4aa1a5fe258088ac196d7e07000000001976a9140d60d99a1df428323c1db78d3afc545f98a3cc6788ac194f0c000100000001657fe818dbb3dccfefc8e286c8c22f6211a514bd4e9001851dc3b4203f8192d7010000006a47304402201f32b3b3b9ccc16415294322df22bae2be51168a0ef4658ae0a71da633434fba0220247ebcbb7a6916f164d31c3b2aca5d8f2f7251a6f4e6c78662093eae9555a78b012102d47647a17c905f6f83e61382795c46122d068dc4e41574c2b233c309df4710b7feffffff0230390a00000000001976a91452f14d60d4e01489de48b9d4f0a515740e4a4c2188ac07337407000000001976a9148b4fbaa1b41bf203c168f6a2d15f18113cae9c0f88ac194f0c000100000001f094ba863097fa0f4de3c745a2e6c7aed2c6eb0db0a0d86b72a7bff5cd9e5170010000006a47304402200e80e734ae19f53572ea0c872c3d60865fc60ce6d1747f68abb239f3ebf69028022033fc10a4b36c17d315eaa2cdeb6d99ddc31fc45bd6b1185138be1a4b06650532012102300029a81a3453cdf6dba499cb1b489495c0287e6f26b504d0e82634f5fbdbbffeffffff02cc4d0000000000001976a9148d151954f3c95dad578f5a4307ee6c7ffe93e61988ac30390a00000000001976a91433c52c82d71c1a36027d47466423c3ce9b1bc50788ac184f0c000100000001b98f7d5a100e84459823ad602d0276569b505212567357ba3b9bd2c9022b1c27010000006b48304502210098d79e1b498fd4121240a9e48428b6ba85d36a4921dfadcff61c9786dfeb547602202785d912ce55df9fdadb8eda49acdb862f0f3359a807329ebf2e92cf31fa6a3c012102ed73f3a536b7cc33e50bd4766e0ce696e833db24fe4477abf75a127210191e71feffffff0209630000000000001976a914ff2f738f447bb96d2861a086eb1141a851dcb95088ac48892501000000001976a914ecd032bbec7ade5fdb53bcc3af83cd167472bca888ac194f0c000100000001631229f8e11e4b06710efdf5e8f05fa6f44f1c2623f1e5aecb8d976f1bdbe150010000006b483045022100d9728fda6b328936b5df695f32d8da08b5e320435dc82ca0b2a046d1116c6e32022031a2ccc50fa65a815b1c436711d885467f5eb5d80a7fbdbea122425d15b69034012103ef1e2f779738037cbfdbf867fa6a9eb53e21a27d3bac114fdef42a5c561b4606feffffff0230750000000000001976a914e3abec0bebfe4510caecee1ef9ee948164cea3d388ac226c1800000000001976a914ca6cdaa63bd13d15e5b53a47f183f51befcb981488ac194f0c000100000001da79077eb110c999135a35b727f3422b2b0b19ccfc443f37e8d3b5d07e1bcd76010000006a47304402204dbfd8354732676189b3292ec29c5f3b1c0924dd47434a7185b25a25699569ef02206dd234aae6df91d48019fd848ede901f55e14d614789f2a8f880347551150cfd01210249c807bac8a0ba594185819c7f575b42628c808c019c319a0632d91631d10ab8feffffff0230750000000000001976a914a4634fb2d2e8a239e141d433bb9e65faed07107d88ac0ff61700000000001976a914f66f4898c3d282bd6aadbbaace9567f9adf3731588ac194f0c000100000001375060e3bf1173c89398ea104d713ac6cb7dd522f4bd514d3f174069218bc530010000006a473044022067c069c777fe0a37174db749911990dcb5425b1107ec894b0502d0f171bbaa40022067cbc3395ae7286069d265b5b0c4f0b7d55c99e77a7fa2b2a22c6dd66879bdd0012102c62f1f8317b653054303b15dd780ed8462c70199c9a7db548a328e33064f4563feffffff0230390a00000000001976a914f8f37f12699a4e3de812b3078ba471e6b39456fc88acf6f86907000000001976a91479e84b7c18e3e7549b62098361fee972626f661988ac194f0c0001000000019b618456253fcf8e75a420ad417caa672e5557742c0072f7b920bcf8cf9621b8010000006a47304402207d83d80d1f66f5ecb3c46ea043039c3fcfe506c6bd3d32dbbca2527c75f12856022057414900b97c50c2a9b966c9046ae80abcaa1a637ac6f2090243e18b73d45ba5012103f09441fd537a05ba1cae2a831a42bcf6603960f5ab75396424bd47771b2cf099feffffff0230390a00000000001976a914886f714081cbcebd4063a244697e6604af7a60ce88ace4be5f07000000001976a914821189629a13110d9cd477061fc536d85489db8e88ac194f0c00010000000143812b1b532ece200ae53d0416f132c2eabeafd92bf0ab60f631edb7c3f96ae0010000006a473044022069449cfdd80e9050c95efe215e1447697703493bfd6cebac80423a9f0e0cd05002203b28c0aef219712386a25c4494100a61ac0cbf480db5247ff604334f9e35d5e20121029bd4be5e698f92633fcd8ff65d198ea90c312aa0e19ae777d462ee150608c8a0feffffff0230390a00000000001976a9148958809b0cac77361dec4ed6c5a25eb760412eba88acd2845507000000001976a914511edade24960a884b6e7841d9c1d4cae4faf07c88ac194f0c00");

var_dump($block->getHeader()->getHash()->getHex());
var_dump($block->getHeader()->getPrevBlock()->getHex());

outputs:

string(64) "1e4ff4f4cf964ed9b51459503b0946bf9d6eab1e60468546d48df3092bd96521"
string(64) "0000000000000009a36b1edb650264db99c3a545b4d21340d373cf72c8f1d668"

current block hash is wrong and pervious block hash is correct. correct current block hash is "0000000000000039b7e3341e8bdd18056f6362471325ce6402cdc80de33fa9cc"

on Bitcoin, Cash and Litecoin it's working as expected, but on Dash it returnes wrong result.

afk11 commented 6 years ago

Hmm, I haven't tried it with dash! I wonder do they use a different hashing algorithm? Surprised getHash even works with LTC 2bh, isn't that just scrypt?

Vasiliy-Bondarenko commented 6 years ago

they use X11 as i can understand from their wiki https://dashpay.atlassian.net/wiki/spaces/DOC/pages/1146918/X11