Hey everyone!
I’m new to Sparrow wallet and just getting my feet wet with Bitcoin Core too. I’m puzzled about why Bitcoin Core keeps launching a "Cormorant" wallet whenever I open Sparrow. It’s really annoying.
I searched around the web and on this forum for "cormorant", "Sparrow", etc., but I couldn’t find any answers.
Here’s my setup:
I’ve got Bitcoin Core running on one Linux Ubuntu machine and I installed Sparrow on a separate MacOS device (10.15 Catalina). I made a new wallet in Sparrow and sent a small test amount to it. The transaction went through fine, and I see that little amount in Sparrow.
But here’s the kicker: I can also see that amount and all its details on the Linux machine where Bitcoin Core is running. I just want to handle my transactions solely on the Mac with Sparrow...
Every time I close the "cormorant" wallet and delete its data from the ./bitcoin/wallets/cormorant folder, it just pops back up as soon as I open Sparrow on my Mac.
Is there a way to turn off the "cormorant" wallet? Or is it something that's needed?
Are my Bitcoin Core server settings messed up? I set them up according to the instructions on the Sparrow page: https://sparrowwallet.com/docs/connect-node.html
The settings I used:
- -
server=1
txindex=1
[main]
rpcbind=[Here the IP of the LINUX computer with Bitcoincore]
rpcallowip=[Here the IP of the Mac computer with Sparrow]
- -
Any help would be awesome!
Sparrow needs that "cormorant" wallet to sync your sparrow wallets.
It does that instead of relying on database like Electrum server does.
It doesn't contain any private keys so you can't manage your funds from there, it only displays it.
You can see that it has ""private_keys_enabled": false," in the result if you go to console, select the wallet in the drop-down menu, then enter: getwalletinfo
Thanks for the explanation. Okay, that reassures me, sort of. It's still a mystery to me why Sparrow "needs that wallet".
I don't know if the following use case corresponds to reality, but imagine this: You set up a network with a "server" computer running BCC and multiple "clients" for different people to log in and manage their transactions. I assume that the server administrator would be able to see the wallets of all connected clients, right? Why would he "need to see that"?
So that seems to be the main argument for "running your personal node" instead of connecting to a public node / public server, right?
Right, the only for-public-use option is the "Public Server" tab.
The two server options "Bitcoin Core" and "Private Electrum" are meant for private use.
Those public Electrum servers that you can connect to have their own database built from the blockchain that the client Sparrow query to sync.
On the other hand, if you use Bitcoin Core as server, Sparrow needs to use the cormorant wallet that it created with your Sparrow wallets' descriptors to scan the blockchain for transactions.
Then it uses RPC to query the needed data from that wallet or node, some require a loaded wallet to work.
Thanks again.
So this "cormorant" wallet mirrors my real wallet (in Sparrow on the other computer) and shows the current balance, recent transactions, etc. But it is not able to e.g. sign transactions.
- Is this what is known as a "watching" wallet?
- So it has to have the xpub, right?
- In order to stay safe, do I need to change my security settings?
- Yes, you can confirm that by checking if private keys are enabled in getwalletinfo command as I've mentioned earlier.
- Yes, it's a descriptor wallet with public descriptors only. You can see each descriptors via listdescriptors command.
- No, if you haven't exported any private key from Sparrow, there'll be no security issue regarding the xpub contained in your cormorant wallet.
That's because even a single child private key can be used together with the (parent) xpub to derive its xprv pair
That could compromise all the other private keys of that wallet. If you did, consider creating another wallet.
1. It says: private_key_enabled = false . Is that bad? I didn't consciously change it. How can I change it?
2. I get an output, but I really don't know what they mean. Timestamp, active, range. Hm?
I noticed something else today:
I made another small transaction from the Sparrow wallet. It was successful and the balance and the transaction itself are shown correctly in Sparrow.
But in the Cormorant wallet the balance is correctly updated, but the transaction is NOT listed at all (under "recent transactions"). How can that be?
No, "false" means that descriptors with private keys can't be imported there.
Refer to my first reply regarding that result.
The "xpub" that you were asking is listed in each of the descriptors.
You can get more information about the other data in help listdescriptors command.
Have you sent that transaction to your own address?
Because if it is your change address, Bitcoin Core wont show it in the history but will still be included to your available coins.
I'm sorry, I read that at the time, but only now have I understood it.
Okay, it looks like I need to learn more about the command line. (I have a long Mac history, but virtually no DOS/Linux experience, so my shell/terminal skills are very very very poor.)
Yes, it was another address from the same wallet, so my own address.
I have now made another transaction to another wallet, and now the Cormorant wallet is showing this transaction!
Slowly, I am getting a better understanding of how all these things (UTXO, inputs, change etc.) are connected and work.
@all contributors in this thread: Thank you so much for supporting me! Without helping hands like this, bitcoin adoption would be less likely. (...although it still is a long and bumpy road. Even for tech-minded people like me. It really must get easier in the future...).
MacOS is an unixoid OS, too. While it tries to abstract a lot of the inner workings from an user and has a nifty UI, you can also have a powerful command line. Tossing the mouse around isn't everything that's possible, even in MacOS.
I may sound like a broken record when I highly recommend to have a look at https://learnmeabitcoin.com: the beginner's pages are a fun to work through and the more technical sections explain a lot of Bitcoin's details in a nice and informative way. At least I like it very much, recommend it often and regularly go myself there to refresh my knowledge.
You don't have to learn about using terminal, since you could just use built-in Bitcoin Core console (see image below). Although since you already own computer with Linux, you'll benefit from using terminal in long term.
Source: http://bitcoindaily.org/bitcoin-guides/how-to-recover-bitcoins-bitcoin-core-wont-sync-export-private-key/
And Sparrow wallet meant for power user. IMO average people should use more friendly wallet software such as Blue wallet.
Reviving this topic, because I wanna ask the following:
I 've created a wallet on Sparrow and it had some incoming transactions.
My balance on cormorant changed, including the funds it used to include, plus the funds in the new wallet.
If I delete my wallet from Sparrow, will the coins be subtracted in cormorant? I am sure it won't, so I wanna ask what can I do to "fix" it. A complete rescan? Or anything less painful?
No it wont, cormorant's balance will remain the same even though the mirrored Sparrow wallet was already deleted.
That's because the already-imported descriptors cannot be deleted from the wallet.
That said, the only way is to delete cormorant while Sparrow isn't open, once it's connected, it should create another cormorant wallet to import the loaded wallet's descriptors then rescan.
Here's a test to support my answer:
I created a wallet in Sparrow, so Bitcoin Core rescanned "cormorant" wallet after the new Sparrow wallet's descriptor is imported:
Here's the result of listdescriptors command containing the descriptor of that new Sparrow wallet:
Now, I delete that Sparrow wallet:
After this, I've checked if the descriptor remains in cormorant and it's still there.
For additional test, I restarted Sparrow and Bitcoin Core, and the descriptors remains there (as expected):
Very well explained, worked perfectly.
By the way, a little out of the subject but, is cormorant always created on Sparrow? Or only if you connect it straight to bitcoin core? Because there is also the option to connect it to your electrum server as well.
I'm not currently using an Electrum server in Sparrow now since it can be directly connected to Bitcoin Core.
But last time I tested, IIRC, it doesn't directly.
It's the Electrum server (AFAIK, I've tested EPS) that'll create it own mirrored wallet in Bitcoin Core, not Sparrow itself.
Other Electrum Server implementations wont even create a mirrored wallet if its implementation doesn't need it, then Sparrow will be using its created database to sync not directly from its full node software.
So theoretically, no cormorant wallet in that case as well.
Good to know, I think Sparrow is the only wallet software that allows you to connect straight to your Bitcoin Core, but maybe wrong.
What I want to say is that, it must be mandatory to create a cormorant wallet, doesn't it?
It doesn't affect my overall experience, to be honest, I am just asking out of curiousity.
Yeah, Sparrow's "Bitcoin Core as server" implementation needs it.
It's similar to what EPS (Electrum Personal Server) does which is relying on RPC rather than creating its own database from Bitcoin Core's blockchain.
The pros of that is you can use Core without --txindex or even in pruned mode.
So for private Electrum servers, Sparrow wont create a cormorant wallet in Bitcoin Core.
It'll only create that if it's using Bitcoin Core as server.