Cancelling is, surely, simply a matter of spending out from under it the outputs it is secifying as its inputs, so if someone does not finalise an atomic trade sooner than you spend out from under it the coins it planned to use as its input tough, it is invalidated thus in effect cancelled?
That should be enough IMO.
Well it's hard to discuss this when we're not sure what the cross-chain system will look like.
We mean
this, not currently possible (nLockTime and tx replacements are disabled).
But at the basic level, once everything is said and done every party will need to sign the constructed transaction. If he can back away on this last step all the preceding steps aren't committing.
This can be resolved if a signature is provided beforehand with a script saying this is valid as long as anyone pays quantity X of Y to Z. Maybe it's possible but it will surely be complicated (even if it's within the same blockchain, the script will have to recognize the color of coins).
For the all assets in one chain case (possible right now, that's what pybond tries to do), the transaction must be constructed carefully to take the colours into account, but nothing special is required for the signatures, just the default SIGHASH_ALL and all parties involved signing. If anyone moves its coins before the transaction gets into the block it is canceled no matter if all the signatures have been added or not.