Author Topic: One Uniform bitUSD for all Bitshares (DPOS) chains – Proposal  (Read 2216 times)

0 Members and 1 Guest are viewing this topic.

Offline cryptillionaire

  • Full Member
  • ***
  • Posts: 153
    • View Profile
Would DACs benefit from side chains or even tree chains for combining blockchains under the one common blockchain?
I like the idea of tree chains..

https://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg04388.html
https://bitcointalk.org/index.php?topic=586832.msg6425551#msg6425551

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Why do you think every state in US does not run its own currency? How about every county? The alternative is wasteful way to do things, and 50 DACs with their own bitUSD increases the chance 48 of them to end up dead, needlessly.

And let's the bank do the banking.

Actually I think the far more appropriate analogy is BitAsset : DAC :: fiat currency : traditional bank. And just like there are so many banks, there should also be a lot of DACs. In fact I think of DACs primarily as banks with their own value added service on top that makes them special. The currencies can still be limited to a few dominant ones USD, EUR, etc. (or in the DAC world: BitUSD, BitEUR, etc.).

Continuing this analogy, the meta-DAC proposal in my post is analogous to a central bank, like the Federal Reserve. The various DACs can register as "member banks" of the central meta-DAC bank. The withdrawal transactions in my proposal are analogous to a "Fedwire" or equivalent settlement system that allows the DACs to move value from one to the other.

Edit: Oh, and while it is possible for the DACs to operate under a fractional reserve system, which in this case means that they have less BitAsset derivatives (remember that is for example a derivative of the meta-DAC's BitUSD, which is itself a USD derivative; so I like to call the BitAsset derivative on member DACs a second crypto-derivative :) ) than the BitAssets held in the meta-DAC's reserve, you would always have the choice to not support DACs that implement such policy (and everything is transparent so you can know this) by not depositing your money in their reserves (you can just keep it in the meta-DAC instead).
« Last Edit: October 19, 2014, 12:52:37 am by arhag »

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
The original proposal was BTC <-> BTSX. BTC blockchain doesn't have delegates or special rules. There could be no cheating delegates on BTC blockchain.

Emski, my comments aren't really directed towards BTC <-> BTSX, but rather to the idea of all DPOS DACs trading with one another. I still have to read your proposal more carefully, but I think it is acceptable because BTC is so important currently. It adds extra workload to the DPOS delegates but it is likely worth it because BTC has so much network effect and we desperately want to steal away that network effect from them as soon as possible (meaning making BTC to BTSX on-ramps as easy as possible is worth it to us). Therefore it is worth it for us to burden the chain validation to support ONE other chain as long as that chain is Bitcoin (at least temporarily until BTC is no longer relevant). But as a long-term solution to inter-blockchain trading of BitAssets, my comments still stand.
« Last Edit: October 19, 2014, 12:02:36 am by arhag »

zerosum

  • Guest
I am FAR FAR from expert in that regard. What I think might help a lot is, the new mail/message notification system will allow 'blockchain verifiers' to check only the transaction in question on the other blockchain.

Lightweight client validation will help but I believe it makes your proposal very similar to the proposal I made in that post linked to by the second link, except with some deficiencies. First, the receive chain would be trusting the sender chain's delegates on the validity of their blocks because they could not afford to verify the custom rules of the chain themselves. This would be like a 51-of-101 multisig instead of the 101-of-101 multisig in my proposal. Second, there is no mechanism for shareholders of the DAC to press a panic button in case the delegates collude and try to cheat. Notice that if the delegates collude and cheat they can fool the receiving chain to allocate the minted BitUSD to them rather than the rightful owner (since they have no way of knowing who the rightful owner is other than through what the delegates claim). Third, the burden of doing this validation for each sending DAC falls on the receiving DAC. Perhaps they could be compensated for the validation by taking a cut of the BitAssets received. In my proposal, the payment comes from the fees on the withdrawal transactions submitted by the delegates of the sending chain. They pay for these fees from the BitAsset reserve pool and they are authorized (by the shareholders and users of their DAC) to do so because they receive fees on their child chain by the initiator of the withdrawal transaction. There are probably other differences but I haven't thought about it too hard.

Basically, my point is that it is doable but it comes with trade-offs. Scalability trade-offs and higher risks of delegates running away with user's funds. It is not clear whether these trade-offs are worth it for the purpose of using a single token (BTSX) as the collateral for all BitAssets, and also making cross-chain BitAsset movement easier (and cheaper) for people (although in my proposal they would only be able to do the cheap inter-blockchain transfer if they are willing to wait a day for the transfer to complete for security reasons).

I will leave the technical side of this debate to you, emski, drltc, I3 team and anyone else interested and more qualified.
The point for me is that it is possible it seams to avoid having a million and one bitUSD flavors... and this is important.
Very  important. I particularly just want, this done first and foremost, and I am sure you guys will chose the best way to do it.

Why do you think every state in US does not run its own currency? How about every county? The alternative is wasteful way to do things, and 50 DACs with their own bitUSD increases the chance 48 of them to end up dead, needlessly.

And let's the bank do the banking.

Offline emski

  • Hero Member
  • *****
  • Posts: 1282
    • View Profile
    • http://lnkd.in/nPbhxG
First, the receive chain would be trusting the sender chain's delegates on the validity of their blocks because they could not afford to verify the custom rules of the chain themselves.

The original proposal was BTC <-> BTSX. BTC blockchain doesn't have delegates or special rules. There could be no cheating delegates on BTC blockchain.

Second, there is no mechanism for shareholders of the DAC to press a panic button in case the delegates collude and try to cheat. Notice that if the delegates collude and cheat they can fool the receiving chain to allocate the minted BitUSD to them rather than the rightful owner (since they have no way of knowing who the rightful owner is other than through what the delegates claim).

Panic button is the same as inchain trading - shareholders votes. Again the proposal was for DPOS <-> POW trading.

Third, the burden of doing this validation for each sending DAC falls on the receiving DAC. Perhaps they could be compensated for the validation by taking a cut of the BitAssets received. In my proposal, the payment comes from the fees on the withdrawal transactions submitted by the delegates of the sending chain. They pay for these fees from the BitAsset reserve pool and they are authorized (by the shareholders and users of their DAC) to do so because they receive fees on their child chain by the initiator of the withdrawal transaction. There are probably other differences but I haven't thought about it too hard.

Fees are not important before actual implementation. Delegate payment could be done in many ways. The question is: is it worth the extra effort?


Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
I am FAR FAR from expert in that regard. What I think might help a lot is, the new mail/message notification system will allow 'blockchain verifiers' to check only the transaction in question on the other blockchain.

Lightweight client validation will help but I believe it makes your proposal very similar to the proposal I made in that post linked to by the second link, except with some deficiencies. First, the receive chain would be trusting the sender chain's delegates on the validity of their blocks because they could not afford to verify the custom rules of the chain themselves. This would be like a 51-of-101 multisig instead of the 101-of-101 multisig in my proposal. Second, there is no mechanism for shareholders of the DAC to press a panic button in case the delegates collude and try to cheat. Notice that if the delegates collude and cheat they can fool the receiving chain to allocate the minted BitUSD to them rather than the rightful owner (since they have no way of knowing who the rightful owner is other than through what the delegates claim). Third, the burden of doing this validation for each sending DAC falls on the receiving DAC. Perhaps they could be compensated for the validation by taking a cut of the BitAssets received. In my proposal, the payment comes from the fees on the withdrawal transactions submitted by the delegates of the sending chain. They pay for these fees from the BitAsset reserve pool and they are authorized (by the shareholders and users of their DAC) to do so because they receive fees on their child chain by the initiator of the withdrawal transaction. There are probably other differences but I haven't thought about it too hard.

Basically, my point is that it is doable but it comes with trade-offs. Scalability trade-offs and higher risks of delegates running away with user's funds. It is not clear whether these trade-offs are worth it for the purpose of using a single token (BTSX) as the collateral for all BitAssets, and also making cross-chain BitAsset movement easier (and cheaper) for people (although in my proposal they would only be able to do the cheap inter-blockchain transfer if they are willing to wait a day for the transfer to complete for security reasons).

« Last Edit: October 18, 2014, 11:24:42 pm by arhag »

Offline emski

  • Hero Member
  • *****
  • Posts: 1282
    • View Profile
    • http://lnkd.in/nPbhxG
Transactions in question (these on BTC blockchain) can be included in BTSX blockchain (just their id and block number).
This way Delegates need just to check its existance from other BTC full nodes.
If each delegate checks several BTC full nodes there is no need to hold the whole BTC blockchain.
Though I dont think running a BTC full node in order to enable cross-chain trading is a bad idea.

zerosum

  • Guest
Two words: scalability nightmare. It requires all blockchain verifiers to be aware of and validate the blockchains of all DACs with which they want to exchange BitAssets. See relevant discussion here and here. The latter link discusses my proposal of how it could be done with a hierarchical system that isn't a complete scalability nightmare, but it has other trade-offs. These trade-offs are mainly that BitAsset withdrawals have a 24-hour delay and a 51% stake attack can steal all of the BitAsset reserves of the DAC. My conclusion is that the approach is probably not worth it compared to current system of isolated DACs with their own BitAssets that are traded using atomic cross-chain trading.

I am FAR FAR from expert in that regard, that's why I benign changes regarding the technical aspect. What I think might help a lot is, the new mail/message notification system will allow 'blockchain verifiers' to check only the transaction in question on the other blockchain.
« Last Edit: October 18, 2014, 11:09:07 pm by zerosum »

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Two words: scalability nightmare. It requires all blockchain verifiers to be aware of and validate the blockchains of all DACs with which they want to exchange BitAssets. See relevant discussion here and here. The latter link discusses my proposal of how it could be done with a hierarchical system that isn't a complete scalability nightmare, but it has other trade-offs. These trade-offs are mainly that BitAsset withdrawals have a 24-hour delay and a 51% stake attack can steal all of the BitAsset reserves of the DAC. My conclusion is that the approach is probably not worth it compared to current system of isolated DACs with their own BitAssets that are traded using atomic cross-chain trading.


zerosum

  • Guest
This proposal is largely based on proposal, by forum member and BTSX delegate emski, for cross-chain trading between BTC and BTSX
details at the end of this post, simply stripped out of the trading elements of his system.


The only additions on my part are: Each Bitshares DAC (aka DPOS) system simply adds, general EXIT ADDRESS for the chain.

So, if account holder bitUSD.Mover on both BTSX and VOTE blockchains wants to send 100 bitUSD to the say VOTE DAC.

1.He/She sends 100 bitUSD to the  BTSX_EXIT_ADDRESS.

2. Sends a notification on the VOTE blockchain   '100 bitUSD in'.

3.The Delegate verifies that the 100bitUSD were sent to the BTSX_EXIT_ADDRESS, that same way as in emski's proposal.

4. bitUSD.Mover's account on the VOTE blockchains  is credited 100 bitUSD.

5. For accounting purposes  VOTE_EXIT_ADDRESS account on the VOTE blockchains  is debited 100 bitUSD.



The opposite steps are used to move the bitAssets back to the BTSX blockchain.




I'm back from holiday (Cyprus is excellent place to visit in September) and I managed to fulfill my promise to better describe the topics discussed in https://bitsharestalk.org/index.php?topic=8818.0 .

In the following proposals a method for cross-chain monitoring is outlined including optimizations that should minimize nodes' overhead.

1st Proposal:
It describes means for trust-less BTC-> 1 BTSX  trading. Any user owning BTC can buy 1 BTSX from any user willing to sell under specified conditions.
https://docs.google.com/document/d/1XMu0Sxhx31qY0B2iWDoMZ_Fe12rF31Eu0y2vZ_Kdgpk/edit?usp=sharing

2nd Proposal:
It describes means for trust-less BTC <-> BTSX trading similar to current bitAsset trade. Any user owning BTC AND BTSX can post/accept orders to sell/buy BTC/BTSX similarly to current bitAsset market.
https://docs.google.com/document/d/1huR6eIJ-P1BR91P0l6IDVp4DGad5tLe9L4FTefFSFDI/edit?usp=sharing

I believe bypassing exchanges (at least for cryptocurrencies for now) is huge step towards global decentralized trust-less market.

Comments are welcome.


« Last Edit: October 18, 2014, 10:52:15 pm by zerosum »