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

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}

About this issue

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

Commits related to this issue

Most upvoted comments

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.

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