bitcoinlib
bitcoinlib copied to clipboard
v0.13 support for dash
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
- Splitting the 32 bit version field into two 16 bit fields (version and type)
- 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?
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.
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
I'll also probably include a little thing to calculate tx id since that's a nice to have not included
Hi can you fix that problem, dash transactions is not works @arshbot
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.