Author Topic: Is it possible for bitshares to become a sidechain of bitcoin?  (Read 25954 times)

0 Members and 1 Guest are viewing this topic.

Offline noisy

I'd be excited to have a conversation with Daniel or someone else from the BitShares team if they express any interest at all in pursuing this idea.

 CC: @bytemaster

Hey guys, Eric Martindale with Blockstream here. 

Welcome to our forum. BTW, how did you find this topic? :)

@fuzzy this is a cool idea for a hangout!

would love to.  @martindale would you be interested in joining us in a community hangout at some point?

that would be awesome!
« Last Edit: February 18, 2016, 10:35:00 am by noisy »
Take a look on: https://bitsharestalk.org/index.php/topic,19625.msg251894.html - I have a crazy idea - lets convince cryptonomex developers to use livecoding.tv

Offline complexring

  • Full Member
  • ***
  • Posts: 66
    • View Profile
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?

Yes, it is possible and doable.  There is a way to make RPC call to bitcoin to monitor the blockchain for incoming fund for example.  Once there is a value returned, it needs to be stored encrypted in the blockchain.  I think pc is thinking of a new function to store data securely in bts blockchain.

Great.  So we can make remote procedure calls to the blockchain.info API, for example, to programatically create a bitcoin wallet, correct?  Calling the create_wallet method of that API returns the new wallet's private key, which could then be stored encrypted on the Bitshares blockchain. 

So now we have a wallet that is controlled by the Bitshares blockchain and can hold BTC deposits for DEX users.  When a user deposits BTC to this wallet, they are issued a corresponding amount of SIDE.BTC which can be used on the DEX.  Later, when a user is ready to withdraw, any remaining SIDE.BTC is wiped from their account and BTC in an amount equal to the quantity of SIDE.BTC the user had remaining can be sent to a bitcoin wallet of their choice.   

If I'm not mistaken about the feasability, this solution would serve our purpose, it's trustless, and it shouldn't be very difficult to implement not only for BTC, but for any cryptocurrency that has an api with a create wallet method.  Thoughts?  Am I missing something?

@bytemaster @cube @abit

So, if the private key is stored encrypted on the blockain, who controls the private key to decrypt the private key that's stored?

Indeed. I don't think this is actually possible.  Data stored on the blockchain is accessible to everyone either in plaintext or encrypted.  If it's encrypted it's useless unless someone has the decryption key stored somewhere.  You cannot store a private key on a public blockchain that is usable by the chain but not by any set of individuals without the chain, because the blockchain itself isn't a real actor; it's a virtual entity composed of participants following its rules.

My thoughts exactly. 

Maybe we can see if Eric Martindale has good ideas on how to integrate this. 

Although, I really can't see anything better other than a random witnesses (as opposed to the top 15 as posed by bytemaster, in the event of a vote-out), having the private keys to a multisignature wallet and just hoping no collusion occurs.

But maybe their solution is somehow different than this and would work better. 

Offline fuzzy

Hey guys, Eric Martindale with Blockstream here.  The answer to your question is absolutely, yes!  It is definitely possible, and it would be very exciting to see BitShares as a sidechain.  If I recall correctly, there are many other related projects that would make equal sense as sidechains, too.

However, choosing to migrate from the existing model to a bonded sidechain is a different question.  While sidechains already exist in the wild (see the alpha sidechain if you're looking for something to prototype on top of), creating and configuring one isn't trivial (yet).  As part of the Elements Project, we're hoping to make this easier, but migrating any existing project to a sidechain will incur some amount of technical work.  In the case of BitShares, I would expect it to be significant – you'll want to make sure the benefits are worth the effort.

I'd be excited to have a conversation with Daniel or someone else from the BitShares team if they express any interest at all in pursuing this idea.  Obviously, I'm excited about it, because I think there is very clear value in doing so, but I'd want to make sure that sentiment is shared among those responsible for BitShares.

I, for one, think a world full of many interoperable blockchains is an exciting one!

@fuzzy this is a cool idea for a hangout!

would love to.  @martindale would you be interested in joining us in a community hangout at some point?
WhaleShares==DKP; BitShares is our Community! 
ShareBits and WhaleShares = Love :D

Offline Akado

  • Hero Member
  • *****
  • Posts: 2752
    • View Profile
  • BitShares: akado
Hey guys, Eric Martindale with Blockstream here.  The answer to your question is absolutely, yes!  It is definitely possible, and it would be very exciting to see BitShares as a sidechain.  If I recall correctly, there are many other related projects that would make equal sense as sidechains, too.

However, choosing to migrate from the existing model to a bonded sidechain is a different question.  While sidechains already exist in the wild (see the alpha sidechain if you're looking for something to prototype on top of), creating and configuring one isn't trivial (yet).  As part of the Elements Project, we're hoping to make this easier, but migrating any existing project to a sidechain will incur some amount of technical work.  In the case of BitShares, I would expect it to be significant – you'll want to make sure the benefits are worth the effort.

I'd be excited to have a conversation with Daniel or someone else from the BitShares team if they express any interest at all in pursuing this idea.  Obviously, I'm excited about it, because I think there is very clear value in doing so, but I'd want to make sure that sentiment is shared among those responsible for BitShares.

I, for one, think a world full of many interoperable blockchains is an exciting one!

@fuzzy this is a cool idea for a hangout!
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline Troglodactyl

  • Hero Member
  • *****
  • Posts: 960
    • View Profile
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?

Yes, it is possible and doable.  There is a way to make RPC call to bitcoin to monitor the blockchain for incoming fund for example.  Once there is a value returned, it needs to be stored encrypted in the blockchain.  I think pc is thinking of a new function to store data securely in bts blockchain.

Great.  So we can make remote procedure calls to the blockchain.info API, for example, to programatically create a bitcoin wallet, correct?  Calling the create_wallet method of that API returns the new wallet's private key, which could then be stored encrypted on the Bitshares blockchain. 

So now we have a wallet that is controlled by the Bitshares blockchain and can hold BTC deposits for DEX users.  When a user deposits BTC to this wallet, they are issued a corresponding amount of SIDE.BTC which can be used on the DEX.  Later, when a user is ready to withdraw, any remaining SIDE.BTC is wiped from their account and BTC in an amount equal to the quantity of SIDE.BTC the user had remaining can be sent to a bitcoin wallet of their choice.   

If I'm not mistaken about the feasability, this solution would serve our purpose, it's trustless, and it shouldn't be very difficult to implement not only for BTC, but for any cryptocurrency that has an api with a create wallet method.  Thoughts?  Am I missing something?

@bytemaster @cube @abit

So, if the private key is stored encrypted on the blockain, who controls the private key to decrypt the private key that's stored?
Indeed. I don't think this is actually possible.  Data stored on the blockchain is accessible to everyone either in plaintext or encrypted.  If it's encrypted it's useless unless someone has the decryption key stored somewhere.  You cannot store a private key on a public blockchain that is usable by the chain but not by any set of individuals without the chain, because the blockchain itself isn't a real actor; it's a virtual entity composed of participants following its rules.

Offline martindale

  • Newbie
  • *
  • Posts: 1
    • View Profile
Hey guys, Eric Martindale with Blockstream here.  The answer to your question is absolutely, yes!  It is definitely possible, and it would be very exciting to see BitShares as a sidechain.  If I recall correctly, there are many other related projects that would make equal sense as sidechains, too.

However, choosing to migrate from the existing model to a bonded sidechain is a different question.  While sidechains already exist in the wild (see the alpha sidechain if you're looking for something to prototype on top of), creating and configuring one isn't trivial (yet).  As part of the Elements Project, we're hoping to make this easier, but migrating any existing project to a sidechain will incur some amount of technical work.  In the case of BitShares, I would expect it to be significant – you'll want to make sure the benefits are worth the effort.

I'd be excited to have a conversation with Daniel or someone else from the BitShares team if they express any interest at all in pursuing this idea.  Obviously, I'm excited about it, because I think there is very clear value in doing so, but I'd want to make sure that sentiment is shared among those responsible for BitShares.

I, for one, think a world full of many interoperable blockchains is an exciting one!

Offline complexring

  • Full Member
  • ***
  • Posts: 66
    • View Profile
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?

Yes, it is possible and doable.  There is a way to make RPC call to bitcoin to monitor the blockchain for incoming fund for example.  Once there is a value returned, it needs to be stored encrypted in the blockchain.  I think pc is thinking of a new function to store data securely in bts blockchain.

Great.  So we can make remote procedure calls to the blockchain.info API, for example, to programatically create a bitcoin wallet, correct?  Calling the create_wallet method of that API returns the new wallet's private key, which could then be stored encrypted on the Bitshares blockchain. 

So now we have a wallet that is controlled by the Bitshares blockchain and can hold BTC deposits for DEX users.  When a user deposits BTC to this wallet, they are issued a corresponding amount of SIDE.BTC which can be used on the DEX.  Later, when a user is ready to withdraw, any remaining SIDE.BTC is wiped from their account and BTC in an amount equal to the quantity of SIDE.BTC the user had remaining can be sent to a bitcoin wallet of their choice.   

If I'm not mistaken about the feasability, this solution would serve our purpose, it's trustless, and it shouldn't be very difficult to implement not only for BTC, but for any cryptocurrency that has an api with a create wallet method.  Thoughts?  Am I missing something?

@bytemaster @cube @abit

So, if the private key is stored encrypted on the blockain, who controls the private key to decrypt the private key that's stored?

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
MUSE witness:mygoodfriend     vote for me

Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?

Yes, it is possible and doable.  There is a way to make RPC call to bitcoin to monitor the blockchain for incoming fund for example.  Once there is a value returned, it needs to be stored encrypted in the blockchain.  I think pc is thinking of a new function to store data securely in bts blockchain.

Great.  So we can make remote procedure calls to the blockchain.info API, for example, to programatically create a bitcoin wallet, correct?  Calling the create_wallet method of that API returns the new wallet's private key, which could then be stored encrypted on the Bitshares blockchain. 

So now we have a wallet that is controlled by the Bitshares blockchain and can hold BTC deposits for DEX users.  When a user deposits BTC to this wallet, they are issued a corresponding amount of SIDE.BTC which can be used on the DEX.  Later, when a user is ready to withdraw, any remaining SIDE.BTC is wiped from their account and BTC in an amount equal to the quantity of SIDE.BTC the user had remaining can be sent to a bitcoin wallet of their choice.   

If I'm not mistaken about the feasability, this solution would serve our purpose, it's trustless, and it shouldn't be very difficult to implement not only for BTC, but for any cryptocurrency that has an api with a create wallet method.  Thoughts?  Am I missing something?

@bytemaster @cube @abit

Offline cube

  • Hero Member
  • *****
  • Posts: 1404
  • Bit by bit, we will get there!
    • View Profile
  • BitShares: bitcube
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?

Yes, it is possible and doable.  There is a way to make RPC call to bitcoin to monitor the blockchain for incoming fund for example.  Once there is a value returned, it needs to be stored encrypted in the blockchain.  I think pc is thinking of a new function to store data securely in bts blockchain.
ID: bitcube
bitcube is a dedicated witness and committe member. Please vote for bitcube.

Offline BunkerChainLabs-DataSecurityNode

If it's possible, what I'm talking about would not be difficult at all.  Probably far simpler than what you're talking about.  Besides, I'm just asking a question.  And you're not the best person to determine whether it's possible or what the cost would be.  So please dispense with the sweeping proclamations.

I said keep plugging away... no need to be rude.

It's a forum where ideas are shared and anyone can contribute.

If you are so hard up for answers from BM then why not ask him directly?
+-+-+-+-+-+-+-+-+-+-+
www.Peerplays.com | Decentralized Gaming Built with Graphene - Now with BookiePro and Sweeps!
+-+-+-+-+-+-+-+-+-+-+

Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
I'm sorry, but you can't compare this to Liquid.  Liquid is a federated sidechain of centralized services (BitFinex, Kraken, BTCC, Xapo, Unocoin).  To begin with, the users of these services have to trust those companies.  On top of that, the Liquid sidechain depends on the participating companies trusting each other.  So you really can't compare that to what we're trying to accomplish here.

By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

In any event, I'm really not sure, but something tells me that what I'm proposing is very much doable.  It would be great if @bytemaster would speak to it specifically.  If it can't be done, please explain why.  Thanks!

What you are talking about is going to be costly on several fronts.

It doesn't matter if it's possible or not.. sure it's possible.. you don't need bytemasters validation on that.. anything is possible with enough money put into it.. the question is if it is practical.

Can you drive a tank from home to work every day? Sure.. is it practical.. no.

Given the costs involved what we need is a lean and simply implementation that is going to cost the least amount while accomplishing the essential functions.

Having our own Liquid with 5X the security and decentralization of what they have done is plenty of assurance for the target audience that would want to use this.

If you want to spend a lot of money on anti-trust this current market simply won't support it.

All too often simple solutions are pushed aside in favor of complex ones that are designed to suit strawman issues. I rather have a quick to execute and elegant simple solutions that accomplishes the task.

Anyways.... keep plugging away at it.. the more difficult we make it the less likely it is to be done due to costs that stakeholders will be unwilling to shoulder because of diminished returns. Lower cost means greater returns.

If it's possible, what I'm talking about would not be difficult at all.  Probably far simpler than what you're talking about.  Besides, I'm just asking a question.  And you're not the best person to determine whether it's possible or what the cost would be.  So please dispense with the sweeping proclamations.

Offline complexring

  • Full Member
  • ***
  • Posts: 66
    • View Profile
I'm sorry, but you can't compare this to Liquid.  Liquid is a federated sidechain of centralized services (BitFinex, Kraken, BTCC, Xapo, Unocoin).  To begin with, the users of these services have to trust those companies.  On top of that, the Liquid sidechain depends on the participating companies trusting each other.  So you really can't compare that to what we're trying to accomplish here.

By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

In any event, I'm really not sure, but something tells me that what I'm proposing is very much doable.  It would be great if @bytemaster would speak to it specifically.  If it can't be done, please explain why.  Thanks!

What you are talking about is going to be costly on several fronts.

It doesn't matter if it's possible or not.. sure it's possible.. you don't need bytemasters validation on that.. anything is possible with enough money put into it.. the question is if it is practical.

Can you drive a tank from home to work every day? Sure.. is it practical.. no.

Given the costs involved what we need is a lean and simply implementation that is going to cost the least amount while accomplishing the essential functions.

Having our own Liquid with 5X the security and decentralization of what they have done is plenty of assurance for the target audience that would want to use this.

If you want to spend a lot of money on anti-trust this current market simply won't support it.

All too often simple solutions are pushed aside in favor of complex ones that are designed to suit strawman issues. I rather have a quick to execute and elegant simple solutions that accomplishes the task.

Anyways.... keep plugging away at it.. the more difficult we make it the less likely it is to be done due to costs that stakeholders will be unwilling to shoulder because of diminished returns. Lower cost means greater returns.

You should use the term 'trustless' instead of 'anti-trust'.  There is a huge push from the academic community on developing new technologies that are trustless and require zero knowledge.

These proposals and thoughts on how we can do that here are good.  Some of the best minds of the century have already considered and are still thinking about how these systems can be designed and worked. 

If we can come up with a trustless implementation of this problem, we will have first-mover advantage.  It is definitely worth discussing, particularly for that reason.

I think we can all agree that we have the 'semi-trusted' parties, via witnesses or shared liquidity with various exchanges, part handled.

This solution uses multisigs, has been discussed enough and has been pointed out that we still have the possibility of collusion.

So, the question is do we want a quick and dirty 'trusted' scenario implemented first, pay for the implementation via a worker proposal, and in the meantime also design, or attempt to hash out, how to have a sidechain in a trustless manner -- and also pay for that development.

Unless of course the proposal also includes working on the trustless design.

Offline BunkerChainLabs-DataSecurityNode

I'm sorry, but you can't compare this to Liquid.  Liquid is a federated sidechain of centralized services (BitFinex, Kraken, BTCC, Xapo, Unocoin).  To begin with, the users of these services have to trust those companies.  On top of that, the Liquid sidechain depends on the participating companies trusting each other.  So you really can't compare that to what we're trying to accomplish here.

By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

In any event, I'm really not sure, but something tells me that what I'm proposing is very much doable.  It would be great if @bytemaster would speak to it specifically.  If it can't be done, please explain why.  Thanks!

What you are talking about is going to be costly on several fronts.

It doesn't matter if it's possible or not.. sure it's possible.. you don't need bytemasters validation on that.. anything is possible with enough money put into it.. the question is if it is practical.

Can you drive a tank from home to work every day? Sure.. is it practical.. no.

Given the costs involved what we need is a lean and simply implementation that is going to cost the least amount while accomplishing the essential functions.

Having our own Liquid with 5X the security and decentralization of what they have done is plenty of assurance for the target audience that would want to use this.

If you want to spend a lot of money on anti-trust this current market simply won't support it.

All too often simple solutions are pushed aside in favor of complex ones that are designed to suit strawman issues. I rather have a quick to execute and elegant simple solutions that accomplishes the task.

Anyways.... keep plugging away at it.. the more difficult we make it the less likely it is to be done due to costs that stakeholders will be unwilling to shoulder because of diminished returns. Lower cost means greater returns.
+-+-+-+-+-+-+-+-+-+-+
www.Peerplays.com | Decentralized Gaming Built with Graphene - Now with BookiePro and Sweeps!
+-+-+-+-+-+-+-+-+-+-+

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
By the way, it looks like you modified your post before I got a chance to respond.  But since you were wondering why I wasn't taking your explanation at face value, it's because you're not the expert.  So I continue to address @bytemaster with my questions since he IS the expert.  And I asked for @abit's opinion since he is a developer and, for all we know, he could be the one to code this up ultimately.  Surely you can understand where I'm coming from.

Thanks for trusting me, but sorry, I'm not a bitcoin expert, I don't know how to deal with the bitcoin multi-sig thing at all.

@abit:  This is a Bitshares question, not a bitcoin question.  It's also not a multi-sig question.  Let me ask in a different way.  Could you write code in Bitshares that calls an external API which returns a value that could then be stored securely (i.e. not accessible to any human) on the Bitshares blockchain to be used by the code at a later time?  I would imagine this is possible, but could you confirm?
Honestly right now I don't know how to call external APIs. All the jobs I've done is inside BitShares.
BitShares committee member: abit
BitShares witness: in.abit