Pages:
Author

Topic: Alternate Implementation of Colored Bitcoins - page 2. (Read 2927 times)

full member
Activity: 183
Merit: 100
Quote
Multiple colored coins in a single address would "glue" themselves together.  Sending .01000001 BTC of color A to an address X, and .01000001 of Color B to the same address X would result in an address X holding a coin of color AB. Sending .01000001 from  address X would send both the A color and the B color coin to the target address.
This is wrong. Contrary to what every wallet ever would tell you, your coins aren't aggregated into a "balance." Every transaction references specific inputs. Your scenario would result in address X holding some color A BTC and some color B BTC, that could be transmitted separately without problems.

Actually.... You don't seem to understand the scheme.  So someone with A and B colored coins at the same Bitcoin Address transfers .01000001 to Bitcoin Address X.  Assuming X had no A or B colored coins to begin with, the computed balance of colored coins in X would be .01 of A and .01 of B.  That is because starting from the A color Genesis address and computing forward the balance of A at X, you would see .01000001 transferred to X and would increment the number of A coins at X by .01.  Starting from the B color Genesis address and computing forward the balance of B at X, you would likewise see .01000001 transferred to X and would increment the number of B coins at X by .01.

As far as the Bitcoin balance is concerned at X, you get an uncolored Bitcoin balance addition of .01000001.  Suppose that X ended up with a total balance of .12345678.  Under this scheme, you could transfer all .12345678 BTC away to some other address, and X would still have a  balance of .01 A and .01 B colored Bitcoins.
At this point, I have no idea what you're saying, but I'm willing to bet money that it's wrong.

I am saying that there are alternative ways to compute a balance at a Bitcoin Address.  And while you need Bitcoin to transfer colored coin balances from one address to another (That whole bit about a "signature" as part of a transaction), you don't necessarily need Bitcoin to maintain a colored coin balance at an address.  

The Blog entry describes a way of computing a balance of Colored Bitcoins at an address that is pretty much independent of how you would compute a Bitcoin balance at that address.
hero member
Activity: 784
Merit: 1000
0xFB0D8D1534241423
Quote
Multiple colored coins in a single address would "glue" themselves together.  Sending .01000001 BTC of color A to an address X, and .01000001 of Color B to the same address X would result in an address X holding a coin of color AB. Sending .01000001 from  address X would send both the A color and the B color coin to the target address.
This is wrong. Contrary to what every wallet ever would tell you, your coins aren't aggregated into a "balance." Every transaction references specific inputs. Your scenario would result in address X holding some color A BTC and some color B BTC, that could be transmitted separately without problems.

Actually.... You don't seem to understand the scheme.  So someone with A and B colored coins at the same Bitcoin Address transfers .01000001 to Bitcoin Address X.  Assuming X had no A or B colored coins to begin with, the computed balance of colored coins in X would be .01 of A and .01 of B.  That is because starting from the A color Genesis address and computing forward the balance of A at X, you would see .01000001 transferred to X and would increment the number of A coins at X by .01.  Starting from the B color Genesis address and computing forward the balance of B at X, you would likewise see .01000001 transferred to X and would increment the number of B coins at X by .01.

As far as the Bitcoin balance is concerned at X, you get an uncolored Bitcoin balance addition of .01000001.  Suppose that X ended up with a total balance of .12345678.  Under this scheme, you could transfer all .12345678 BTC away to some other address, and X would still have a  balance of .01 A and .01 B colored Bitcoins.
At this point, I have no idea what you're saying, but I'm willing to bet money that it's wrong.
full member
Activity: 183
Merit: 100
Quote
Multiple colored coins in a single address would "glue" themselves together.  Sending .01000001 BTC of color A to an address X, and .01000001 of Color B to the same address X would result in an address X holding a coin of color AB. Sending .01000001 from  address X would send both the A color and the B color coin to the target address.
This is wrong. Contrary to what every wallet ever would tell you, your coins aren't aggregated into a "balance." Every transaction references specific inputs. Your scenario would result in address X holding some color A BTC and some color B BTC, that could be transmitted separately without problems.

Actually.... You don't seem to understand the scheme.  So someone with A and B colored coins at the same Bitcoin Address transfers .01000001 to Bitcoin Address X.  Assuming X had no A or B colored coins to begin with, the computed balance of colored coins in X would be .01 of A and .01 of B.  That is because starting from the A color Genesis address and computing forward the balance of A at X, you would see .01000001 transferred to X and would increment the number of A coins at X by .01.  Starting from the B color Genesis address and computing forward the balance of B at X, you would likewise see .01000001 transferred to X and would increment the number of B coins at X by .01.

As far as the Bitcoin balance is concerned at X, you get an uncolored Bitcoin balance addition of .01000001.  Suppose that X ended up with a total balance of .12345678.  Under this scheme, you could transfer all .12345678 BTC away to some other address, and X would still have a  balance of .01 A and .01 B colored Bitcoins.
hero member
Activity: 784
Merit: 1000
0xFB0D8D1534241423
Quote
Multiple colored coins in a single address would "glue" themselves together.  Sending .01000001 BTC of color A to an address X, and .01000001 of Color B to the same address X would result in an address X holding a coin of color AB. Sending .01000001 from  address X would send both the A color and the B color coin to the target address.
This is wrong. Contrary to what every wallet ever would tell you, your coins aren't aggregated into a "balance." Every transaction references specific inputs. Your scenario would result in address X holding some color A BTC and some color B BTC, that could be transmitted separately without problems.
full member
Activity: 183
Merit: 100
I am not sure if anyone else has made the following proposal for implementing Colored Coins.  But just in case nobody has.

A more readable version can be found http://brownzings.blogspot.com/2013/06/an-alternate-more-simple-implementation.html

A Simple Implementation of Colored Bitcoins

Colored Bitcoins allow the trading of stuff using Bitcoins that are not Bitcoins.  As long as those that buy these "colored" coins (likely for prices higher than Bitcoin itself) then the ownership those "colored" coins represent can be secured with the Bitcoin network.

Let's say for example, a company wishes to issue Bitcoin based stock.  Say that .001 of these colored Bitcoins are to represent 1 share of stock in Company X.  As long as the Bitcoin is "colored" in some way, then anyone that owns .001 of these "colored" bitcoins also owns one share of Company X.

Virtual stock exchanges could then trade these stocks, and effortlessly pass these stocks from one client to another, simply by trading these colored coins.  As an added benefit, Company X can find all the Bitcoins representing their stock in the Blockchain.  They can then pay their dividends to those Colored Bitcoins  based on the number of colored coins attributed to each of these Bitcoin addresses.

Loans are also possible, in the same fashion.  And issuers of loans can distribute the risk of a loan by selling off parts of the loan to other people.  Then the payments on the loan could be distributed to all the parties holding the colored coins.  Note that the loans can easily be denominated in Dollars, and payments can be made with "Dollar" colored Bitcoin.  Or in Gold, or Yen, or Euros.  As long as there is supply of such colored coins from some source.

This is the goal.  Now for an implementation that might not be unique to me, but that I have not seen out there in the wild.

A Simple Colored Bitcoin Implementation

There are some efforts out there to implement colored coins.  You can read some of this at BitcoinX.

First of all, there is a Really Simple way to implement Colored Coins.

  • Identify a "Genesis" Address.  All Colored Bitcoins are first issued from this address.
  • Only transfers from the Genesis Address that have a 1 in the lowest order Satoshi are transfers of the colored coin.
  • If a Bitcoin Address contains colored coins, only transfers with a 1 in the lower order Satoshi are transfers of colored coins
  • The "1" Satoshi is considered the "colored signature", and is not colored itself.
  • Any transfer fee is never colored.

So sending someone .01000001 BTC would send that person .01 Colored Coins. Sending someone .01 BTC would be sending them uncolored coins.

Problems with the Simple Colored Bitcoin Implementation

Multiple colored coins in a single address would "glue" themselves together.  Sending .01000001 BTC of color A to an address X, and .01000001 of Color B to the same address X would result in an address X holding a coin of color AB. Sending .01000001 from  address X would send both the A color and the B color coin to the target address.

Now having a unique bitcoin address for each colored coin you might like to keep does  not seem to me to be too awful of a restriction.  Still, there are some very easy ways to avoid "gluing" BTC together, which we will discuss.

Using Issuer Specific Signatures

The only entity that cares about what that signature is is the issuer, which they can  document for the user, and they can use to run up from their Genesis Account to all the recipients to find the addresses holding their coins.

So an issuer does not have to use .00000001 as their signature.  For example, an  issuer might require transfers of their colored coins to end with .XXXX1012 instead.

For example,

  • Issuer A requires .xxxx1101
  • Issuer B requires .xxxx0294
  • Issuer C requires .xxxx0372

Now if have all three coins in the same Bitcoin Address, I can send them by sending:

  • To send .2 of A coins, send .20001101
  • To send .4 of B coins, send .40000294
  • To send .3 of C coins, send .30000372
  • To send 3 uncolored coins, send 3.0

But this does Not Color Bitcoins;  You are Coloring Bitcoin Addresses!

Absolutely.  We are tracking the amount of Colored Coins at a Bitcoin Address using Bitcoin as a protocol.  A Bitcoin address can have a Zero Bitcoin balance, but contain any number of Colored Coins!

So suppose such a Bitcoin Address holds 3  color A Bitcoins, but actually is empty of bitcoin completely.  I can still send the colored coins, by first transferring BTC into the account, then sending the colored coins as required.

  • Send to the account 3.00051101 with a .0005 transfer fee
  • Send from the account 3.00001101 with a .005 transfer fee

Remember, the transfer fees will never be colored coins!

Going one step further to avoid gluing colored coins

Allowing multiple codes to transfer your coins would further reduce the risk that different colored coins become "glued" to another colored coin.

  • colored coin A could require .00000001 or .00001234 and .00009820
  • colored coin B could require .00000001 or .00003453 and .00004532
  • colored coin C could require .00000001 or .00009876 and .00003289

Now an account holding all three colored coins, A B and C would be "glued" over .00000001. But one could still transfer A only by sending half the amount ending in .00001234  and half ending in .00009820. (The two transactions would be required to the same address to actually transfer the colored coin).

As long as there are some unique codes for the colored coins, then Colored coins can be "unglued".  I'd suggest that all colored coins respect the .00000001 signature, so that it is easy to transfer the colored coins in one Bitcoin Address to another Bitcoin Address if so desired (for cold storage purposes, organizational purposes, etc.)

If each issuer of colored coins picked 3 random numbers between 2 and 9999, the odds of an one issuer having all the same codes as another would be 1 in a trillion.  

Trading Between many Colored Coins

Public trading of colored coins would require a directory of issuers, Genesis Addresses and their signatures.  However, no changes to the Bitcoin protocol or really even Bitcoin clients would be required.  However changes to the clients would make trading colored coins much safer and less error prone.

Conclusion

This approach seems more simple and more compatible with how the Blockchain works today. Furthermore, it can be implemented without anyone else knowing about how you are coloring your coins.  The only people that need to know about your colored coins are the issuer and the user.  Furthermore, Bitcoin can be used as a simple "carrier" without much fuss, allowing Bitcoin addresses to hold many colored coins, even if they hold no Bitcoin at all.
Pages:
Jump to: