How to track dupes?

How much meta-data will I need to store in each item to track down for deletion if they’ve been confirmed to be a dupe? For context, this is how my system works:

  • Each resource node contains a list of elements, currently with no metadata
  • Resources can be made by smelting other resources into a monosubstrate
  • Resources can be bought, sold, or bidded upon in a cross-server market system

How and what should I store as meta-data on every resource node to effiecently track a resource’s origin?

I’m thinking of storing the following events on the metadata of a resource node:

  • Node is picked up by a player that isn’t the one who dropped it
  • Node formed from a molten substrate would contain all the metadata of the nodes within it
  • Nodes will contain all info about trades that they were in

Tracking duplicates is incredibly hard because:

  • You’ll inflate your data sizes by adding UUIDs to all items
  • You’ll inflate your data sizes by adding all of its transaction history
  • There’s no reliable way to check what is duplicated if it’s across multiple datastore “profiles”

Branching off the third idea, the most challenging one, if multiple players are duping and trading off their duped items, how are you going to check for that? You could scan the players data and check for duplicate UUIDs, but what if their dupe method doesn’t include the duplicate item getting back into their inventory? What if it duplicates into someone elses on another server?

You can easily check all the current server loaded datastore profiles to see if there are duplicates, but doing it across servers or doing it to data that isn’t currently loaded (if the player is offline)? Incredibly hard. The only way around that is to host your own database that has those capabilities.

And finally, even if you do find a duplicate, it creates the hard question of what do you do? Delete it? Wipe the data of the player who owns it? What if a player traded for a duplicate legitimately? Which copy do you even delete? How would you know which one is the original? Do you give them compensation, or would that create a bigger incentive to duplicate in the first place?

You could argue that manual moderation could solve some of these, but it’s simply a waste of time. Millions of transactions with you or moderators checking over transactions is like looking for a needle in a hay stack. Even if you added a report system to track down mass duplicators it’d be useless since most players won’t know they’re trading for duped items in the first place.

The cheapest, most efficient way of solving this is to prevent duplication, before it occurs.

Revising object theory in my game:

  • Objects can be conjoined into new objects by melting
  • Objects can react with adjacent objects or within a melt
    • by adjacent, reactions such as K + H20 → KHO + H
    • by melting, reactions such as 2(Fe203) + 3C → 4Fe + 3CO2
  • Objects can be created by cooling a melt
  • Objects can be created by being mined

As once monoelemental objects slowly go through more melts, they would pile up data assuming that I keep track of data that you’ve suggested.

Is there any suggestions to help prevent such a duping issue, expecially with an object theory of the style of my game?