Is there a good idea for having a node and wallet separate? Or should they be together?
1 Answer
It's good practice to separate them, here's why:
- Security. The node is open to the network and the wallet keeps your private keys. In case some exploit was found in the node sofware, this significantly reduces the risk for your funds
- Practicality. You can run multiple wallets all talking to the same node. With them bundled together this becomes messy, if not impossible.
- It's easier to focus on improving one aspect of the overall suite.
- It's easier to debug
- It's easier to maintain
- By having a stand-alone node software, you already did half of the work for many other uses like exchanges, mining pools and block explorers without them having to poke out relevant code from a bundled mess of everything.
- By having a separate wallet software, you make it easier to write another wallet implementation.
- The inner workings of the software will be easier to understand for those new to the code
To take this further, specific parts of each software could be "librarized", so it would become even more modular and allow flexibility in future development and allow to use already built code with other languages etc. In fact, this is also one of the long term development goals.
Suggested further reading on software design and modular programming.
-
5I think a huge reason to have them be separate is security. Your node software talks to lots of untrusted endpoints. Your wallet software handles secrets. It's very hard to do both of these things at the same time without excessive risk. Dec 5, 2016 at 20:13
-
2I agree security is the biggest reason, in the beginning it was hard for me to trust Bitcoin because of how the node and wallet are interconnected, to this day I think its a security hazard. The flexibility is a huge plus, after the 0MQ implementation one will be able to connect an immeasurable number of wallets in a single node, this is possible with the current RPC system but in smaller scale.– user20Dec 6, 2016 at 0:22