bitcoinlib icon indicating copy to clipboard operation
bitcoinlib copied to clipboard

v0.13 support for dash

Open arshbot opened this issue 6 years ago • 4 comments
trafficstars

Hey @mccwdev, not sure if you're aware but dash is undergoing a planned upgrade soon via hardfork. I say not sure if you're aware because this seems to be flying under most people's radar and as we use your library, I figured you should be aware and if need be I can lend some assistance in implementing this PR.

Looks like the changes are going to be implementing DIP002 Special Transactions

These are the highlights of the new transaction format

  1. Splitting the 32 bit version field into two 16 bit fields (version and type)
  2. Adding support for a generic extra payload following the lock_time field. The maximum allowed size for a transaction version 3 extra payload is 10000 bytes (MAX_TX_EXTRA_PAYLOAD).

Does your library implement these changes already?

arshbot avatar Jan 11 '19 05:01 arshbot

Hi @arshbot, I wasn't aware of this, so thanks for notifying. I need to delve into it in a little more but as far as I understand now the most important change we need to make is to recognize the new transaction type. So nothing will break if a new type of transaction is encountered. But please correct me if I'm wrong...

In a later stage it would be nice to be able to create new transaction types and use the new and I think interesting functionality.

mccwdev avatar Jan 16 '19 17:01 mccwdev

It does seem like this library is unable to parse the new transaction format. Parsing new txs is met with the following error.

File "/Users/harshagoli/.local/share/virtualenvs/[removed]-HVe_4H5S/lib/python3.6/site-packages/bitcoinlib/transactions.py", line 121, in _transaction_deserialize
    outputs.append(Output(value=value, lock_script=lock_script, network=network, output_n=n))
  File "/Users/harshagoli/.local/share/virtualenvs/[removed]-HVe_4H5S/lib/python3.6/site-packages/bitcoinlib/transactions.py", line 739, in __init__
    ss = script_deserialize(self.lock_script)
  File "/Users/harshagoli/.local/share/virtualenvs/[removed]-HVe_4H5S/lib/python3.6/site-packages/bitcoinlib/transactions.py", line 204, in script_deserialize
    if key[0] == '0x30':
IndexError: index out of range

I have a script running to collect transactions on testnet for which this library fails for. Here are some of the results. (will continue to update as I collect more for my own purposes)

000000202b51f0664e839ab43619d338f511bca00c6cc240426c806a3f20d40b00000000de482b9a5651663e953dfc560eefa8c219bc27108f244ee5b0c6c4cc434fb7752f6b475c2dba121c4d06f4780203000500010000000000000000000000000000000000000000000000000000000000000000ffffffff12027f730e2f5032506f6f6c2d74444153482fffffffff0594240e43000000001976a914e02dac43c4d57aa2a821a9b0b25068f5f5edfa3288ac4e0c5f42000000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac3b18af00000000001976a9146d649e1c05e89d30809ef39cc8ee1002c0c8c84b88ac01000000000000004341047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35ac00000000000000002a6a284a417f516f34663ac6ae54820b8fcacc3789dbbba6fa7a5d69cbc08e867cd30d000000001e000000000000002601007f7300003535ef07f5588d99f96ca7f7d35ccd731389afaafd045f5778acfba4377fa728020000000443c3d32729a4eb0b9387e52faf4dfa6bdfeb49607ee8c935c5d18c896644c636000000006b483045022100847696d16b31af14c89a4bc5e2941eee3f0ee52e82fcc67f21c1503509e1306d02201fd2a038100f9b44faa3e1429ec0beec82636cf86ca24bdc2bc470b87b326109012103454656824f2c69d3f0416e8c24cd7e5065103cef8176dfeb2cdc13231f5a4a9dfeffffff8c0722addacc64b3ef9aea6e918cae15698a139b60e198531c53e97934b1ae67000000006b4830450221009e8c5e2ddda6a879c2d8c129a8adfc2c045c5a1f1f6cfa1d2a774bddc082a03202202e060e33574b7a638f8b9651497352eddfdbd97a547f078bad8c048fe24616210121034fec45bcb69c80eadb62d4baa023663647ff946ed814bfc88c7a7441291cf21afeffffff8f6d4f47c1f982a54c931637b1d2e3ad8db2cbcb8a7ddd828dbabc12db4a62a9000000006b48304502210099a3d46aaeab4d9a17844a551eff63988a5ebb81156e0d7759b89846fdf0c37102200d7daff350b08ae7a5b78f1f948abf917e0b73302ed90e9d780d708d12ecf4930121034fec45bcb69c80eadb62d4baa023663647ff946ed814bfc88c7a7441291cf21afeffffff85632d715f876e24b1a899126dd162b520eedbf93461b6f0740cdede01763ed9000000006b483045022100ad432795f034dfb1248ec34af7c41c1b41b8fc43d0ffa6eaf2588e251b12aba80220450f009aac51372f2829fe854f4528f37f93235491eeafbadf98bc0330ded9f50121034fec45bcb69c80eadb62d4baa023663647ff946ed814bfc88c7a7441291cf21afeffffff02c3480f00000000001976a9147386c6b8a30bb5a65384e4a7dab1489420951a6888acc0692ac9000000001976a91408a0b66e7786428a50344c1f5d7f4905508e2bca88ac7e730000
000000207f69c023481f674822205c806a2dc32ddc51eeebd3f74c23e292ad0f00000000424752c4c16582a42cb25f4e1629729a8f09403eb68b80e8a79c42e5d837da21316e475c0e97141c64e0009a0203000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4b02877304316e475c08fabe6d6d35653136363136653063633630363331366366393534333862653333363964360100000000000000780000131f0000000d2f6e6f64655374726174756d2f000000000240230e43000000001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac40230e43000000001976a9146cae25f986f4a1e14498c3f5a8517606a0b2b8da88ac00000000260100877300003535ef07f5588d99f96ca7f7d35ccd731389afaafd045f5778acfba4377fa728020000000c5f3e1d4bcb5b93d63725f222658e3768eb8b763b64699eea4c6487f7f9de2012010000006a47304402202095e6393a5bfeec416c353e81e910afc06e94b9cc2c6fefbf16a18b25d3a3a00220586b0dadaea2e4453dc613b03de24d57389ce7073f0c9081c38f3f43ab185444812102e4f4224c7bf9ad79b73c094d49f3f2370471c9d0b1aaaa2a78b2faa4073405f9ffffffffac55d769dd513cd095b4f4d846806f2ac2fc44f01a1600615979f26f2a80cc25050000006a473044022025c1b374cfd3ad14dd5daff5845968411b4a7da932977640e8c0f2ac5a13604102200b1550e9b48b23d40e835840146c4e243e6bb943320316ef293365e3c059cf45812102d47ad4a86395b600ac34d23c03d4f767755a14630c9ab0d220f0e9ef563a77dfffffffff18f2be19bf5b47c53e5b0abccce1802da6840920d69e2cc3cfaf559d334834320a0000006b483045022100b7d0ad49867607477b72d2fa1aee4bce6cb6f4ce01ff33bbed3811d14c2ca25702205e0c31587b307fa2f36e28b32c182d03c70fae973abc190e7d577e36551f9da2812102d818d0710c89980331738316a1fbe8b19672f9eb7701c2d2243a2d288ffdd270ffffffffbe8873dc033eeb31659ad41baffd351c912d1987ba9b44d6ee5367101a751537080000006a4730440220074faabf954786912ccf36435e04d5047dbeb6cae735240c40bfaccd8fad0ecf022049badb561f6af1dc270626121bf38f355e40bd4081c0f64b7ba0f743b0dd5ab6812103e52f41f05075b72bb6cd3f7c891a2be9edd7797a616cd376544c92528e262d8affffffffe5754fed7e0981c76dee73c3ca0c8e7a0abbb2cb13dc89af19efff46d611f45d0a0000006b483045022100f826d3d2789df23055ed8471dbf042f4fc54244abb9b8c2c8b9eefa0dc10089e02200fd485c083de4a1bec370c2b561f471e905571abf05922a779cdd73c79e29f4a8121035c68d78bf76dc6cadfb658ec3a5e6bdc9a182e357c96d85ce4e3f7fdf9e6d8d9ffffffff7ba272fa3898bab4b41e7e7881695a39ca0ca5a2f3996d860755516374804073100000006a4730440220426afef051e84d355ff123701cd49bc6f9458f3199f2032b0da2b8c437e62e5002205c2cb13b8848bd84edd4c350cbafd3e05828c27d8d7b784abb8dde5d1abf617381210287f9d8527f471e95427fcf14fb83a390915ef3d843abc338eb8ccae83d074df5ffffffffd1daff19dfe1f7da5c41e408a751ed6d4c72183ec1640569b40aae107a026182040000006a47304402202e860cf1560276b08cebcfb883bf55a16ddf5dfeaa2e90acb905c128562819d402205d48e39e994e082a778b79e69c7817d0f7521889077bc7ea68345acbe71dbf6081210245e096c7b4e8a62dcb18a57ea2467ff136dbb090261e7b3ae1e4c29b37029e82ffffffff2450f932d14d0dd79993efa2507f04a3744996d1cc039b67c9e326b75b084693080000006b483045022100ef4716665903f0028d946f5a5dee816024a6ee5e26012917e13cd05432e31bf302203e29ac52b5fd550ea11daf7ebacb02f77bee11b255184149b496c9d37499fd9a812102e663320e054ea23df57d0540c2e929efeb57e3e46a56b54242e59f7b682d24a2ffffffffafa339286f42a0ea5ff3c4e360573b1bc409337369eb6934020404df0cca409d060000006b483045022100e92672ff13283a7445edcab9a8d77dbe17469663d98f346a78b20524a8084a4002201b794c80ebd8cd828281f1a7b227107b4869d6e48a08697180e9a5408d56679a81210262e4c294cbd516501c213a7b3ddc4187ac4dd3fd4416f08158e14e6f7cd17591ffffffffdbf506956cf24c6e3a8fa832fe4d0348bf367c0f247186929e872319f1028b9d050000006b483045022100fe36c5ade956fa80396b59c5edee317703ee4c536d1f09589a6cde5b4baf78ca022068963b85de83e5ffd7ffba14ea38659876bc317a127128fe978c5179ea41db1881210289c9e4756bd5c42255c98a0bbe34acb5c81a82bab8bfc9b394428815b2d00e5bffffffffdd2bde367c3a145ca1841d845adb13b1c51bcfa792bba642abc2a171f0c1bd9d000000006b483045022100ebb290f1f4e698a3214b8732c2d5eb3ba589668df3f9b2a8bf70f4b88931544d022042091d8e6abea5af1110d01b3e8e5916f42f6081cd2e374b4d4d9f44e72de9ef8121021ea6c22f241f0c1964391598c5c6701fc596a6ff2f70cd3e27c8f5ff2284b3e5ffffffff96bc4f2dcb2f448c48740891dc9272cbc0d87b56ef53f6c293c8eae4c1952bd0020000006a4730440220494b2bcdfa5a4919db82d700b4fd70f698ea0e30c8265b98f14e757d73cb7f700220264587c7dbaed186c78d17da3849fb6e35e4ead65b664edfbc77c21f35aa4280812103bfb4c5aa81e8a7cc3562981ccbca1ef63a95f12af2b855d44769298d5291b662ffffffff0ca1860100000000001976a914432697bbcda684d20fe0f51fc5872e43cfa2abb488aca1860100000000001976a91446f733ad9e5692a36a0f18623b60434c7c5e3c3d88aca1860100000000001976a9146b9935ad63df97be83c35d84e7722b407670cfbf88aca1860100000000001976a91471bd8ce350d3d77827abb4592d159413eb6ee77788aca1860100000000001976a914922d2df261c313b0bb28f2dc9c65ffa0ef28428088aca1860100000000001976a91492409f1dad68960299efaeff62c32caca285af5888aca1860100000000001976a914a3987c6a149384f93fbafad73b6bba83977cdbe988aca1860100000000001976a914a5082c342b7181b53dc91378e447fa2fd658928d88aca1860100000000001976a914b90e984550a6954b339bf84b60f769be80a6dbc188aca1860100000000001976a914c74215d53eb96a0b768c3295999b45c49876103a88aca1860100000000001976a914d39bbcd52a067e145d83f9ef3db96d3c9a98837888aca1860100000000001976a914eeff8a0738a8889bc948fb35af7d5c3bb574827088ac00000000
0000002009bd185e021498c7cf33a0919d7334218214864680b27f76e5276d13000000006983b570d5c6ef88636113e4736707a870504b55f403fa0e0bd29e358616ba771e6e475cc63c151c85540eac0203000500010000000000000000000000000000000000000000000000000000000000000000ffffffff120285730e2f5032506f6f6c2d74444153482fffffffff050b250e43000000001976a914e02dac43c4d57aa2a821a9b0b25068f5f5edfa3288acd00c5f42000000001976a914a3c5284d3cd896815ac815f2dd76a3a71cb3d8e688ac3c18af00000000001976a9146d649e1c05e89d30809ef39cc8ee1002c0c8c84b88ac01000000000000004341047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35ac00000000000000002a6a2803715b99516ee8d81b5d36c09a6b918518cb52fc2e0df955dc68cef190d865ba000000000100000000000000260100857300003535ef07f5588d99f96ca7f7d35ccd731389afaafd045f5778acfba4377fa72802000000057259c3a44a45f48ffd19cb32a643c1580650719a8d0fa68e7f578fb77ca34205010000006b483045022100ab01cd5b4a93265662cb51d2b71649649f3d2adfdabf1ebf39f37f894ebb7f6e02201a76cb5a67559279a5d05f274325b66b14d764ec3e4fe8ad9fd2b00911fbd80801210339c8b65ce3b639fc3a799638741629dc73f87595f0b78cc6499ce8e0607ab5f1feffffffe24be1ffb65937f2869788a0d725c8a1cb9b4bce397566c9a88e894035d25081010000006a473044022031bcca7c844a8c252c49a64363547dff9bc05b787924c9a0ced3e7cd3dcd6ef702207f184ac20303a56f841b552a54847b2710831f719e1a42b0a0f592f0faa80c4601210339c8b65ce3b639fc3a799638741629dc73f87595f0b78cc6499ce8e0607ab5f1feffffff9bd363297c90bb252a0e70e518c5a755d9d0802ee52ae2f71770eca1edcf83bd010000006a4730440220373fe26be17344f7c49b083f4cbb7c53cc347049804c956bed2f661f91c268c802204654e04d24d08b7a4f393e8cee0f724dcd68101ca0a9781ada3fae3cb73df82501210339c8b65ce3b639fc3a799638741629dc73f87595f0b78cc6499ce8e0607ab5f1feffffffd4956a077b8e9c9798498876750714124dfdbaac98e01a5acf266370ce6a3bbe000000006a47304402205183b310fc79037ca18ba273f57a8c682ef4ff78c870563faed418b3e187572502206f9161634ae350c33ab823e32754ee86736d111f93c667945241741060dca19101210339c8b65ce3b639fc3a799638741629dc73f87595f0b78cc6499ce8e0607ab5f1feffffff2439382d9368fc5cdeb0e3d05698e21c2303546e3d7d33b221dffef0b1bc25e2010000006a4730440220351843350416de911486bfcc4bf920c1be574528f97e08f1babaaec3d69ebdec0220761c369c077686b0c4ee4cf2445c379c4b19ee2e2e24311cb210004aa153703d01210339c8b65ce3b639fc3a799638741629dc73f87595f0b78cc6499ce8e0607ab5f1feffffff05b5dcdc18000000001976a91470da282ad16926e127064b7d3d787d7f3793014788ac10f19a3b000000001976a9143094c745294dbd0406869966b0498a1ea6a0650c88ac10f19a3b000000001976a91446d5f49ff140a792c40d5e654ce8c24d59a0b89988ac10f19a3b000000001976a91462624e0846248da154528ca4654a4679c7c1276b88ac10f19a3b000000001976a914cc67b975371beb0660822a73ef199724f44963db88ac84730000

arshbot avatar Jan 22 '19 19:01 arshbot

I'll also probably include a little thing to calculate tx id since that's a nice to have not included

arshbot avatar Jan 22 '19 19:01 arshbot

Hi can you fix that problem, dash transactions is not works @arshbot

omgbbqhaxx avatar Jun 13 '19 08:06 omgbbqhaxx

Support for dash network will be removed from this library in version 0.7 Unfortunately there are not enough api service providers to get it working reliable.

mccwdev avatar Mar 13 '24 15:03 mccwdev