Post
Topic
Board Development & Technical Discussion
Re: Pruning OP_RETURNs with illegal content
by
DeathAndTaxes
on 18/02/2015, 19:27:21 UTC
The question is: illegal content WHERE?

Illegal where the individual user is located.  I don't think there is a technical solution because Bitcoin's scripting language is so open ended*.  If it was impossible to store arbitrary data outside of OP_RETURN outputs and OP_RETURN outputs could be pruned (intra-transaction pruning) then it wouldn't be universally pruned.  Local users would prune what they feel is objectionable or illegal on an individual basis.  All that is academic though because it is so easy to encode arbitrary data in the blockchain in a manner which simply can not be pruned by full nodes.

The simplest method would be in a native (non-P2SH) multisig output.  Any PkScript would work but up to 3 of 3 native multisig with an output just above the dust threshold is considered standard, can't be pruned, and can be used multiple times in one transaction.

PkScript:  1 3 OP_CHECKMULTISIG

Instead of three valid pubkeys one could encode up to 195 bytes:

PkScript:  1 <65 bytes> <65 bytes> <65 bytes> 3 OP_CHECKMULTISIG

Now this can never be provably never be spent so nodes could remove it from the UTXO but that is easily solved by encoding 128 bytes using two fake pubkeys w/ proper prefix and one valid key.

PkScript:  1 <04|64 bytes> <04|64 bytes> 3 OP_CHECKMULTISIG


* I think the problem is more universally described as can a blockchain be constructed such that non-transaction data is limited only to outputs that can be pruned without affecting blockchain validation.  I believe the answer is no.  It can be made harder to accomplish but it can't be made impossible.