"script failed an OP_EQUALVERIFY operation" trying to send from wallet with 11K addresses

See original GitHub issue

I have a standard wallet with a lot of (~11,000) addresses and have been having issues sending various amounts ranging from 0.001 to 3 BTC from it. I think the problem only occurs when my transaction has many inputs. I’ve been transferring BTC into a new wallet, and I have to keep retrying until I happen to get a transaction with only a few inputs.

When it fails, I get an OP_EQUALVERIFY failure. Here’s an example error from trying to send 1 BTC to my new wallet:

error: {'message': 'the transaction was rejected by network rules.\n\n16: mandatory-script-verify-flag-failed (Script failed an OP_EQUALVERIFY operation)\n[010000001938901ba8e0bbc5c758df36d0272266abf5fd4770d7935ad94b54dfe1b3817100000000006a473044022020874056443b88632bc82f1bb1a2ae2906d1c9bfcdaee467d1a6c84914857a6802200115b39b9de31ef72d09498e3579c0c0f8bf9f84e95867b4c570ee6425f8fcc2012102c410b4a13f204d9a4eae939f67241abdd6253e5229348c1088e6fae5429497befeffffff6172c1529e56217db514b202f74f635ed2eb9e975e39e9ea24192a6c7446ca08010000006a47304402206b01f38649f94340280995b86dbccdddb066e10ac5d2f223a265711f3f81840502203ea3fc31121403edf37cf01e5f594e4343ab4ac458d05bf53d02a7e54f14cfbc012102f870169d32d84b426d968589d15558a19b59bd620aace4cc58855ea47f4bdee3feffffff4922716ca78c3cf611dbef034723545aa918b7a2424bb7863a2250c74c4dd21b010000006b483045022100fd789c138450d5745d7e51e90cf3b398d4a955a3dc7b5ce3cdb219084a2f926502202298358cbaa0da50c345732ee91435d544f0cc4fd90421bad5ccfe5f2c5528ed01210258888b0e53d7becf9c95d80f45767395fc490561e1383db41a042f1385f760cafeffffff403b45b5fb2653b973b70a35bd7dfca4b16164bf22235b2c3d26011afb490d1c000000006b483045022100854d0938fb4b302261dc2dfba3b7fc40ef32719b95f1a2e0f05babd64c28699b02205291d3a45dd581827dcc5d5acd6382b0e3e81a68967185587ef9f1baf46014f9012103fea833e70927487dba74ee2379a93d8f021e70f74742e992ea5778ab7ac3299efeffffff203995754d5ad276450df15a76a34f4e8d9191641bee2077afe45baf68df2a1e2f0000006a473044022066a2146f7b3dc93fd628bc13c5637a67b2e3b224cdca72ae36e4c94f95be434e02205dda19a548f5e4b828d84cb866156b5f9898b2021e7ef3c70576b5d4aadbfe7b0121037c8d5b27eb89a08bc2d0211c4e7bf42ff77efab68d34929cebe81317090d46eefeffffff013ecbb0a04b40c95c8b8a86532442d4d118c3e92f21c38f90f34f4ce5de2d26010000006b483045022100aedff8aa9bb1c4bd7bc80c4b593734a48bae9d30cfadc1d0518deffe07a89337022066e9c46e13ea8d3aa4be67c2e9fa005d9443ffd4aae9d0a09a8f43484b5e1363012103fea833e70927487dba74ee2379a93d8f021e70f74742e992ea5778ab7ac3299efeffffff529bf8207be3ba737a8e898bc8af88b34729a2aaff314398f96c07b704c68a29100000006a4730440220286e00b2a3581fae22dce97cc606af263eca090e26249cd08a34ee9b505d592102206090eaf7fa14060005ec16e6db724ecc47c07519b3ec9dabf6f8fc143f36a7090121037c8d5b27eb89a08bc2d0211c4e7bf42ff77efab68d34929cebe81317090d46eefeffffff7f3167ecb1af74b1070f5b022d808079735f7b89b3783b0f32af5c7c802c0d3e0d0000006b483045022100b6e967f9fdbd9c6cd17b4fabd5e9e8db913f65f51ba2fe578e985ff8a53d252d0220096df846610025d02eece23caa4e55e058300f79b1806497e6d82d2cc382135d012103fce32e60478717ea688f395a668bfc3f772d794f472eaf9af822359fc5792d98feffffff18d3d03c0c639f5dda703ebadb7a1cd43a2ec34572579035d9f5a7fb3e05743e000000006a4730440220376af4092e733c5c653493c079bc19e4835a0dcf47b63b25e60613551ef0e84102207a1cf0770c413ddf08cecb2480c7e5209dda02b3a8a1fccb34257c87b2fd06ca012102058bbc02769aa091b0f427be28e36b544dffcd14d5d1010f8a966c715357b949feffffff8993ff0160a6619176b88d8ed1913e39f2763e31c72aec7c9968d236506a744b000000006b4830450221009e4d25fab610b1f122ee24267e469ef0bfd3e524fc24bda01e690c449e5147b60220683244fefaff8cdaecae7061a6c34bc815163bb5ba92090aa909a1ed9f6435bd01210219195e8d516dc9f37f1bbc4c6aa21a637909a937b1975f05edc485cf7ff09f4ffeffffffc0d802211fe89dbd0e8e1c9aed8172a479962e27d17c097ca748ef06814d4e56000000006a47304402204bd60c83f9c6d8d50c2cc23c8c4aa26b4d4e177295d30d57176d4a3805ba26bc0220383f5047c5e9dbdfbcecae2093e3edc46efe1f7b7264a057979795341a43b68401210256b860c9891f7b9c615313424e535b10ca004b27d6f744549b41bd4c0b96e1c2feffffffdca948a9c3e3e52772d698f3144f9594dbfda1b5abe80e3f21d060ab3530405b010000006b483045022100d79ae44bd742caddff41944954992f60a4623463561458dde44569f2c40f9bd60220286438abff71b1365e20c20c1ffa8298409273679a9c37646cb76087942253c80121034b940c00419d74bf10856bea0b7d05ac54d8ef03c1e0000d5112515cdfc05388feffffffa70f35969ce9cb1380f3f5c3f71d5ffede9068140d3a4cc435160f7ba9e26b7b000000006a47304402203c65b66ef265c308d74fd0af81ac9f3a0cc5fe1ff0bc3481afcdafd350b0ebe80220467afa5790d63d4574a5b5390ad78cc797952d374d16eb5b4eb4ee7215beca13012103ffda209272c6a6f03db993a55c3bf76181a4f8e66133355b738f895bb5c1ed99fefffffffeeb24b4e17f1b7a41e69c05df72ad3ad63f501417ecd2344032c87192d02086010000006a47304402203e08cb465a68aba3711eea8117b30120abc36dbcc956e35fc5506ab5cd4ffdb302207b5435a00f875abacb55223a4a0f0ceb5d8d7e805cd9760c36ffd9eccee82313012103fea833e70927487dba74ee2379a93d8f021e70f74742e992ea5778ab7ac3299efefffffff754475b179f7642bd241c3422a5c5e1454055a479f58e9b53a7dffb4744eda2010000006b483045022100a0139f757ae70df30003079e39cfab052d70f0edc5db0dcbdb20273dc6d90ff40220382eae117a65ee4be73e717ebe9c4d20689fd80df91dd7f1bfd16dc864c689a0012103279bd6a46796da4ff6d27e5caded5e74d1a327652501e5eb58e5205932c23b30fefffffffbbcec8b665ee185d5ab423ee1388353a1158ac65d69c105a076c2e7303caca5000000006b483045022100c1ee34cce6cb953b498da280300808302aff27fe8506cc93a8c46b2d123348310220252d265217867fa4f5626ebd1221026ccfd14e0d10cfe0447f7545fb121ecde8012103279bd6a46796da4ff6d27e5caded5e74d1a327652501e5eb58e5205932c23b30feffffffb60cb962c9e9e4e4c7a7abe04dcf82f046e72e9c580a569982f7da84c52c40a6010000006a47304402203bb478d6403f9be135539b40ac03ac823fa78e57ecb734b1f8816faed3363847022005865ebbdf1a2fa5d2c6a873a74a80946d796435093df8cdf18c93a44b38c43301210256b860c9891f7b9c615313424e535b10ca004b27d6f744549b41bd4c0b96e1c2feffffff94ec81ae90b46b58649e684d174557a896f37066cf59126291aabb36361852b0000000006a47304402207e17bc74a2e8f324c974068687c3d028ad8487e514cee899568a872acabc110502205d920b0a6deab26b66fcb5c606651860a0e332bfe28b465b60db4944b5b3c3db01210258888b0e53d7becf9c95d80f45767395fc490561e1383db41a042f1385f760cafeffffff70c1eb613b9ccbbc67d8f43ceaeee4f539582f10bc108b05c38a43fdfbffbfb0000000006b483045022100b2ea2f4c2061c4a7d8db9208d917f25bcde5ee2eb9253701db367d1438bfac130220512f6eb0250be5df0b218c4fd311eb21595e4627f81cbd27444473d364c75df5012103fc0426966c77fc70c6b242035cb9dda7071741e380438f3af0f58e141f2ae203feffffffa102ecdcdd5ce3c95269df817542715ec29f515085354dc193424759b928cfb6010000006a473044022052cfaec5365dd7e71908aa4a96ecbab853b538e49bdfa46a70088b3b8a656770022064ab9c0729065c275d470797c416b83f493850c352958b69c4f353c0f20343180121032296b45ccbae41ae50695209ed2d8a625c0890871677ae3427233d0eadfb03e1feffffffbc0c8e2d6ed45035eedf338e0ade88bd6806a44cfeaae4afbfe84e9c18502ccd010000006a473044022001f0ceb92d2941324430ed3a79cc24aaf1b17a10331922fc633cd9f9f638bd7f02206bc9c1f548f2dca12f22e49dc1d3b7afb862a4d65d63fa4382315b0a25bff9ca01210235427e21c15cc92d5a397874dd1ccdf091e26fd9a6222f8166a9f198fb651611feffffff5ffadf888d7bacc246c8f8c64307e2499c14e050ab9fc73c5aa9545d7c7049e6170000006a473044022007babdfa060a16d6a0628b6b7bc3954214f894977231992fe9be914cee588f1502206886a5f8b7ee2ebb1163fe585b4ba38005756a0084c056a2b8e8a29864b00b31012103ffda209272c6a6f03db993a55c3bf76181a4f8e66133355b738f895bb5c1ed99feffffff5f6a753054703084ce546f0fbd03f75359fcf6793516cfb27ffa53d560f164ea010000006a473044022013b1643d1e9e4bac9fc142bb6a45a2268d000481be1a5093494e11bc379dac830220261b14830ee6071d8500767b076e5a2d242891a17599f1cb592b82d37f5c3e3101210258888b0e53d7becf9c95d80f45767395fc490561e1383db41a042f1385f760cafeffffff31571ea20882e904647f0ea374208b304957e0c990cb050973f5a4080be8e3f2010000006a47304402200c2c2a6e4eb7d31a3228be812d9ca369a414f56cc2d24ebc87ffa4306ffae30002205f997a61f0321a7628b03d9e6415aa2e817a15e56c05411a3e860e26ec5c8a17012103279bd6a46796da4ff6d27e5caded5e74d1a327652501e5eb58e5205932c23b30feffffff558e0342f52de67bc3c00ae3d7c3c23f2232b552c337e9874e0dade3492063f6000000006b483045022100b6ef2b10ebb7cd89dc7feec9e8271e4932cd4d5f64ab76371c0a5f2ad05ff3e702200d40ebeec6777d2d0d3e8347e7c9f89f7dfd34d70f5c24b06170da16c761dede012103843c5eedb17df886a6279faf892da4017c02974e232b7074d6592f264fbb6fbcfeffffff0268170300000000001976a91440659b6b61ed80ce1a5197e6bd3b62b09bd6f55c88ac00e1f505000000001976a914d07ed0e810f0f0c3571ed5b38bc8ffc6990cd6c088ac36c30700]', 'code': -1}

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Comments:34 (19 by maintainers)

github_iconTop GitHub Comments

2reactions
SomberNightcommented, Feb 12, 2018

I still can’t reproduce this, though I’m on master not 3.0.6, it might be less likely there, or maybe it’s due to the difference in our hardware/OS/etc. Anyway I’m guessing this is a concurrency bug.

First off, that address index you pasted is wrong, it’s not 375, it should be 374.

wallet.get_address_index("1FB3g2882oBnGiD2w3pPsvwrCxRBKL8HU8")
(False, 374)

You are calling this function in a loop: https://github.com/spesmilo/electrum/blob/82e88cb89df35288b80dfdbe071da74247351251/lib/wallet.py#L1637-L1646

Notice that there is no locking there on the globals; and access will become contended as soon as you find a used address and the synchronizer notices this, which happens on a different thread.

https://github.com/spesmilo/electrum/blob/82e88cb89df35288b80dfdbe071da74247351251/lib/network.py#L972-L977 https://github.com/spesmilo/electrum/blob/82e88cb89df35288b80dfdbe071da74247351251/lib/synchronizer.py#L181-L184 https://github.com/spesmilo/electrum/blob/82e88cb89df35288b80dfdbe071da74247351251/lib/wallet.py#L1660-L1664 https://github.com/spesmilo/electrum/blob/82e88cb89df35288b80dfdbe071da74247351251/lib/wallet.py#L1648-L1658

The synchronizer will also start calling createnewaddress, and while it will take wallet.lock, your script won’t care, there is no testing for it in createnewaddress.

1reaction
SomberNightcommented, Feb 11, 2018

What version of Electrum?

I have to keep retrying until I happen to get a transaction with only a few inputs

You can choose the inputs using the Coins tab

Read more comments on GitHub >

github_iconTop Results From Across the Web

Need help with (Script failed an OP_EQUALVERIFY operation)
This is a repost of a question which i posted directly on the repository of bitcoinjs-lib , which you can see here.
Read more >
Can't broadcast signed transaction - Bitcoin Forum
Ok, next I tried to send BTC from this address and received an error: 'code': -26, 'message': '16: mandatory-script-verify-flag-failed (Script ...
Read more >
OP_EQUALVERIFY Operation Failed. : r/Electrum - Reddit
What dose OP_EQUALVERIFY failed mean when trying to broadcast a transaction with electrum. When the wallet opens I see a error saying please ......
Read more >
Making a Bitcoin transaction with Electrum - YouTube
In this video, I import a random person's Bitcoin address copied the blockchain (no private keys obviously), and go through the process of ......
Read more >
Error while send | Dash Forum
I already create new wallet using the same seed, but still cannot... ... (Script failed an OP_EQUALVERIFY operation)
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found