Assignment is an owned right (defined by owned right type
u8value) + state data + UTXO, which forms a single-use-seal definition when it is assigned that owned right. So: nothing can prevent some given UTXO from having multiple assignments, of different owned right type, and even for each owned right type there might be multiple assignments.
UTXO <-one to many-> owned right type <-one to many-> assignment of some state:
- assign an inflation right to it (one)
- assign ownership right fo 100 of USDT
- assign ownership right of 10 Apple shares under different contract
- assign ownership right of 10000 of USDT again
This is a very bad situation, but we can’t prevent it from happening. Especially if you assign different types of owned rights under the same contract you may not be able to create a state transition without loosing some of the rights or assets (since state transitions have a very strict set of owned rights type for which they can close seals). That is why we have created “split rights" state transition, which does only one thing - gives the ability to split those mixed rights into different UTXOs. Management of these UTXOs stays an opened question.