-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Showing unsigned transaction as signed #4814
Comments
Based on my reading of the source-code of electrums transaction deserialization, I would think I could convert it to electrums format by appending: |
This is because since 3.2, Electrum only tries to "fully parse" the inputs if the transaction is using the custom partial serialisation format. (but with older versions, you would have ran into other troubles; I'm guessing the parser would have raised when fed with your example) E.g. if the tx is in network serialisation format, it is considered "complete": electrum/electrum/transaction.py Lines 1201 to 1205 in f819e9b
I, too, have spent some time on this after reading this issue, and it's not trivial to fix. To be honest |
tangentially related: #4814 also recognise that input is_mine if tx was not fully parsed but we have the prevout UTXO
@SomberNight yeah, it's in relation to #4766 -- just trying to see if I can come up with a super hacky way to get it working (even if it's just manually). Basically I want to parse a (pure-segwit) transaction, and then any input that's missing a witness have electrum know it needs signing. But all I'm really doing is a good job of confusing myself =/ |
Try with this patch: diff --git a/electrum/transaction.py b/electrum/transaction.py
index 2965d77cf..3b1ead8ad 100644
--- a/electrum/transaction.py
+++ b/electrum/transaction.py
@@ -1199,8 +1199,8 @@ class Transaction:
return s, r
def is_complete(self):
- if not self.is_partial_originally:
- return True
+ #if not self.is_partial_originally:
+ # return True
s, r = self.signature_count()
return r == s
diff --git a/electrum/wallet.py b/electrum/wallet.py
index 62964486a..29b196698 100644
--- a/electrum/wallet.py
+++ b/electrum/wallet.py
@@ -746,8 +746,8 @@ class Abstract_Wallet(AddressSynchronizer):
self.add_input_sig_info(txin, address)
def add_input_info_to_all_inputs(self, tx):
- if tx.is_complete():
- return
+ #if tx.is_complete():
+ # return
for txin in tx.inputs():
self.add_input_info(txin) I think the two lines from
This should be enough to "come up with a super hacky way to get it working" :) EDIT: note that you also need f53b480 for this to work, so make sure to pull |
Thanks for the help. I pulled the latest commit, applied that patch and tried. The transaction itself was marked as fully-signed, so I tried adding the prefix
|
see #4814 (issuecomment-434392195)
okay, that's unrelated. try with 5b4fada
hmmm, not sure. It seemed to work for me without adding the prefix |
The problem here might actually be with the trezor. It appear trezor firmware doesn't actually implement support signing a subset of the inputs (even though the interface supports yet). Will need to do further digging. Nothing is easy :( |
I would suggest trying to get it to work on testnet, with a standard software wallet first. |
Any news on this issue? I faced same thing with electrum-ltc (which I assume is a clone of electrum). For some version of electrum (not sure which version was that) I was able to sign multisig transaction, but I can't any more, as I upgradeed my client. Here is a link to an issue I opened for electrum-ltc pooler#209 If needed I can copy here thing from that issue that applies to BTC |
Recently I came across a problem similar to this, too. I created an unsinged RBF transaction (1-input, 1-output) using electrum-3.3.4-portable.exe , then I tried to sign it with Electrum 3.3.4 for Android - the transaction was recoginised as "signed", I was unable to sign it. |
@andronoob that should not happen. what kind of wallet is this with (what kind of output scripts; multisig/segwit)? |
@SomberNight It's P2SH-P2WPKH to native P2WPKH, 1-in-1-out. I was still using a problematic wallet ( #5156 ) on Android. |
I reproduced this problem with Counterparty's Proof-of-Burn address:
|
@andronoob right. #4814 (comment)
So this is expected if you create the unsigned transaction with something other than Electrum, for now. Previously you said that you had managed to reproduce this by creating the transaction in a new version of Electrum. |
Closing, as since implementing PSBT support (#5721), this code has changed substantially. |
Given the raw transaction:
Electrum is showing it as signed:
When in fact, the 2nd input is not (and thus not allowing it to be signed)
The text was updated successfully, but these errors were encountered: