Thinking about this a bit more, there is one flaw with using it to track debts among a circle of friends, which is that any of those friends could then turn around and trade the USD-stellar I issued them to someone else, who doesn't realize that they shouldn't actually trust me for it. Using a fake currency as a proxy for USD would work here, but of course fake currencies have their own problem which is everyone has to invent a unique fake currency to avoid confusion.
Another solution would be to allow gateways to declare that their coins are only redeemable by a limited set of accounts. That way I can be a gateway and issue USD-stellar that everyone knows is worthless if it leaves the circle of friends. I could do this ad-hoc just by refusing to redeem any issued coins by someone outside the group, but as mentioned above that leaves open the possibility of people not realizing that these particular coins are worthless (outside the group). Of course, this also has the problem where someone may now look at their balance and see that they have $500 USD, but not realize that $50 of it is actually debt issued by me, because the software they're using doesn't distinguish restricted coins from others.
Perhaps the fake currency approach really is the best. This has the benefit of letting an extended group of friends trade around debt issued by people they're not actually direct friends with, but they trust transitively through a shared friend. If I decide to accept debt issued by Alice, and Alice refuses to pay up when I go to her, I can then talk to our shared friend (but hopefully Alice would agree that the debt I bought from Joan is still valid and pay up). The downside is, of course, that everyone has to be using the same centralized shared currency. And that won't scale past a small group of friends (if it did, it wouldn't be a fake currency anymore). Although if you have several smaller circles of friends each with their own currency, and there's overlap, they could decide to trust the other currency and treat it as equivalent to theirs. I guess this is a continuation of Stellar's philosophy that the trust is granted by the person accepting the coin, rather than being dictated in any fashion by the issuer.
Of course, all this is predicated on the fake debt-currency not spreading far. As you try to scale to larger groups of friends, it ultimately ends up being simpler just to switch to USD.
I guess the real challenge here is figuring out how to let Stellar wallet clients display contained balances in a way that doesn't confuse coins issued by generally-trusted gateways vs coins issued by small gateways that most users probably won't trust. If I can somehow either categorize myself as a gateway, or each gateway I trust, those categories could be used to display balances appropriately. This way I can categorize Alice, Joan, Bob, Fred, and Jane as debt-issuing friends, and they can issue USD, and I won't accidentally think I have $500 USD when I really have $450 USD and $50 friend-debt. This doesn't really solve the problem of trading debt to people who don't realize it's worthless, but I don't know if that's a legitimate worry.
We recommend you only trust one gateway per currency for that exact reason. You can only paid in currency issued from accounts you trust. Lets say your friend holds Euro credits from a gateway in London, and you live in San Francisco and therefore only hold USD credits from a gateway there. All she has to do to send you USD is specify "Send him X USD". She doesn't have to care about your issuer. It's taken care of by the protocol.
Check out https://www.stellar.org/api/#api-payment. By setting Amount.issuer to be the recipient's address, the protocol will find a path from the sender's gateway to the recipient's gateway.
Speaking more broadly, I anticipate many gateways will also become exchanges, to make their credits more valuable, aka more "liquid". For instance, in the last example, what was required to make this work was a "market maker", someone in the middle buying London EUR and selling San Francisco USD. If no direct exchange existed (highly unlikely in this example), there may be a EUR -> XYZ Currency -> USD. To avoid this external dependency (and also offer a cheaper exchange rate), it would be in the London and SF gateway's best interest to trust (https://www.stellar.org/api/#api-trustset) each other. Then, the exchange from her EUR credits to your USD credits would happen directly.
Ah hah. I don't see any way to actually authorize an account to hold credit though. TrustSet seems to strictly be the reverse, and nothing else looks relevant.
You can indeed issue fake currencies. The only technical limitation is that currencies are (as it stands) limited to 3 letters.
Note that your friend would only be able to trade your fake currency to someone who is willing to trust you, so there's no obvious need to have more technical enforcement preventing trades.
Well, the main design is that people will use this for real-world currencies. If people are interested in starting to issue fake ones with arbitrary names, it's probably worth raising with the developers! They're hanging around in #stellar-dev, and I'm sure would love feedback :).
> Thinking about this a bit more, there is one flaw with using it to track debts among a circle of friends, which is that any of those friends could then turn around and trade the USD-stellar I issued them to someone else, who doesn't realize that they shouldn't actually trust me for it.
Unless this is totally different than Ripple, this can't happen unless there's a trust pathway between the recipient and you.
Well, I haven't actually used this yet, but I was thinking that you might be able to convince someone to trust the gateway that issued the USD you're trying to trade them.
Another solution would be to allow gateways to declare that their coins are only redeemable by a limited set of accounts. That way I can be a gateway and issue USD-stellar that everyone knows is worthless if it leaves the circle of friends. I could do this ad-hoc just by refusing to redeem any issued coins by someone outside the group, but as mentioned above that leaves open the possibility of people not realizing that these particular coins are worthless (outside the group). Of course, this also has the problem where someone may now look at their balance and see that they have $500 USD, but not realize that $50 of it is actually debt issued by me, because the software they're using doesn't distinguish restricted coins from others.
Perhaps the fake currency approach really is the best. This has the benefit of letting an extended group of friends trade around debt issued by people they're not actually direct friends with, but they trust transitively through a shared friend. If I decide to accept debt issued by Alice, and Alice refuses to pay up when I go to her, I can then talk to our shared friend (but hopefully Alice would agree that the debt I bought from Joan is still valid and pay up). The downside is, of course, that everyone has to be using the same centralized shared currency. And that won't scale past a small group of friends (if it did, it wouldn't be a fake currency anymore). Although if you have several smaller circles of friends each with their own currency, and there's overlap, they could decide to trust the other currency and treat it as equivalent to theirs. I guess this is a continuation of Stellar's philosophy that the trust is granted by the person accepting the coin, rather than being dictated in any fashion by the issuer.
Of course, all this is predicated on the fake debt-currency not spreading far. As you try to scale to larger groups of friends, it ultimately ends up being simpler just to switch to USD.
I guess the real challenge here is figuring out how to let Stellar wallet clients display contained balances in a way that doesn't confuse coins issued by generally-trusted gateways vs coins issued by small gateways that most users probably won't trust. If I can somehow either categorize myself as a gateway, or each gateway I trust, those categories could be used to display balances appropriately. This way I can categorize Alice, Joan, Bob, Fred, and Jane as debt-issuing friends, and they can issue USD, and I won't accidentally think I have $500 USD when I really have $450 USD and $50 friend-debt. This doesn't really solve the problem of trading debt to people who don't realize it's worthless, but I don't know if that's a legitimate worry.