Should I use a full node as my main wallet?
Yes, it can be the right tool for the right job. Always use security best practices.
Is there any good reason not to do this?
Yes. Compare to the hardware wallet for help.
For the sake of argument, take the hardware wallet (hw)
as the best wallet. Besides standard functionality (create transaction,
generate address, handle encryption) shared among wallets, what
sets the hw apart from others is the
level of protection
for the private key (prv).
The whole point of TREZOR is being more secure than a traditional web wallet or desktop bitcoin application.
It employs PIN, single purpose, and limited attack surface
in its zero trust design.
In other words, the prv is stored inside a closed box,
and only permits controlled access. There is physical separation (air gap)
between the prv and the bitcoin network.
With this separation, the hw is offline by definition. It does not require
(here it shares similarities with a paper wallet).
It is single purpose, in that chain services aren't
its responsibility, and it doesn't offer more services from a app store
Another result of the packaging is portability. Like Android wallets on
mobile, it is easier to carry the hw in your pockets.
Finally a less obvious point is purchase price, and its relation to
commercial support. I've been in a real-life situation where I
argued for not paying, and using open source software.
There can be a tradition of paying for software. There can be
regulatory rules that require SLAs and software support. There can be the
stigma of open source, and a perception that closed proprietary
software is more secure.
To summarize, reasons against full-node Bitcoin Core wallet:
- You want 2FA / PIN access control
- You want to separate the private key from the bitcoin network
- You want offline wallet operations
- You want mobile travel size
- You want to pay for commercial support
To add another piece to the conversation, consider the
Go language alternative of Bitcoin Core
which separates the wallet from the chain as explained by the documentation:
One key difference between btcd and Bitcoin Core is that btcd does NOT include wallet functionality and this was a very intentional design decision. See the blog entry here for more details. This means you can't actually make or receive payments directly with btcd. That functionality is provided by the btcwallet .....
Where the blog entry goes on to elaborate:
Multiple users, each with their own devices and wallets, can authenticate and connect to a shared btcd server.
The next blog post continues:
To put it another way, separating wallet from chain provides the convenience and speed of Simplified Payment Verification (SPV) clients, while keeping most of the benefits and security of running a full-node Bitcoin implementation.
So the primary motivations are concerned with scalability, and consolidating blockchain for multi-user/device scenarios. Where the immediate tangible gain for a user's experience is in the form of SPV convenience and speed.
Conversely then, running a full-node Bitcoin with integrated wallet means sacrificing some convenience and speed for wallet-only functionality. To repeat, for more than just wallet functionality a full-node is good. You want to explore alternatives to full-node configuration when wallet convenience and speed are your highest priority.
Food for Thought
For contrast think of the paper wallet, arguably the least convenient, slowest wallet. That does not mean we avoid using paper wallets. To the contrary, the paper wallet has a very specific and important purpose. When you rank security as your priority, the paper wallet can become your first choice. So just because a full-node setup is slower and inconvenient to a dedicated SPV wallet does not automatically make a full-node a bad wallet.