>I don't understand this part. In my scheme, a sidechain cannot
reorganize unless the mainchain reorganizes, since the consensus loop
only cares about matching the current block; it ignores splits and does
not consider them valid.
Maybe I am misunderstanding
you, but isn't this a flaw not a feature? What if a attacker pays a
large fee to have his *invalid* block hash included in the bitcoin
mainchain? Would this block *have* to be included in the sidechain's
blockchain forever since *it was* included in bitcoin blockchain?
>Do you not provide a single sidechain's h* twice in the block? Once in
the coinbase and once in the briber's separate transaction?
Yes, my BIP proposal does this.
>In my scheme at least there is no indicator byte -- the "previous block"
hash is the indicator of which sidechain it is extending. From your
other emails on this list, it seems the ratchet is for withdrawals from
sidechain to mainchain? If so, should it not only appear in only some
of the sidechains (the ones which are currently doing some withdrawal?)?
Maybe
I am missing something here, but why we do *explicitly* commit to the
previous block hash? Isn't it implicitly committed to via
SHA256(SHA256())? If a drivechain node tries to sync the drivechain from
bitcoin's commitment headers, it will invalidate that block since
the
block hash does not correctly reference the previous block hash. AFAICT
there is no need to explicitly specify the previous block hash in the
OP_BV output. In general, I don't think we should assume these
commitment headers dictate the strict ordering of blocks on the
sidechain -- only potential blocks that
*might* be valid. To
guarantee full validity drivechain nodes will have to download the full
block and figure out if they follow all of the consensus rules.