News for hackers. Stuff that matters.
Re:Stellar by mrb on Thursday July 31, 2014 @02:18PM (#8115946)
"If so, then doesn't it have all the same problems and concerns as Ripple?"

Correct. Like Ripple, Stellar requires special (and dangerous) trust in certain nodes. For example, gateways (https://www.stellar.org/blog/introducing-stellar/#gateways) have to be trusted by the Stellar network as they send messages like "a user deposited 100 USD via a bank wire transfer, so please accept this digital representation of 100 USD, trust me". This trust is dangerous as people running an (initially) honest gateway may start acting maliciously and lie about how much USD or EUR or other currency exist on the network. By the time the malice is detected, maybe the network could trace all USD or EUR that was issued by the gateway, and revoke it, suddenly pissing off a lot of users who owns this currency as it would disappear from their wallet. Users would then loose trust in Stellar, and the network would collapse...

Stripe would presumably be the first gateway trusted by the Stellar network. Okay, so what if Stripe decided they could not trust other gateways and wanted to remain the only gateway? Well Stripe would be the only way to inject USD or EUR or other currencies in the network, effectively making Stellar a fully centralized digital currency, with the entire Stellar network being dependent on Stripe not being hacked, not being abused by a malicious employee, not shutting down, etc.

This is the complete opposite design principle of Bitcoin which requires absolutely no trust in any specific authority.

Re:Stellar by gdb on Thursday July 31, 2014 @02:39PM (#8116093)
Gateways actually don't have to be trusted by the network. Think of them as similar to stores issuing credit: the gateway just says "the user has a credit for 100 USD, redeemable at my store". That credit is tradable, but only to other users who trust credit from that gateway.

This means there needs to emerge a good system for users to decide which gateways to trust, but a malicious gateway can only directly harm the users who have decided to trust it.

The beauty of this model is anyone can become a gateway at any time. See for example the gist linked at the end of the Stellar blog post: https://gist.github.com/thejollyrogers/b114b5a98fa11a5a4ad0 — becoming a gateway is just two API calls.

Re:Stellar by mrb on Thursday July 31, 2014 @05:01PM (#8116987)
"The network does not need to trust gateways, but users need to trust them" -> a subtle difference, but it does not change my point: trusting a gateway's honesty is required.

So let's say I choose to not trust any gateway and their currencies, and instead decide to transact in the native stellar currency directly. This is a strange choice: why have support for alternate currencies if the Stellar protocol in itself can do nothing to help gateways gain trust? You might as well have, say, Amazon not even bother becoming a gateway issuing their own USD_Amazon, but instead Amazon would just accept the stellar currency directly. In this case I am still required to trust the native stellar currency. I am required to trust that Stellar --the nonprofit organization-- will correctly follow their mandate (https://www.stellar.org/about/mandate/): distributing x% to X, y% to Y, etc, properly thwarting fraud attempts from people with many fake Facebook accounts, properly thwarting fraud attempts during voting (https://www.stellar.org/about/mandate/#Stellar_creation), properly thwarting fraud attempts from people building fake nonprofits to attempts to gain a share of the 25% of stellars reserved for nonprofits, etc. And Stellar trusts Facebook, so I am even required to trust that there is no malicious employee at Facebook that will exploit APIs to attempt to gain stellars. You plan to distribute stellars through SMS? Heck I now need to trust telecom carrier employees, etc. Even if you are honest and make no operational mistake, fighting all these fraud attempts will be a large uphill battle, and there is way too much trust required, way too many possibilities for mistakes to happen.

Contrast this with Bitcoin: all Bitcoin requires is trust in three cryptographic algorithms which fit in a few thousand lines of code (ECDSA w/secp256k1, SHA-256, and RIPEMD-160).

I appreciate the attempt of building a different payment technology, but Stellar should not mislead people into believing they are similar to Bitcoin ("Stellar is decentralized [...] owes a lot to Bitcoin"). Stellar threw away the most fundamental element of Bitcoin: complete decentralization (including decentralization of the issuance of units of currency.)

Re:Stellar by gdb on Thursday July 31, 2014 @05:36PM (#8117137)
Stellar is built to be a bridge from the physical one to the digital one. There certainly are tradeoffs there, particularly that the kinds of trust relationships needed for your life today have direct analogues. But, as I mentioned in https://stripe.com/blog/bitcoin-the-stripe-perspective, it's not obvious that the Bitcoin technology on its own will end up being enough to avoid having to reintroduce trust in some form. (There is a chance that we'll figure out how to do trust in a distributed fashion, which would be awesome for both Bitcoin and Stellar.)

So I'm with you — there are real tradeoffs here, and I'd encourage everyone interested in this stuff to mull them over (and I'm also happy to discuss: [email protected]). But one thing I really respect about the Stellar organization is the very deliberate approach they've taken to these choices, and how they've found a happy middle that feels like a translation of the existing physical world into the new digital one. If it works, I think it'll make Bitcoin and other digital currencies even more successful.

Re:Stellar by ender7 on Thursday July 31, 2014 @08:12PM (#8117738)
In practice, however, using BitCoin requires trusting something that is the equivalent of a gateway (an exchange) with your BitCoins if you want to be able to freely trade them.

The fact that this weakness does not appear in the BitCoin protocol, but is rather implied by the human desire for convenience and marketplaces, doesn't make it less of a flaw. One can sneer at everyone who lost money with MtGox for "choosing poorly", so to speak, but on the other hand exchanges are the driving force behind BitCoin's success.

Re:Stellar by grubles on Thursday August 07, 2014 @10:50PM (#8151204)
Your choice in trading Bitcoin freely is not only via an exchange. There are other means such as p2p markets like #bitcoin-otc or localbitcoins.
Re:Stellar by eridius on Thursday July 31, 2014 @05:54PM (#8117233)
> The beauty of this model is anyone can become a gateway at any time.

If this takes off, then you could use this to build the killer "spot me $5" app. A few weeks ago when some friends were describing the spreadsheet they used to track who owes what to who, I proposed a micro-virtual currency limited to just the circle of friends that all trust each other, whereby exchanging the virtual currency you can transfer debts, and trivially find out who owes money and who is owed just by looking at the current account ledger. Seems like Stellar enables that on a massive scale, without everyone needing to trust each other, because the coins are all tagged with the issuer.

Stellar uses real-world currencies to denote the held values. Does it limit these currencies to actual known entities, or could I become an issuer and start issuing credits in a fake currency? If I can do that, then it seems like there's an opportunity here to use Stellar to track things other than monetary exchanges. As a hypothetical example, if I had several kids, they could all trust each other to issue units of a fake currency called "Chore". If I ask one of them to do something, they could instead pay 1 Chore to their sibling to have them do it instead. This can of course be redeemed later if I ask the sibling to do something. Since it's a fake currency, it has no real value and can't be traded outside of the small group of kids (as nobody would accept it). This sort of thing can't be done with e.g. USD because the proxy money could be traded to someone else who doesn't realize that I won't actually accept it back for money.

Re:Stellar by eridius on Thursday July 31, 2014 @06:09PM (#8117303)
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.

Re:Stellar by andrewstellar on Friday August 01, 2014 @01:56AM (#8118549)
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.

Re:Stellar by andrewstellar on Friday August 01, 2014 @01:43AM (#8118519)
> Another solution would be to allow gateways to declare that their coins are only redeemable by a limited set of accounts.

Yep, that's baked into the protocol :) https://www.stellar.org/api/#api-accountset - require Auth flag

Re:Stellar by eridius on Friday August 01, 2014 @01:08PM (#8121495)
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.
Re:Stellar by gdb on Thursday July 31, 2014 @06:14PM (#8117331)
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.

Re:Stellar by tinco on Thursday July 31, 2014 @07:31PM (#8117607)
That's not a sane limitation at all. Why would such a limitation be in a protocol designed in 2014?
Re:Stellar by gdb on Thursday July 31, 2014 @07:42PM (#8117642)
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 :).
Re:Stellar by aianus on Thursday July 31, 2014 @11:27PM (#8118244)
> 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.

Re:Stellar by eridius on Friday August 01, 2014 @01:56PM (#8121798)
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.
Re:Stellar by eordano on Thursday July 31, 2014 @03:50PM (#8116541)
I smell compatibility hell.

"Hey, take my credit from X gateway" "Sorry, I don't trust X"

Re:Stellar by gdb on Thursday July 31, 2014 @03:53PM (#8116567)
Yep! That's where the stellar comes in. It's something that everyone the network can accept and requires no trust. So as long as someone is willing to convert your gateway's credit to stellar (and worst case, your gateway should be willing to do so), you're fine.
Re:Stellar by eridius on Thursday July 31, 2014 @06:16PM (#8117346)
That's assuming your gateway has stellar on hand to provide as conversion. Stripe is starting with 2% of the stellar, but (AFAIK) nobody else is starting with any significant chunk. If a gateway issues credit in exchange for real-world exchanges, I don't see why there's any expectation that they'll have stellar on-hand to use for the conversion, although perhaps they can use their real-world money to buy stellar from some other gateway.

I'm also wondering, since the amount of Stellar is capped (100 billion, right? Can this ever change?), and since 50% of Stellar is being distributed to people who sign up, it seems like a sizable portion of this Stellar will almost certainly immediately become unusable as people sign up, get their Stellar, and never come back.

Edit: Just found the bit where it says Stellar will be created at a rate of 1% annually. The fixed 100 billion cap I cited was based on earlier comments about Ripple's cap.

Re:Stellar by themusicgod1 on Saturday August 02, 2014 @04:08PM (#8125844)
> That's assuming your gateway has stellar on hand to provide as conversion.

That's not the only way that gateways can talk to eachother. Given this is ripple we're talking about, anyone who has a mutual trust connection between gateways can facilitate a transaction, as can any market-making trader.

Looking at MIRI's gateway and my own showed dozens of such connections. Ripple has 100,000 users, any of which can be part of the connection between any two given gateways. Stellar is planning on growing that large and larger, so it should be expected that this will happen there, too.

Re:Stellar by kanzure on Thursday July 31, 2014 @04:36PM (#8116830)
> (and worst case, your gateway should be willing to do so)

Isn't the worst case that the gateway goes belly up?

Re:Stellar by gdb on Thursday July 31, 2014 @04:51PM (#8116919)
Well, the real worst case is probably that the Earth gets hit by a coronal mass ejection and takes down all electronics: http://bit.ly/1qO25PH :).

But more seriously, a gateway you trust going under is indeed a risk. That's part of why you can specify not just "I trust this gateway" but also "I trust this gateway for up to 100 CAD" — you can explicitly specify your exposure.

Re:Stellar by natrius on Thursday July 31, 2014 @02:42PM (#8116110)
Switching between currencies, especially paper currencies, requires trust unless you're physically handing over money. I have full control over my bitcoins, but if I want dollars, I need to trust Bitstamp and my bank, or Stellar and my gateway.

Anyone can be a gateway, so Stripe can't prevent others from succeeding. The only barrier to entry to becoming a successful gateway is earning the trust of the folks transacting on the network.

Re:Stellar by tomasien on Friday August 01, 2014 @09:21AM (#8119619)
IMO it would HELP if some of the USD and other government backed currency transmitters/gateways/etc tried to help with accountability IE - how much USD did we transfer into Stellar in raw numbers today. I'd be willing to participate on the ACH side.
Re:Stellar by alwillis on Wednesday August 06, 2014 @04:53AM (#8141633)
Correct. Like Ripple, Stellar requires special (and dangerous) trust in certain nodes.

This is incorrect. A trustline between a user and a gateway is no different (https://ripple.com/wiki/Ripple_for_Gateways#Gateway.E2.80.99...), special or any more dangerous than a trustline between any two users on the network.

I can extend a trustline of $20 to my buddy Jim or I can extend a trustline to a gateway for $20. It makes no difference to the network.

For example, gateways (https://www.stellar.org/blog/introducing-stellar/#gateways) have to be trusted by the Stellar network as they send messages like "a user deposited 100 USD via a bank wire transfer, so please accept this digital representation of 100 USD, trust me".

Also incorrect. The only trust required is for the user to trust a gateway to hold a balance on their behalf. The consensus process--you might want to read about it at https://ripple.com/wiki/Consensus ensures that the all nodes agree to this change in the status of the ledger.

This trust is dangerous as people running an (initially) honest gateway may start acting maliciously and lie about how much USD or EUR or other currency exist on the network.

Wrong again. Both Ripple and Stellar's consensus process require that all of the nodes agree on the state of the ledger before any new transactions can be added to it. Bogus transactions or changes to the ledger are easily detected.

From Ripple's wiki (https://ripple.com/wiki/Consensus#Liars):

If someone should be dishonest, the honest actors will notice them lying and can disregard their future attestations. That is, if you lie once, you have no gain as the network doesn't care and they won't care what you say in the future.

The ripple protocol requires validators to sign the consensus ledger after each validation interval. If a validator fails to do this, it will be easily detectable. Similarly, if a validator signs a ledger and then signs a ledger after that which cannot be reached by a combination of valid transactions, this will also be easily detectable.

And then you say…

By the time the malice is detected, maybe the network could trace all USD or EUR that was issued by the gateway, and revoke it, suddenly pissing off a lot of users who owns this currency as it would disappear from their wallet. Users would then loose trust in Stellar, and the network would collapse...

Nope; see above why this can't happen.

Stripe would presumably be the first gateway trusted by the Stellar network. Okay, so what if Stripe decided they could not trust other gateways and wanted to remain the only gateway?

The model isn't based on trusting any particular gateway; it's based on trusting multiple gateways to not collude against you.

Example: you may not trust a gateway run by the Democratic National Committee or one run by the Republican National Committee, but you can be pretty confident they aren't going to collude against you. And because they'd both are on your Unique Node List, if they agree with the other nodes you talk to, you can be confident the ledger reflects the true state of the network.

Well Stripe would be the only way to inject USD or EUR or other currencies in the network, effectively making Stellar a fully centralized digital currency, with the entire Stellar network being dependent on Stripe not being hacked, not being abused by a malicious employee, not shutting down, etc.

Wrong. Again.

Anyone on Ripple (or Stellar) can be a gateway or market maker and provide liquidity on the network. There's nothing special about Stripe, except that they have more money and reputation than most of us do.

It does mean that lots of people will trust Stripe to hold USD balances on their behalf.

If you're totally paranoid, with Ripple or Stellar, you can decide to only transact fiat currencies with people you know and trust and act as gateways for each other (https://ripple.com/wiki/Ripple_for_Gateways). The beauty is you can transact with people outside of your circle if one of your friends has extends trust to someone you don't know. You don't have to trust them, but as long you trust someone in common, you can transact with fiat.

This is the complete opposite design principle of Bitcoin which requires absolutely no trust in any specific authority.

Because the bitcoin protocol doesn't take into account the concept of gateways between the blockchain and fiat currencies, bitcoin users are left with relying on exchanges like Mt. Gox to address this. How did that work out?