We use the underlying blockchain for recording transactions/data, i.e., Blockstack operations like a preorder, register, or transfer are announced/stored in the underlying blockchain (currently Bitcoin).
There are a couple of properties we require from the underlying blockchain:
a) Ordering of operations: the underlying blockchain should be able to give a total ordering of operations, i.e., I should be able to sort all Blockstack operations/transactions in order. That’s the only thing we really rely on, and all blockchains provide this property.
b) Data durability: We require/assume that the blockchain data stays available and doesn’t just disappear, i.e., transactions that have committed will survive permanently. This property is implicit in the design of most blockchains.
c) Tamper resistance: We require/assume that it’s very hard to change blockchain history and if someone can attack the blockchain and change history, everyone will notice and it’s a fail-stop condition. Proof-of-work blockchains satisfy this requirement by providing a high proof-of-work bar for tampering with blockchain history.
If the underlying blockchain fails for some reason, we can migrate to another blockchain. Just like we migrated from Namecoin earlier.
Yes, Blockstack can migrate to another blockchain. Our rule-of-thumb is to operate on the most secure blockchain available in any given year. Migrating blockchains is a big decision/change and we don’t expect to do it often. It’s a consensus-breaking change i.e., some people might remain on the old blockchain and there will be two forks after the migration. Most apps and users will converge to a single fork eventually because people/apps on different forks are in different universes. I can post more details about forks later on.
For Bitcoin, you are really just trusting the proof-of-work. It’s really really hard for someone to come up with a longer Bitcoin blockchain that is different from the current one. Also, we ignore the last 6 blocks of the Bitcoin blockchain. So any reorgs/forks/changes that are less than 6 blocks deep don’t impact us. The probability of reorgs after 6 blocks is extremely small and that’s why it’s a common practice to wait for 6 confirmations before considering your Bitcoin transfer committed.
The developers and the community can decide to migrate. The way a migration works is that you pick a “migration block” on the current blockchain (this can be block in recent history) and transfer all state/transactions until that block to the new blockchain.
The keypairs are indepedent of the blockchain and depend on the cryptographic algorithm used to generate the keypairs. For example, when we migrated from Namecoin to Bitcoin we transferred names to bitcoin addresses that were owned by the same keypairs with which users owned their names on Namecoin. A bitcoin/namecoin/cryptocurrency-address is just a way to display a public key. You can own cryptocurrency addresses on multiple blockchains with the same keypair.