How does the parent chain know the current difficulty of the side chain (without observing it) in order to validate the proofs of work?
SPV validation means scanning the block headers. You can get the difficulty just from monitoring the headers. This doesn't tell you if all the transactions in the sidechain are valid.
The risk is that the main chain might accept back a coin from a sidechain and then a re-org happens on the sidechain and the coin appears back on the side chain.
Handling that in a "fair" way is hard. As far as the parent is concerned, the coin was recovered.
This means that a sidechain might have 100,000 BTC on it, but think it has 100,500 BTC.
They suggest three possible solutions:
- Do nothing
The odds of more than 100,000 of the 100,500 BTC being withdrawn is low. The risk is that as more BTC are lost, a run might occur on the side chain. Only the first 100k withdrawn gets anything.
- Exchange rate
All coins on the sidechain are re-computed. You only get 99.5% of your BTC back. This treats all users equally and eliminates the problem of a run.
- Reverse all transactions
If the side-chain re-orgs, then that causes the parent to re-org. This would cause chaos. It also breaks the separation of the altchain vs parent chain.
For example, if the parent chain was the main bitcoin system and the sidechain was some altcoin, then bitcoin isn't going to reverse blocks due to problems with the altcoin.