I would like to generate 1000's of ethereum addresses. And have access to the private keys. then i can assign each user their own address in my database. How would i go about this? Also is it possible without running my own ethereum node?


Accounts can be generated entirely off-line without ever connecting to the Internet (there are several questions about this on stack exchange), so yes, you could do it without running a node.

For this application, perhaps the best way is to use an hierarchical deterministic (HD) wallet. You can generate and store a single seed used to generate a whole family of addresses (this makes backing things up easier). This avoids having to suspend your service if you don't have time to back up new wallet keys (assuming you have other replication services in place to protect public key-account pairs).

On the other hand, why do you want to keep the private keys for your users? Is this for a service that interacts with the blockchain? In any case, if you're trying to protect users from bad key-storage practices, it might be easier from a management/security perspective to have fewer addresses (though there are arguments for more accounts, too); users can all hook into the same hot/cold wallet. In the case of an exchange, one could argue for a one-to-many or many-to-many relationship for wallets.

For any other purpose where you're not trying to protect users from bad practices, my short brainstorming session says it either doesn't make sense to be using the blockchain (just create a regular centralized service) or have users generate their own accounts and submit the account address to you to store. One of the advantages of Ethereum is "you are your own bank". Relying on someone else also reduces the utility of Ethereum (since users must now manage one more centralized account).

  • Yeah basically i want users to pay a subscription monthly to me in crypto. The only way i can think of this working is if each user has their own address they deposit to so i can monitor it for deposits. The smart contract route i considered with each user having a smart contract address that forwards it to my main account wont work cos smart contracts cos money to deploy and these deposits users make will be in the $2 range and not worth deploying smart contracts for. People could also make many accounts and i would be wasting money deploying forwarding contracts for each one – MrRed Dec 10 '17 at 16:43
  • You could monitor the sending address without a smart contract. Then all of your payments would be in one place. It could even be a cold wallet. Much safer, lower fees, simpler. – lungj Dec 10 '17 at 16:44
  • The problem i had with this approach is. If everyone is sending to the saim address they need to first input their sending address. what happens if users watch the deposit address and claim one of the depositing addresses even though it wasnt them? Unless your still talking about using the HD wallet. Im researching them now – MrRed Dec 10 '17 at 16:49
  • You can have them include information in the “extra data” field for the transaction or have them send slightly different amounts. For example, one user sends 0.01000001 eth and another sends 0.01000002. – lungj Dec 10 '17 at 16:51
  • Almost no exchanges support extra data fields. I want to make this as easy as possible for noobs. Crypto isnt easy as is. So HD wallet would be the best way i suppose – MrRed Dec 10 '17 at 16:56

When there is no need for your service to require people to pay from their own wallet, like the service you offer has nothing to do with their wallets, why not look for a payment service provider which can handle cryptos? Or do you need anonymity?

Not promoting - don't hit me, but e.g. Coinbase and some others offer reception addresses and api which you can integrate. Less hassle for you and you can focus on your product.

Taking the responsibility for 1000s of keys and accounts does not sound what you really want to do here?

Additionally, for micropayments, platforms like iota seem more feasible or ropsten/lightning which work on top of ethereum and bitcoin, as you want to reduce transaction cost as much as possible.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.