Read the sub-currency contract written by Gavin. Basic outline is there. As a contract it should work if we polish it up a bit and tighten some screws in the contract. IMHO, herein lies the problem beyond just that contract.
Say, Alice decides to want to buy some of these GavCoins. She goes to GavBank and bought some 1million of GavCoins for $100. That's fine. How is she going to get those coins? To a wallet? To whose wallet? Alice? Alice hasn't got a GavCoin Wallet. There is no GavCoin wallet as it runs on ethereum. And so, it must be another contract. Let's call this wallet GavCoin Wallet contract. So how does this GavCoin Wallet contract work? I guess it is a simple in/out contract. OK. Let's assume it is a simple in/out wallet. So far so good. GavBank deposits that amount of 1 million from the 10^18 coins it has into Alice's GavCoin Wallet Contract.
Bob comes along and sees that Alice has a GavCoin Wallet Contract and tells her that she was silly to have signed up. Bob shows Alice he can make her another million of these GavCoins into her GavCoin Wallet Contract for free. Bob sends 1 million more GavCoins as a Data parameter and Alice immediately sees 1 more million of these Gavcoins in Gavcoin Wallet Contract balance.
Alice goes back to GavBank and complains that there is a security hole. Anyone can create a GavCoin Wallet Contract and send free Gavcoins to this contract. Where is the protection?
OK. Perhaps we have a work around and record in GavCoin original contract a table of verified and certified Wallet Contracts. So, there appears to be another contract where every GavCoin wallet must be "approved" before it can send to another wallet. Herein lies another problem:
The new contract is just a long list of Wallet contracts that are approved. If we base it on a steady state assumption (based on facebook's number of users) of 1.2Billion of these wallets around, we will need to have a storage of 1.2Billion contract addresses of 20 bytes each, i.e., 24GB of contract data. The ethereum transaction cost will be colossal just to store these addresses. An average transaction of once a day of 100 bytes for each of these users will lead to 1.2TB of storage space a day for transactions just for this one application.
If there are just 10 of these instances with 1.2B users, the whole ethereum will implode. It just does not make sense.
Unless I am totally wrong in the foregoing, ethereum is a very novel concept but for deployment, sadly, it appears to be nothing more than just being academic.