I am developing an application that will accept Bitcoins targetting some specific "items" in my application, and later transfert some of those Bitcoins to externals addresses.
In many similar projects I read about, they use the notion of "wallets
". For example if you use Bitcoinj
: it seems the first thing to do is to create wallets!
I understand what GUI wallet softwares are and why those are important for end users. But in a backend application, if I understand correctly, a wallet
is simply a seed
that can generate some private/public keys pairs
in a deterministic way. Is that correct?
So, in the end, the only thing that really matters in order to be able to manage the coins sent to "a wallet" (sent to a specific user or for a specific "item") is to know the private keys that were involved.
In my application, I plan on generating a new private/public keys pair
for every new "receive coins" transaction. Not from a seed
, simply a random pair! And since I already have a database, I was thinking about storing the generated keys in a table (the private keys begin encrypted), with information about what the transaction was for.
And when I would need to send coins to external addresses, I would decrypt some private keys, create inputs using them, create a transaction that I would sign, and then broadcast that transaction.
In other words, currently I would not really have the notion of "wallets".
So my question:
Am I missing something about what "a wallet" actually does (in a backend application)?
Do I need something else in order to implement the "receive/send" process I'm talking about or is my database table with all the private/public keys pairs
enough?