Author

Topic: Can't broadcast TX signed offline: scriptsig-not-pushonly (solved, my mistake!) (Read 94 times)

legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
Looking at https://bitcoin.stackexchange.com/a/92847, it seems Electrum create non-standard transaction. While it should be valid transaction if it's included on block directly, most node and miner/mining pool would reject it by default. So i would suggest you to follow @LoyceV suggestion to use newer version of Electrum securely, in order to re-create that transaction.
Hmm, yes, probably it is something like that. But there is no mention of "electrum" in your link...

I see you've found the actual problem, which is different case from link i mentioned above. But to be clear, i mentioned that link since it have same error when broadcasting the TX.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Thanks a lot for your very good explanation. Makes sense and I am afraid I have to go through these tedious steps...
Your account is from 2011, which makes me think you may have a decent stash to protect. In that case, those steps aren't that much. Once you're used to it, it shouldn't take so much time (30 to 60 minutes is a small price for peace of mind).

So this thread can be considered as "resolved"  Smiley
You can edit the title by editing the first post.
sr. member
Activity: 278
Merit: 251
Bitcoin-Note-and-Voucher-Printing-Empowerer
I have to add an additional Info:

I now remember that I had created the raw (unsigned) transaction not with Electrum 1.7.x but with "https://coinb.in/#newTransaction" - and also I did not sign with Electrum on my old offline Linux PC (with equally old Linux version) but with "coinb.in" java script offline tool in its older version 1.3.

And another update: SOLUTION: MY BAD!!!

I made a mistake in my personal book keeping and had confused the signed with the unsigned TX - so the error "scriptsig-not-pushonly" actually happened because I tried to broadcast an unsigned TX Cheesy

So this thread can be considered as "resolved"  Smiley
sr. member
Activity: 278
Merit: 251
Bitcoin-Note-and-Voucher-Printing-Empowerer
...
Thanks a lot for your very good explanation. Makes sense and I am afraid I have to go through these tedious steps...

One more question: Is it possible to extract the unsigned TX HEX string from my signed TX HEX string? (ideally by omitting some parts or be using a command line tool or so). If yes, I can save substantial effort by not needing to re-build the entire TX again (esp. because I have many of thoise TXs with 1 input and N (N=many) outputs).

Or is the non-standard thing that casues my problem already included in the unsigned TX and not in the signing part?
sr. member
Activity: 278
Merit: 251
Bitcoin-Note-and-Voucher-Printing-Empowerer
Looking at https://bitcoin.stackexchange.com/a/92847, it seems Electrum create non-standard transaction. While it should be valid transaction if it's included on block directly, most node and miner/mining pool would reject it by default. So i would suggest you to follow @LoyceV suggestion to use newer version of Electrum securely, in order to re-create that transaction.
Hmm, yes, probably it is something like that. But there is no mention of "electrum" in your link...
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
Looking at https://bitcoin.stackexchange.com/a/92847, it seems Electrum create non-standard transaction. While it should be valid transaction if it's included on block directly, most node and miner/mining pool would reject it by default. So i would suggest you to follow @LoyceV suggestion to use newer version of Electrum securely, in order to re-create that transaction.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
I take it you're using a very old version because you're using an offline system. If that's the case, this is what I would do instead of using a very old version of Electrum:
Online:
Install Electrum on your PC.
Import your address to create a watch-only wallet.
Preview the transaction, Copy the unsigned transaction. Put it on a USB stick.

Offline and running without hard drive storage:
Get a Linux LIVE DVD. Use Knoppix or Tails for instance, or any other distribution that comes with Electrum pre-installed.
Unplug your internet cable. Close the curtains. Reboot your computer and start up from that DVD. Don't enter any wireless connection password. Keep it offline.
Start Electrum. Import your private key.
Copy your unsigned transaction from the USB stick, load it into Electrum.
CHECK the transaction in Electrum. Check the fees, check the amount, check all destination addresses (character by character).
If all is okay, sign the transaction. Copy it back to your USB stick.
Turn off the computer. That wipes the Live LINUX from memory and all traces are gone.

Online:
Use your normal online Electrum to (check again and) broadcast the transaction.

Bonus:
After moving all your Bitcoin, and once the transaction confirmed, check if you own Forkcoins.
hero member
Activity: 2366
Merit: 793
Bitcoin = Financial freedom
I am not an expert but let me try...

If nodes are rejecting your TX means the raw TX doesn't follow the Bitcoin consensus enforced by the nodes which probably happened when you created scriptSig data that contains different data other than push operations. Don't edit anything while you export the raw TX before broadcasting.

Finally, why not update the electrum to latest version and recreate it again?
sr. member
Activity: 278
Merit: 251
Bitcoin-Note-and-Voucher-Printing-Empowerer
[UPDATE: SOLVED, MY BAD: By error I tried to broadcast an unsigned TX]

I created a raw transaction with an older electrum version (1.7x or so). It verifies correctly on "https://coinb.in/#verify", it is a TX with 1 input and 4 outputs and it has sufficient TX fee and has in- and outputs that are larger than just dust.

I cannot broadcast it anywhere. I always get error messages like these:

https://coinb.in/#broadcast
--> the transaction was rejected by network rules. scriptsig-not-pushonly

https://blockstream.info/tx/push
--> RPC error

https://www.blockchain.com/de/explorer/assets/btc/broadcast-transaction
--> "Code: -26, Error: scriptsig-not-pushonly"

https://www.viabtc.com/tools/broadcast
--> Raw transaction send failed

https://live.blockcypher.com/btc/pushtx/
--> Error validating transaction: Rejected script for input 0 referencing ......

https://blockchair.com/broadcast
--> An error has occurred, please verify the transaction hash and selected network and try again.

https://bitaps.com/broadcast
--> Mempool accept test failed: scriptsig-not-pushonly

Finally I tried Electrum on Android with the "paste" button from clipboard. Again same problem (I translate error message to English):
--> The server has answered with an error. Try to select another server or to install an update of Electrum. scriptsig-not-push-only
(I tried about 10 different servers - all the same problem, then I gave up)

What can I do to broadcast this TX?
Jump to: