I thought of a way to prevent a pool from taking a multiple of its reward in the case where a user has inadvertently created more than one collateral box. The problem with multiple collateral boxes for the same minerPubKey
is that they can be spent in parallel transactions by the pool, since the only condition for spending them is that the block was mined by the specified minerPubKey
.
Note that we already prevent “chained” transactions, so we just need a way to prevent “parallel” transactions, i.e. transactions that do not depend on each other.
The solution is to introduce a singleton token (a token with a value of 1) and require that one of the inputs contains this token when collecting the pool reward. A “perpetual” token would be ideal for this purpose: