Note, inputs are simply value/color, because colorvalue is a derived property.
I would hold off on introducing the concept of 'colorvalue' until after you have discussed the issues with OBC.
3) I was surprised at the increased complexity of POBC, because I think you can actually implement it much the same as OBC.
The algorithm in the whitepaper also has some side-effects I'm not sure are necessary, for example, if there are any inputs below the padding threshold at the start of the list, it will mark all outputs as uncolored.
I've implemented the algorithm in the whitepaper, as well as my own POBC which more closely aligns with OBC in the attached .js file and written some (very much not comprehensive) tests, and attached the test output as well.
4) I've read the 'Coloring Independence Theorum' repeatedly and I'm just not sure what it's trying to say.
You can find the latest version of this model here:This is literally how the software (NGCCC) is implemented.
CK as you have defined it operates strictly on a single color, which is why returning simply 'colorvalue' is enough. If a transaction contains multiple colors, you have to run separate instances of CK on it.
Where you say "CK: (tx, tx_in_cvalues)->tx_out_cvalues" I would instead say "CKgold: (tx, tx_in_iscolored)->tx_out_iscolored" but it's pedantic.
This made my head spin for a minute, but certainly it's valid: "Input i is represented by a segment [a(i), b(i)] where a(0) = 0, a(i) = b(i-1), and b(i) = a(i) + svalue(i) - padding."
Here's how I would explain it back to you...
So the theory then is to tighten up the CK rules as much as possible without limiting real functionality, so backscans terminate more quickly. I can definitely see the benefit in that.
I implemented a version of POBC CK which follows that spec literally, and although it's not exactly obvious how it translates to the code that's in the whitepaper, it does behave the same for all my test inputs anyway. See attached PobcColorTransfer2 vs PobcColorTransfer3 if you're interested. Mostly I'm just playing around here.
One interesting behavior I found in all implementations is an output that lies within a segment which has (svalue == padding) and colorvalue == 0 is still considered colored.
Probably this special case should not be considered colored, similar to how Bitcoin protocol technically supports output values of 0 but reference code will not relay them.
This is awesome work Vitalik, and I am sure it will help the community a lot !
As a first draft comments from everyone are welcome, you can add comments in the doc itself.
--
You received this message because you are subscribed to the Google Groups "Colored coins (BitcoinX)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoinX+u...@googlegroups.com.
To post to this group, send email to bitc...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
http://vbuterin.com/coloredcoins/whitepaper.html
Great progress !
Are there directions in saving the color spec and genesis tx in the bitcoin block ?
I believe that could simplify the way to read colors and make sure that the color spec are secure and decentrelized as well.
--
Bm,
Vitalik has been working together with everyone involved with this project from day 1, and has done a great job taking a lot of the work done so far and putting into one paper, after the last comment more refs have been added and more will be added too if needed.
Can u share what is the original one you reffer to ? The ond in the group header ?
Yoni
--
I am not putting down any of the papers written on the topic, but only pointing out I would like references to papers, as I have very likely missed significant papers.
If I left you with the impression that I intended to dismiss early writings, please accept this as a retraction. That wasn't my intended message.
Paul
--
no idea where it went! It was MLA style if I remember.
--
You received this message because you are subscribed to the Google Groups "Colored coins (BitcoinX)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoinX+u...@googlegroups.com.
To post to this group, send email to bitc...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Richard and All,Being the author of one of the "hacks" mentioned (hiding state in low order bits), I would like to say that I very much agree with Richard here. I learned programming on punch cards, and am quite versed in the art of squeezing information into tight spaces, largely from programming on those early DOS systems Richard mentions.What would I like to change in the Bitcoin Protocol? I'd like more powerful scripting. But that comes from being a Forth hack from the dawn of time.For Colored Coins, I would like an information value. It could be selectable, perhaps 0, 8, 16, 32, or 64 bits. With just that, the color signatures could be placed outside the Bitcoin value of the transaction. Even the number of colored coins to be transferred could be outside the bitcoin value of the transaction. Then all colored coin transactions would simply be the minimum transfer amount for the Bitcoin Network. If that changes, nothing about colored coins would change.Ultimately the power of using the Bitcoin Protocol to transfer value other than Bitcoin requires independence from Bitcoin itself. An alt coin could do this quite handily of course, but leveraging the Bitcoin network has huge network advantages.
Hi Richard, Paul, and everyone,
I completely agree that all the projects which define new layers on top of the bitcoin protocol imply that there should be improvements to the existing protocol to support more functionality. The original mastercoin piece was actually names "the second bitcoin paper".
There is a good basis that some of the changes in the protocol, such as dust rules and txOut data store which facilitate better this type of projects while protecting the bitcoin network.
Another layer of colored coins would be to create a /identity/reputation layer, so you could define based on a identity/reputation connected to addresses whether you would like to transact with that identity based on its history. This for example contradicts the anonymity paradigm of bitcoin, but adds significant features as majority of financial/economic transations are based on trust/history which is not represented today in the network. I will create an additional thread for this topic.
Yoni
I wonder if one of the tests that should be applied to each coloring scheme is one of 'elegance' or 'architectural purity'?
e.g. what happens if the 5430 satoshi limitation goes away? Would that lead to a radically different solution? If so, it's probably a sign that the solution under consideration is not ideal.
So I wonder whether what we're seeing here is the generation of a set of requirements for a Bitcoin 2.0 protocol - one that, perhaps, includes a layer of abstraction above the raw transaction data structures. That is: the reason why there are so many options for coin colouring, none of them ideal, could be because Bitcoin "1.0" isn't quite expressive enough.
For Colored Coins, I would like an information value. It could be selectable, perhaps 0, 8, 16, 32, or 64 bits. With just that, the color signatures could be placed outside the Bitcoin value of the transaction. Even the number of colored coins to be transferred could be outside the bitcoin value of the transaction. Then all colored coin transactions would simply be the minimum transfer amount for the Bitcoin Network. If that changes, nothing about colored coins would change.
The essence of the issue is that it's not 'leveraging' it's *exploiting*.
Regarding your last paragraph could a seperate blockchain network act as an escrow service in a 3 part multisig tx? Sorry if I speak at a very abstract level. The escrow network is given the pub keys for the 2 traders, and shares a unique pubkey for the tx to the traders, all three parties broadcast a send tx into bitcoin network. The escrow network would only brosdcast once it sees brosdcasts from the other two parties.
Kind of sounds like msc, but in this case miners could get paid out for escrow processing, and doing the 3rd send tx. So maybe 6 sigs are needed, 3 for each network...
Of course the enforcability of trade happens only if all parties have actually broadcast their tx. But in real life if I pull out of a deal at the last minute before the contract is signed, there is no contract :)
Perhp I missed something and am oversimplifying.