I think I need to simplify this thread in light of the increased interest in/awareness of Sidechains with the Blockstream team announcement.
The Bitcoin Blockchain is big and strong and secure and reliable. But it is also relatively slow. So not every application that could benefit from a trustless distributed pubic ledger system (and particularly from it’s unparalleled security) can function optimally on the Bitcoin Blockchain.
It would be useful to have additional Blockchains that have different behaviors/rules. I.e. You make these sidechains fit the application rather than making the application fit the Bitcoin Blockchain.
The difficulty is in communicating between the Blockchains. This should involve “locking” some tokens on the parent chain (e.g. Bitcoin Blockchain) and issuing a related amount of Sidechain tokens such that these Sidechain tokens can be moved around within their own Sidechain as normal.
So far, this is very like the Proof of Burn method used to instantiate XCP balances of the Counterparty Protocol. But this was an irreversible process. The attraction of Sidechains as an idea is that one could send the Sidechain tokens back to redeem the originally locked parent tokens.
To do so, one should have a way of “locking” the Sidechain tokens and verifying that they are “locked” in the Parent Chain, such that the originally locked Parent Chain tokens become unlocked and useable again (as normal).
TLDR:
[1] “Lock” a Counterparty Asset (e.g. 10 XCP) in the Counterparty Protocol (embedded in the Bitcoin Blockchain), using a new Lock Transaction.
[2] Receive Sidechain Asset (e.g. 10 SXCP) and move around the sidechain as normal.
[3] Burn the 10 SXCP in the Sidechain.
[4] Broadcast an “Unlock” 10 XCP transaction to the Sidechain miners.
[5] Sidechain miners agree that the 10 SXCP was burned and the requested XCP unlock trasaction is broadcast to the BTC miners.
[6] The Counterparty Protocol unlocks the originally locked XCP.