Not like bitcoin, at all!
Ethereum isn't like bitcoin where you can combine inputs and all funds at an address go into a transaction, with multiple outputs.
With Ethereum, all addresses are their own wallets and have their own funds, and when you spend, you only send what you need.
Creating addresses for users
If you want to allow users to deposit to their own address, then you can simply create a new address for them.
You don't need to give the users control of their private keys, however there is no combined pool of funds. Ethereum won't magically work out how to combine addresses as inputs to make the required balance for you.
Another, better way...
When you move to Ethereum, you need to start thinking in a different way.
- Ethereum is about tokens and contracts.
- Ethereum is about putting your server logic into the blockchain.
With Ethereum, people transfer funds to your contract, and your contract records the payment, usually (but not necessarily) by giving them a virtual token.
Then people who hold tokens (or other interest or control) can call your contract and ask to perform actions, or direct it to transfer control or tokens to other addresses.
They don't send you funds and get nothing. They send you funds and get a promise and control of something equivalent in value, or a tangible or physical item.
Onsite integration into your website
What's more, you can even integrate the blockchain into your website. This technology is called Web3 (as opposed to Web 2.0).
It means that customers can view their balances of your tokens on your website, and authorise actions against those funds using their wallet(+private key) from their browser.
An example of a physical purchase:
- User has loaded up a bunch of things in their shopping cart.
- Your site can prompt them to (optionally?) make a payment from their Ethereum wallet.
- Website creates the transaction, including:
- Your contract (the "TO") address.
- The request method (eg:
makePayment
).
- The invoice number, or transaction id etc.
- The amount of funds required.
- Customer authorises the transaction and fund transfer.
- The smart contract gets called and receives the funds.
- Contract emits an
event
logging the payment action.
- Website is subscribed to listen for the payment event from your contract.
- Website processes the payment and ships the customer their goods.
You see, most of the logic was handled by the blockchain.
All your site really needed to do was create a transaction that would make a payment to the contract, and then listen for an event saying that payment was made.
Ethereum is all about putting more control in the hand of the customer and taking away the requirement for managing balances, credit card details and other chicanery from your backend servers.
Best Answer
You basically have two options:
First option
Pros: adding new users for free, user may send ether to deposit address from smart contracts via
transfer
methodCons: deposits are more expensive, because second transaction is needed to move ether to cold storage, deposits take longer time
Second option
Pros: deposits are cheap and instant
Cons: adding new user costs gas that has to be paid by platform, not by user