To make it completely transparent to unupgraded wallets, the return outputs have to be sent to something that is non-standard today, i.e. not P2PK, P2PKH, P2SH, bare multi-sig, and (with BIP141) v0 P2WPKH and v0 P2WSH.
Mainchain segwit is particularly important here, as that allows atomic swap between the bitcoin and xbitcoin. Only services with high liquidity (exchanges, payment processors) would need to occasionally settle between the chains.
On 9 May 2017, at 08:56, Christopher Jeffrey <
chjj@purse.io> wrote:
Johnson,Yeah, I do still see the issue. I think there are still some reasonableways to mitigate it.I've started revising the extension block specification/code to coexistwith mainchain segwit. I think the benefit of this is that we canrequire exiting outputs to only be witness programs. Presumably segwitwallets will be more likely to be aware of a new output maturity rule(I've opened a PR[1] which describes this in greater detail). I thinkthis probably reduces the likelihood of the legacy wallet issue,assuming most segwit-supporting wallets would implement this rule beforethe activation of segwit.What's your opinion on whether this would have a great enough effect toprevent the legacy wallet issue? I think switching to witness programsonly may be a good balance between fungibility and backward-compat,probably better all around than creating a whole newaddr-type/wit-program just for exits.[1] https://github.com/tothemoon-org/extension-blocks/pull/16