It seems that :
2. target outputs are encoded in a separate piece of data (OP_RETURN)
Is the approach the bitcoin devs are taking smart property, I think it makes sense to plan on it as 0.9 is coming out soon.
Can you explain why nSeq is better in terms of space efficiency ? The OP_Return has 80 bytes allocated in any case.
--
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.
2. target outputs are encoded in a separate piece of data (OP_RETURN)Is the approach the bitcoin devs are taking smart property, I think it makes sense to plan on it as 0.9 is coming out soon.
Can you explain why nSeq is better in terms of space efficiency ?
The OP_Return has 80 bytes allocated in any case.
I'm not a fan of non-linear options (padding).
Once a color is defined, there is no way to change the padding later.
If the price of BTC goes up a lot, coins of that color become prohibitively expensive to exchange because of the padding.
That's how the real world works.
There is another option you didn't mention. Have a marker OP_RETURN output, which indicates this is a colored transaction (With a constant value in it - just a few bytes), and use order based coloring.
Backwards scanning then becomes trivial, because you can stop the backwards scanning whenever you hit a non-marked transaction, since you know those outputs are uncolored.
Using nSequence is imperfect because this field could one day become used.
It's the only way to achieve high 'satoshi-efficiency'.
I didn't mention it because it doesn't satisfy requirements: currently we have to use about 10000 satoshi per unit, it is prohibitively expensive.
It is already associated with certain semantics, and we know that it won't bother us even if it will be enabled again.
This can be (1) a URL to a color specification
or (2) a block number + transaction index for the genesis transaction in the blockchain.
b) The quantity of color (in integer satoshis) being transferred. If this is more than is truly available, assume that all of the available color is transferred across.
c) The input from which the color is being taken.
d) The output to which that color is being assigned.
Forward- or back-tracking is also simple with this scheme, since every single transaction explicitly states whether it transfers color across.
This can be (1) a URL to a color specificationMetadata such as URL belongs to a higher level protocol (built on top of colored coins). While you want to use an URL, someone else may want to use an email, a hash or a company registration number. While the core color coin protocol should allow for embedding metadata, it should not mandate what that metadata is. Higher level protocols can be built on top of the core color coin protocol to give particular meanings to the metadata.
or (2) a block number + transaction index for the genesis transaction in the blockchain.I don't think that helps, since any trustless node has to backtrack to the issuing transaction anyway to verify that the output is really of the color that the transaction is claiming.
The assumption I use to make that simplification is that each output is single colored and fully colored.
* No valid bitcoin transaction loses colors
if my colored coin client forgets about one of the colors
* No valid bitcoin transaction loses colorsIt is a useful characteristic to have, but I think the cost in terms of complexity (backtracking) and storage are high. A full client would have to store a potentially large list of colors for every output. This does not scale well.
Also, when you think about normal bitcoins, it is already possible to blackhole your coins by mistake: "whoops I just sent my retirement savings to an OP_RETURN output". Clients usually protect you from this though. This would be no different with colored coins.
if my colored coin client forgets about one of the colorsYou client should never forget about any color. The same way it knows the value of every unspent output in the blockchain, it should know the color of every unspent output in the blockchain. Of course, this is only feasible if outputs are single colored.