Thanks Justin,
I realise that random shuffling of validators is a good way to resolve the bribed validator problem, coupled with a large block height before any cross-shard sharing of state.
I wanted to explore a way of sharing state between shards that would make transaction-finality quicker (i.e. by not having a large block height).
Instead of signing off and sharing the merkle state root for a block at height h with other shards, you can share the state of a more recent block (height =1 or 2) if there is a proof that many other people have seen that block.
If the most recent block is erroneous and has been shared with many people, a fraud proof will be easily generated. So the problem is one of data-availability- has the block been seen yet or not.
The other shards can do things like sample active members of a shard, asking which block was the most recently seen.
However, my solution was to present a proof that the transaction block may be expected to have been seen by a large number of people with a relatively small ZK proof.
Hope this clarifies, I’m not sure about all of the inner workings of the sharding protocol, but understand more through reading your comments. Thanks.