-
Notifications
You must be signed in to change notification settings - Fork 13
Description
Prime is supposed to be anchored to bitcoin with an anyone-can-spend single-use-seal that is spent, new block is committed in the spending transaction and new anyone-can-spend single-use-seal is created, if it so happens that there is not a proper commitment, a protocol reset happens through OP_RETURN announcement. Here are the problems I see along with possible solutions to them.
1. Selfish mining
Happens when a miner produces a valid commitment but doesn't release the prime block, instead he keeps the blocks for himself, and releases them at some point in the future causing a possibly massive re-org. With addition of secondary PoW (Prime PoW) this can be mitigated, but a party with >51% of Prime PoW would be able to cause massive re-orgs and double spends, so I don't see how this is necessary better than a separate blockchain with its own PoW.
A simple solution to this problem would be to publish whole prime blockheader on bitcoin, either through OP_RETURN or as a taproot inscription, then no miner can withold publishing of blockheader as it would be stored in the clear on bitcoin mainchain.
2. Replacement cycling attack
Anyone-can-spend outputs are prime candidates for attack via replacement cycling attack, as was recently discussed on the bitcoin mailing list, this would allow ANY malicous party to censor Prime blocks from being committed to bitcoin mainchain. You can find a good description of the attack here. Basically this is a way to evict any transaction trying to spend the anyone-can-spend output from the mempool, so it never gets mined.
Solution for this would be to change the output from anyone-can-spend to an output script which requires PoW to be spent, this can be done through signature grinding.