Author Topic: Reversible transactions - is there any sane way this could work?  (Read 7055 times)

0 Members and 1 Guest are viewing this topic.

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Centralised exchanges are not going away, there will always be a place for them - e.g. for traders who like to place and cancel limit orders without being charged.

Okay. I don't see what the problem is. Those that want better security can use a decentralized exchange. Those that want whatever conveniences a centralized exchange provide (HFT, cheaper for bots) can take the risks that come with centralized exchanges.

I don't see how reversible transactions solves any of that? The centralized exchange would just need to have a policy of delaying withdrawals of cryptocurrencies (since they aren't reversible) and being allowed to roll back the order book in the case of theft. If they can prove theft that is worth rolling things back within the period of time of the delay, they might be able to make the victims whole.

These are decisions for the centralized exchanges to make. Certainly none of this requires compromising the properties that people hold valuable in cryptocurrencies.

Offline monsterer

If we have someone we are willing to trust to make decisions about reversing transactions, why use crypto instead of just a normal webapp which tracks user balances?

Value ownership
Decentralisation
Fungability
etc
etc
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline monsterer

The centralized exchange already has the ability to roll back the database assuming they had withdraw restrictions to limit how much money was irreversibly taken away from their control. So forget about the example.

This is not something to forget about IMO. Bitstamp and Gox had exactly this system, and millions of pounds of BTC were still stolen from customers due to the hot wallet being compromised.

Centralised exchanges are not going away, there will always be a place for them - e.g. for traders who like to place and cancel limit orders without being charged.
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline roadscape

Couldn't you do it like this?
  • Issue your own (retractable) asset: PolicedUSD
  • Set up buy/sell walls around 1:1 PolicedUSD:BitUSD
  • If PolicedUSD is stolen, you (the Police) take it back from the theif
If you convince people that PolicedUSD is safer and your rules are fair, then you have a viable product

ninja edit: "people" meaning customers and merchants

No, because what would happen is the thief would just trade the PolicedUSD against bitUSD and withdraw, potentially before the exchange could take action to reverse.

Ah, you're right!

So PolicedUSD cannot be tradeable in non-KYC markets. Is there a way to configure specific markets when you register an asset in BTS?

edit:
Also, maybe Police could just disable trading PolicedUSD altogether, be the only gateway, and use KYC+coercion to "reverse" transactions they don't agree with.

disclaimer: this is simply a fun thought experiment and horrible idea
« Last Edit: January 08, 2015, 08:57:53 pm by roadscape »
http://cryptofresh.com  |  witness: roadscape

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
If we have someone we are willing to trust to make decisions about reversing transactions, why use crypto instead of just a normal webapp which tracks user balances?


There is not a chance we are making normal or market BTS or bitassets transactions reversible by anybody.
Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Whatever "payment" you make, whether it is in exchange for goods/services or the money allocated for a bid/ask order, you would need to create and sign the transaction and send it to the exchange. The exchange could sign that transaction and broadcast it, but they don't until they verify the payment should become irreversible.

That simply isn't how centralised exchanges work. In any case, how would you create a bid/ask transaction without knowing who you were going to be matched against?

The only type of centralised service that can use a escrow system like this is one that doesn't have any method of internally exchanging value. An online wallet would work fine, but not an exchange.

The transaction would be going to the centralized exchange account itself. All funds sitting in the order book would be controlled by the centralized exchange just like they are today. This is why I am not interested in centralized exchanges and prefer decentralized ones.

I think the multisig example is confusing the issue in the case of a centralized exchange. The centralized exchange already has the ability to roll back the database assuming they had withdraw restrictions to limit how much money was irreversibly taken away from their control. So forget about the example. The solution to exchange security is using decentralized exchanges with 2-of-3 multisig to protect all of your transactions.

The 2-of-2 example still holds for the case I originally presented it for where a merchant accepts a "reversible by a particular exchange" payment for goods/services. In this case both the merchant and the consumer have opted in to trust the third-party arbiter.

Offline monsterer

Couldn't you do it like this?
  • Issue your own (retractable) asset: PolicedUSD
  • Set up buy/sell walls around 1:1 PolicedUSD:BitUSD
  • If PolicedUSD is stolen, you (the Police) take it back from the theif
If you convince people that PolicedUSD is safer and your rules are fair, then you have a viable product

ninja edit: "people" meaning customers and merchants

No, because what would happen is the thief would just trade the PolicedUSD against bitUSD and withdraw, potentially before the exchange could take action to reverse.
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline monsterer

Whatever "payment" you make, whether it is in exchange for goods/services or the money allocated for a bid/ask order, you would need to create and sign the transaction and send it to the exchange. The exchange could sign that transaction and broadcast it, but they don't until they verify the payment should become irreversible.

That simply isn't how centralised exchanges work. In any case, how would you create a bid/ask transaction without knowing who you were going to be matched against?

The only type of centralised service that can use a escrow system like this is one that doesn't have any method of internally exchanging value. An online wallet would work fine, but not an exchange.
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline roadscape

Couldn't you do it like this?
  • Issue your own (retractable) asset: PolicedUSD
  • Set up buy/sell walls around 1:1 PolicedUSD:BitUSD
  • If PolicedUSD is stolen, you (the Police) take it back from the theif
If you convince people that PolicedUSD is safer and your rules are fair, then you have a viable product

ninja edit: "people" meaning customers and merchants
« Last Edit: January 08, 2015, 08:06:24 pm by roadscape »
http://cryptofresh.com  |  witness: roadscape

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Now, if you do trust that exchange why not keep your balances in a 2-of-2 multisig where you hold one of the keys and the other key is held by the exchange.

Impossible. You could trade within the exchange, make a huge loss and then refuse to release the key to the exchange at withdrawal time, locking up the balance and preventing the exchange from moving the funds out to the winner(s) of all your losing trades.

My example was regarding paying merchants for goods and services, but it still could work in certain cases with centralized exchanges too. Whatever "payment" you make, whether it is in exchange for goods/services or the money allocated for a bid/ask order, you would need to create and sign the transaction and send it to the exchange. The exchange could sign that transaction and broadcast it, but they don't until they verify the payment should become irreversible. If they decide to reverse, they can simply throw away that transaction and create a new signed one (which they give to the payer to sign and broadcast) that moves the funds to a new balance so that the payer has assurance that the old transaction cannot be used. In the case where the bid/ask order is actually matched, at some point the exchange needs to settle with the parties involved with an irreversible transaction. Prior to that point though, the exchange could roll things back.

But anyway, I am not concerned with the case of trading on centralized exchanges because I think the future is trading on decentralized exchanges like the ones on BitShares. And I think multisig protection (2-of-3 for example where you have one in the hot client, one in cold storage, and the third by a trusted business) is good enough to prevent your funds from being stolen or traded against your will due to hacking attacks.
« Last Edit: January 08, 2015, 08:07:57 pm by arhag »

Offline monsterer

Now, if you do trust that exchange why not keep your balances in a 2-of-2 multisig where you hold one of the keys and the other key is held by the exchange.

Impossible. You could trade within the exchange, make a huge loss and then refuse to release the key to the exchange at withdrawal time, locking up the balance and preventing the exchange from moving the funds out to the winner(s) of all your losing trades.
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline monsterer

Indeed, imagine that. Having compromised the exchange, the thief would now be able to reverse transactions at will, rather than only making off with the poorly secured funds.

What is this "trusted exchange" of which you speak, and if it existed how would theft from it occur in the first place?

Obviously you don't set it up that way. You could imagine a system whereby only one party has the ability to reverse transactions, which would cover your first point.

Secondly one definition for 'trusted exchange' is legitimate business managing millions of dollars of customers funds.

How can theft occur? Inadequate security measures. Take bitstamp for instance - their hot wallet was compromised, yet they are a trusted exchange by my definition.
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Imagine if you could give a trusted exchange the ability to reverse transactions in case of theft?

Horrible idea in my opinion. Now we are exposed to the risk that this exchange decides to go rogue and reverse transactions (and take their cut from the person they reverse it to) to pull off double spends. What if I don't trust that exchange? Why should I be exposed to that risk of double spend every time I accept cryptoassets for goods/services?

Now, if you do trust that exchange why not keep your balances in a 2-of-2 multisig where you hold one of the keys and the other key is held by the exchange. Now if your hot client gets hacked, your funds cannot be stolen without the cooperation of the exchange. When you pay someone, the exchange can simply allocate some of the funds for the payment but not officially pay the merchant (with an irreversible transaction) until they verify the transaction was not theft. This is good enough protection against theft in my opinion. And more importantly it is opt-in for each user rather than being imposed on everyone by the network.
« Last Edit: January 08, 2015, 07:51:12 pm by arhag »

Offline Troglodactyl

  • Hero Member
  • *****
  • Posts: 960
    • View Profile
Irreversible transactions are a consequence of the decentralized and autonomous parts of the DAC. How is a DAC supposed to know whether it is "fair" to reverse a transaction when it doesn't know "truths" about the outside world and any "truths" fed into it are the opinions of some party.

Escrow and multisig really is good enough. You let the two parties involved in the transaction decide on the arbiter who gets to tell the blockchain whether it is fair to reverse a transaction.

The DAC cannot 'know' of course. You need outside input and there are trust issues.

I don't think escrow covers all the bases - especially in the case of theft.

Imagine if you could give a trusted exchange the ability to reverse transactions in case of theft?
Indeed, imagine that. Having compromised the exchange, the thief would now be able to reverse transactions at will, rather than only making off with the poorly secured funds.

What is this "trusted exchange" of which you speak, and if it existed how would theft from it occur in the first place?

Offline monsterer

Irreversible transactions are a consequence of the decentralized and autonomous parts of the DAC. How is a DAC supposed to know whether it is "fair" to reverse a transaction when it doesn't know "truths" about the outside world and any "truths" fed into it are the opinions of some party.

Escrow and multisig really is good enough. You let the two parties involved in the transaction decide on the arbiter who gets to tell the blockchain whether it is fair to reverse a transaction.

The DAC cannot 'know' of course. You need outside input and there are trust issues.

I don't think escrow covers all the bases - especially in the case of theft.

Imagine if you could give a trusted exchange the ability to reverse transactions in case of theft?
My opinions do not represent those of metaexchange unless explicitly stated.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads