Cross-Chain Protocol Design