-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Recover funds from an unspent reveal transaction (maxtxfee error) #3647
Comments
My situation is the same as yours, it also happened during etch, where due to the feerate being over 10000/vb, only the commit transaction succeeded and the reveal encountered an error(not broadcasted). Now, as the network's miner fees have significantly decreased, I hope to recover the funds from the input of reveal transaction, but I have tried multiple methods and failed. From what I understand, quite a few people have also encountered the same problem, hoping @casey @raphjaph could help us out. Best regards. |
As far as I can tell, our funds are still there. The question is whether we can access them again or whether they are so tied to the commit transaction that we can no longer spend them. |
We've set it up in a way such that the commit output, should be seamlessly recoverable. So you see the UTXO in your wallet but can't use it in a transaction? |
I have ~0.65 BTC across several named wallets encountering this issue. I don't mind doxxing one if it helps or paying someone for their help due to the amount impacted by this. ord --index-runes wallet --name e1 balance
ord --index-runes wallet --name e1 send 3Mji2mfaht1MdgwvD5ivLro7M5onAugdZY "10606719sat" --fee-rate 100 --dry-run
ord --index-runes wallet --name e1 send 3Mji2mfaht1MdgwvD5ivLro7M5onAugdZY "10606719sat" --fee-rate 100
ord --index-runes wallet --name e1 transactions
ord --index-runes wallet --name e1 outputs
|
Also reported here: #3629 |
Thank you @raphjaph for your quick response and for taking care of this issue:
When I check the new output address of these unspent funds with getaddressinfo, it returns: When I try to send the funds with ord wallet send I get: error: unable to sign transaction. Ord version used: 0.18.2 When I dump the wallet in restore it on another system, none of the above is displayed anymore. The new output is no longer available there. |
Thanks for the details, I'll have a look at this. What you can try now as well is loading the seed phrase for that wallet into Sparrow, then carefully selecting the correct UTXO and sending it out. When importing into sparrow make sure to select the Taproot descriptor on initialization. |
Thank you very much, @raphjaph. The thing is, the UTXO in question doesn't show up in Sparrow after importing the wallet. The same is true if I dump and restore the ord wallet on another system. I'm not sure if this is just a problem on my end. |
Same here, mine looks almost identical. |
Ah yes, sorry I was wrong. Since the commit output is a custom output it won't show up in Sparrow. The backup key should be stored in the Bitcoin Core wallet though. I'll figure out what commands to run to recover. |
I was able to manually create a transaction. The commit output is locked because when you etch we don't want to accidentally spend the commitment. You have to be really careful when constructing transactions manually since the fee is implicit. Before trying to do that just try unlocking the locked commit output and then try sending with > bitcoin-cli -datadir=env -rpcwallet=ord lockunspent true "[{\"txid\":\"33b61355d732a771465c991bbd0c4e7ca0b7b150ee2fac4f94f95adb244aa83f\",\"vout\":0}]"
true
> bitcoin-cli -datadir=env -rpcwallet=ord listunspent | jq '.[] | select(.address == "bcrt1pzrfzdzyzna2gutqw83sw3x0gjyvfuyqc666mgf3rdz2jde49mhvqf75gqh")'
{
"txid": "33b61355d732a771465c991bbd0c4e7ca0b7b150ee2fac4f94f95adb244aa83f",
"vout": 0,
"address": "bcrt1pzrfzdzyzna2gutqw83sw3x0gjyvfuyqc666mgf3rdz2jde49mhvqf75gqh",
"label": "commit tx recovery key",
"scriptPubKey": "512010d22688829f548e2c0e3c60e899e891189e1018d6b5b42623689526e6a5ddd8",
"amount": 0.00021159,
"confirmations": 1,
"spendable": true,
"solvable": true,
"desc": "rawtr([9adbd87e]10d22688829f548e2c0e3c60e899e891189e1018d6b5b42623689526e6a5ddd8)#f2k6008h",
"parent_descs": [
"rawtr(10d22688829f548e2c0e3c60e899e891189e1018d6b5b42623689526e6a5ddd8)#6p7wgsn0"
],
"safe": true
}
> bitcoin-cli -datadir=env -rpcwallet=ord createrawtransaction "[{\"txid\":\"33b61355d732a771465c991bbd0c4e7ca0b7b150ee2fac4f94f95adb244aa83f\",\"vout\":0}]" "[{\"bcrt1ps09gd4jyg9u5kx0gg2clv0gxddtzmtujq3s99vaxaszkf6f8f96qv2exg0\":0.00021000}]"
02000000013fa84a24db5af9944fac2fee50b1b7a07c4e0cbd1b995c4671a732d75513b6330000000000fdffffff01085200000000000022512083ca86d64441794b19e842b1f63d066b562daf92046052b3a6ec0564e927497400000000
> bitcoin-cli -datadir=env -rpcwallet=ord signrawtransactionwithwallet 02000000013fa84a24db5af9944fac2fee50b1b7a07c4e0cbd1b995c4671a732d75513b6330000000000fdffffff01085200000000000022512083ca86d64441794b19e842b1f63d066b562daf92046052b3a6ec0564e927497400000000
{
"hex": "020000000001013fa84a24db5af9944fac2fee50b1b7a07c4e0cbd1b995c4671a732d75513b6330000000000fdffffff01085200000000000022512083ca86d64441794b19e842b1f63d066b562daf92046052b3a6ec0564e927497401404f935f0a40a4e76dec6ad36080527e6957a37c737da2a1831073ee541b9dab6326ceedb3fd0cdcf57809d0cd06e89f5931d18677b71f6661978b26bcb4c01ba400000000",
"complete": true
}
> bitcoin-cli -datadir=env -rpcwallet=ord sendrawtransaction 020000000001013fa84a24db5af9944fac2fee50b1b7a07c4e0cbd1b995c4671a732d75513b6330000000000fdffffff01085200000000000022512083ca86d64441794b19e842b1f63d066b562daf92046052b3a6ec0564e927497401404f935f0a40a4e76dec6ad36080527e6957a37c737da2a1831073ee541b9dab6326ceedb3fd0cdcf57809d0cd06e89f5931d18677b71f6661978b26bcb4c01ba400000000
1aac9491cdc24dd96cd60683d7301e5e599404f92874a207117343afa4e1fe9e |
If you do |
When I try to manually create the tx with bitcoin-cli, I get an error using the
|
This is useful. However, you need to use the 'ord.exe wallet dump' command instead of 'bitcoin-cli.exe listunspent' to obtain the rawtr, as the rawtr information obtained from these two methods is different. Once you have the rawtr, you can use 'bitcoin-cli.exe importdescriptors' to import it into the Bitcoin Core wallet and then send it. Thanks to @raphjaph . |
This worked for me!
Then I just created a simple transaction and was able to sign it no problem.
Thanks @raphjaph and @huguojunsy ! |
This works!
Thanks to all of your guys for your engagement. @raphjaph @huguojunsy @loon3 |
Thanks for the guide everyone! A couple things: In |
I imported the descriptors using |
Hi @raphjaph , I have a similar problem with an unspent reveal transaction. The commit splited into two output. Only the vout 1 is showing up in the ord outputs and bitcoin-cli listunspent, the vout 0 isn't found by both wallets. The sats amount is not showing up in ord wallet balance either. Is this output somehow recoverable ? |
It should be recoverable. Have you tried all the steps in this issue? |
Thank you for your answer @raphjaph, I did try the steps of this issue. I did try to create a raw transaction with bitcoin-cli createrawtransaction but it ends up with: As the output doesn't appear both in bitcoin-cli listunspent and ord outputs I am not sure what steps to take. |
Could you maybe post the exact commands you did and a link to the transaction? |
Sorry I was trying to simplify. The transaction is the following: 139f81fa2525a32b1ddb55ebc1876f14276f33476571cb8a7762dece667604ce I could move the vout=1 and it's the vout=0 that I cannot access. I rescanned the wallet using the descriptors output from I tried using
Same with creating a raw transaction
which gives
Is there a way to recover the output that I missed? |
Does your descriptor contain any |
@raphjaph @casey
Is it possible to recover the funds from a reveal transaction that was never broadcasted to the mempool?
The commit transaction was send and successfully included in a block. The reveal transaction got stuck due to a maxtxfee error. When checking the ord wallet balance, the cardinals previously reserved for reveal transaction fees are still displayed, but can no longer be sent or otherwise spent (error: unable to sign transaction)
Manually creating and signing a transaction returns an error as well ("error": "Witness program was passed an empty witness").
The text was updated successfully, but these errors were encountered: