Pages:
Author

Topic: On a decentralized bitcoin-based stock market... - page 3. (Read 9654 times)

donator
Activity: 2058
Merit: 1054
only the specific Bitcoins that were part of the generating transaction (that was signed by the issuer) signify any ownership of the asset. It doesn't matter what other Bitcoins also reside in the same address - since every satoshi can be traced back to its origin, you can never artificially inflate an asset, because the number of satoshis in the original transaction is constant.

Except you can't.
You can if you're careful. Bitcoins are fungible only at the intra-transaction level, not the address level.

If you carelessly combine token bitcoins with normal bitcoins in the same transaction then yeah, in the outputs you can't tell which one is the real one. But an address that has coins from several outputs can certainly tell how many came from each output.

Suppose that you never pay transaction fees, and never merge several tokens in the same transaction. Then there is a linear chain leading from the original output to wherever the token ended up (there can be multiple chains for the original output, but one chain for the endpoint). When an address wants to show it has tokens, it simply references the output from which it received them, and by assumption the transaction with this output only has a single input, so you just follow the chain backwards until the original output.

Transaction fees complicate things a little, because you need an unambiguous way to determine which inputs are tx fees and needn't be traced back. But it should be possible to agree on such a designation (eg tokens are only transferred in multiples of 10 satoshis, and for tx fees the input will be chosen not to be a multiple of 10).

Merging tokens also adds complication because for each output it's possible that several inputs will need to be verified. But the total work shouldn't exceed the total token transfers done.

And this whole thing becomes trivial if a protocol-enforced way is introduced to add markers to outputs. So a marker will be the hash of an output, and a transaction is valid only if the marked total in the output is at most the marked total in the input, where the output itself which has this hash is also considered marked. If not in Bitcoin itself, then in an alternative Bitstock blockchain (or maybe it will be BitAsset to make it more general).

Bitcoin can't trace unique satoshis anywhere (that would be very bad for psuedo-anonymous network).
You can't trace them if you're careful to cover your tracks. You can trace them if you're careful to "expose your tracks" (distinguishing tokens from normal BTC). Depending on the implementation you can still obfuscate tokens with other tokens.

Address 123:  5000s
Address 456:  1s

I make a transaction using 123 & 456 as input and sending 2s to 888 & 4999s to 999.
The ending output is
Address 888: 2s
Address 999: 4999s.
This is exactly the kind of transaction you will avoid if the 1s is a token.
legendary
Activity: 1358
Merit: 1003
Ron Gross
TL/DR version:
While we call it Bitcoin there are no coins.  There is no unique identifier on any "coin".  It is simply integer values tied to addresses.

I heard this argument all the time, and only now I understood what it means - thanks!

My original thoughts about implementing a p2p stock network revolved around Namecoins or a Namecoin-esque coin.

A name is something unique that can be tracked. See also this post about the cost of "long Namecoins".
donator
Activity: 1218
Merit: 1079
Gerald Davis
only the specific Bitcoins that were part of the generating transaction (that was signed by the issuer) signify any ownership of the asset. It doesn't matter what other Bitcoins also reside in the same address - since every satoshi can be traced back to its origin, you can never artificially inflate an asset, because the number of satoshis in the original transaction is constant.

Except you can't.
Bitcoin can't trace unique satoshis anywhere (that would be very bad for psuedo-anonymous network).

Bitcoin actually has no concept of unique coins/bills/satoshis.

Bitcoin simply tracks VALUE.  

You can't do arbitrary transactions with assets - the special "asset tokens" satoshis are colored, and don't relate at all to normal satoshis. The one who owns the colored satoshi owns the asset.

That is the problem or misconception.

If you have an account with 1000 Satoshis it isn't 1000 uniquely identifable satoshis.  It is simply a unique ADDRESS which currently has a value of 1000.

Thus in the example above:
Address 123 has a value of 1 satoshi which represents a share.  That satoshi isn't unique.  The address is unique.  The satoshi is simply a integer value of 1 (same as any other address w/ 1 satoshi in it).

Bitcoin doesn't track satohi's back to their source it tracks values back to their source.  Once combined you can no longer say which value came from where.  You can simply say the value is correct.

Maybe I am not being clear but take this no share example.

Address 123:  5000s
Address 456:  1s

I make a transaction using 123 & 456 as input and sending 2s to 888 & 4999s to 999.
The ending output is
Address 888: 2s
Address 999: 4999s.  The only thing you (and network can say) is the combined value of 5001s is CORRECT because it matches the inputs VALUES (not unique coins) of 5000 + 1.  If the transaction is valid we know the ending output values are also valid.

However you can't say "where" the 2s in address 888 "came from".  You simply know the value 2 is accurate.

TL/DR version:
While we call it Bitcoin there are no "coins".  
There is no unique identifier on each unit.

Bitcoin is simply an accounting system.  It ensures the inputs match the outputs in "value".
legendary
Activity: 1358
Merit: 1003
Ron Gross
Say Address 123 has 1 satoshi to represent 1 "something" (share/USD/ounce of gold/etc).

What happens if I send 1000 satoshis to that address.  Address 123 now has 1001 satoshis.  Obviously you don't have 1001 "somethings".

According to Meni's "design", only the specific Bitcoins that were part of the generating transaction (that was signed by the issuer) signify any ownership of the asset. It doesn't matter what other Bitcoins also reside in the same address - since every satoshi can be traced back to its origin, you can never artificially inflate an asset, because the number of satoshis in the original transaction is constant.

To make it a little bit more complicated say you then send 1 satoshi to Address 999 and 1 satoshi to Address 888 and the change gets sent to adresss 456.

So it is now
Address 999: 1 satoshi
Address 888: 1 satoshi
Address 456: 999 satoshi

who has the share?

You can't do arbitrary transactions with assets - the special "asset tokens" satoshis are colored, and don't relate at all to normal satoshis. The one who owns the colored satoshi owns the asset.
donator
Activity: 1218
Merit: 1079
Gerald Davis
(Maybe this kind of trading is also possible with your design, but I intuitively don't like tying assets to BTC, since BTC is meant to be split and combined, and assets are not.)

Assets are certainly meant to be split ... why wouldn't they?
It wouldn't make sense to combine assets of different "types", but of the same type - why not?

The issue is across different types.

I have asked this everytime this method comes up and never got a good answer.

Say Address 123 has 1 satoshi to represent 1 "something" (share/USD/ounce of gold/etc).

What happens if I send 1000 satoshis to that address.  Address 123 now has 1001 satoshis.  Obviously you don't have 1001 "somethings".

To make it a little bit more complicated say you then send 1 satoshi to Address 999 and 1 satoshi to Address 888 and the change gets sent to adresss 456.

So it is now
Address 999: 1 satoshi
Address 888: 1 satoshi
Address 456: 999 satoshi

who has the share?
legendary
Activity: 1358
Merit: 1003
Ron Gross
(Maybe this kind of trading is also possible with your design, but I intuitively don't like tying assets to BTC, since BTC is meant to be split and combined, and assets are not.)

Assets are certainly meant to be split ... why wouldn't they?
It wouldn't make sense to combine assets of different "types", but of the same type - why not?
administrator
Activity: 5222
Merit: 13032
Unless I'm missing something, this still doesn't allow placing committing orders.

You can use the "trading across chains" scheme.

What I described is a lot like having a separate chain with merged mining, but without the mining. So you can do most of the fancy things that Bitcoin-based chains can do.

(Maybe this kind of trading is also possible with your design, but I intuitively don't like tying assets to BTC, since BTC is meant to be split and combined, and assets are not.)
donator
Activity: 1218
Merit: 1079
Gerald Davis
Maybe not all the services GLBSE can be decentralized, but the stock issuance and exchange can be.
That would make GLBSE more resilient and less dependent on government regulations.

A hybrid is a way to bootstrap it quickly.

A decentralized network for issuance and ownership.  Centralized tools (like GLBSE) could be built on top of that.  One of the difficulties in decentralized exchanges is enforcing open orders.  Having the decentralized network handle issurance and ownership changes is much easier.

Then centralized exchanges (much like there are more than 1 exchange which trades NYSE or NASDAQ stock shares) can handle trades.  

Granted a completely decentralized network which can handle:
* issuance
* order enforcement
* ownership changes
* internal escrow (trading 1 share for 1 BTC neither party can cheat and end up w/ both)
* dividend payments
* voting
* etc

would be superior but it is much more challenging to build and would require some proof-of-work type method to reach consensus and prevent attacks.

A network which only handles issuance and ownership changes is "decentralized lite".  It would require centralized exchanges to handle "higher level functions" but would allow competing exchanges and even OTC trades not involving any exchange.

donator
Activity: 2058
Merit: 1054
It's pretty easy.

Create a separate message system with messages that handle asset creation, voting, transfer of assets, etc. These messages will contain all of the public-key crypto. A centralized message distribution server instead of a P2P protocol would be OK, since the server doesn't have all that much power.

To prevent double-spending during asset transfer, some of the messages need to be timestamped by including a hash in the Bitcoin block chain. You wouldn't even need to modify Bitcoin to do timestamping: just send some BTC to an address that is not real and actually consists of message data. (Modifying Bitcoin would allow you to do this without destroying any BTC.)
Unless I'm missing something, this still doesn't allow placing committing orders.
administrator
Activity: 5222
Merit: 13032
It's pretty easy.

Create a separate message system with messages that handle asset creation, voting, transfer of assets, etc. These messages will contain all of the public-key crypto. A centralized message distribution server instead of a P2P protocol would be OK, since the server doesn't have all that much power.

To prevent double-spending during asset transfer, some of the messages need to be timestamped by including a hash in the Bitcoin block chain. You wouldn't even need to modify Bitcoin to do timestamping: just send some BTC to an address that is not real and actually consists of message data. (Modifying Bitcoin would allow you to do this without destroying any BTC.)
legendary
Activity: 1372
Merit: 1002
Maybe not all the services GLBSE can be decentralized, but the stock issuance and exchange can be.
That would make GLBSE more resilient and less dependent on government regulations.
donator
Activity: 2058
Merit: 1054
The reason GLBSE has been kind of crappy is not because it's centralised but because it's just crappy.
I'm sure we can have a great centralized stock exchange service. This doesn't obviate the need for a decentralized stock exchange.

Markets ALL markets are by their very definition centralised, that's the whole point, everyone comes to the one place to trade, that way they will find a buy for their sell and vice versa.
The "one place" is an abstract concept. It doesn't need to be a single physical location, and it doesn't need to be provided by a single service. If there is a p2p network where I can place a bid and have someone on the other side of the globe accept it, then the entire world is the one place where people come to trade.
hero member
Activity: 602
Merit: 513
GLBSE Support [email protected]
Hey buddies.

So my 2c is that this is not a technical problem.

Bitcoin is already the decentralised medium of exchange and works great for that.

The reason GLBSE has been kind of crappy is not because it's centralised but because it's just crappy. I made a much more in dept post as to where I went wrong and where I'll be improving GLBSE here.
https://bitcointalksearch.org/topic/m.628049

Bitcoin has come along and is the first working non-centralised solution to an already existing very centralised world (banking and money).

Markets ALL markets are by their very definition centralised, that's the whole point, everyone comes to the one place to trade, that way they will find a buy for their sell and vice versa.

The problems here are to do with size, as in the small size of the market (small markets don't thrive).
Enforcing contracts
Anonymity

They are not technical, at least not yet.

Nefario
legendary
Activity: 1372
Merit: 1002
You may be interested in this thread:
https://bitcointalksearch.org/topic/smart-property-and-stock-shares-contracts-use-case-46834
A decentralized stock exchange is possible today within the bitcoin chain.
As far as I understand, this only allows essentially OTC stock trading. But to be a stock exchange it should have some mechanism to commit people to their orders. If I broadcast an order and someone wants to take me up on it, I can just decline. I can be required to tie up my coins/shares for the trade but I can't be required to go forward with it. This IMO will lead to inefficiency and manipulation.

Well, yes. This only serves for representing the shares and trading them atomically for bitcoins.
For the actual market you need another mechanism, but there's lots of possibilities for that.
But, yes, one can always make an offer and then not execute it (just cancel it instead when he receives an accept offer message). I don't see a way around this, I guess I should think more about it.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Check out this detailed answer by Meni Rosenfeld.

The idea seem sound. I would want other developers, more versed in Bitcoin protocol than I am, to review his proposal. This seems to be a large project, but one that could be one of the killer features of Bitcoin.

Anyone with free time willing to take the lead on this project?
I'll be willing to donate some BTC towards this end (as well as some undefined portion of my time for dev work).
donator
Activity: 2058
Merit: 1054
You may be interested in this thread:
https://bitcointalksearch.org/topic/smart-property-and-stock-shares-contracts-use-case-46834
A decentralized stock exchange is possible today within the bitcoin chain.
As far as I understand, this only allows essentially OTC stock trading. But to be a stock exchange it should have some mechanism to commit people to their orders. If I broadcast an order and someone wants to take me up on it, I can just decline. I can be required to tie up my coins/shares for the trade but I can't be required to go forward with it. This IMO will lead to inefficiency and manipulation.
legendary
Activity: 1372
Merit: 1002
You may be interested in this thread:

https://bitcointalksearch.org/topic/smart-property-and-stock-shares-contracts-use-case-46834

A decentralized stock exchange is possible today within the bitcoin chain.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Let's discuss how a peer-to-peer, decentralized bitcoin-based stock exchange might be best implemented.

Watching this thread, would love to participate in the project.
It should be open source, of course.

I haven't given serious thought to it, I'm sure people have.
If there's a serious effort, and other developers to pitch in, I'd love to dedicate some of my free time to this project
(I'm an experienced programmer with 10+ years of experience)

I wouldn't do it as a full time job, just to be clear, but would love to contribute/kickstart this, if it's technically doable.
hero member
Activity: 504
Merit: 500
Pages:
Jump to: