I'm attempting to construct a contract which maintains the state associated with a given NFT. I would like this to be done on-chain as there are ways for the user to attempt to save invalid (manipulated) states and the states are small enough.
When a user wants to change the state, the new accepted state is stored as datum of the output utxo. Successive changes would involve creating a new transaction with the new state as input and redeeming the output of the previous state.
The problem is with my understanding of the how the utxo system works. Would all outputs reside at the same 'address'? Would this mean that if there were 1000 different NFT owners using this contract, there would be a minimum of 1000 utxos sitting at the 'script address' at any given time? Assuming this, would the wallet software attempt to spend all the 1000 utxos before it finds the one valid for a given owner?