Consider, if you will, the problem of a virtual world whose participants retain intellectual property rights over their creations. How can such a world keep its residents honest in their dealings? How can people do business in a space where copying someone’s property is trivial?
To illustrate the problem, let’s imagine a virtual world in which Alice, Bob, Eve, and Charlie are participants.
Alice is a content creator. She designs objects that people might like to decorate their worlds with. She works hard at it, and feels she deserves to get paid for her work, so she sets up a store in her world that sells the objects for her. The store accepts micropayments from a major online payment processing service and delivers a copy of the object to the purchaser in return.
Now let’s meet Bob. Bob is a musician. He does live streamed concerts in his world and needs some high-quality decorations to wow his fans. His friend Charlie tells him that Alice has designed some awesome stage lights that would really spice up the performances. Bob goes to Alice’s world and buys a set of the lights. Alice makes a few bucks, and Bob has new lights for his stage. All is well with the (virtual) world.
But now Eve enters the picture. Eve doesn’t care about Alice’s intellectual property rights. Maybe she disagrees with them on philosophical grounds, or maybe she’s just broke but still wants stage lights. Either way, she decides she just has to have a copy of those lights. Now, most world browsers prevent people from copying other people’s stuff in the UI, but that’s just to keep honest people honest. There’s no way for the object not to get downloaded to Eve’s computer. How else is it going to be rendered when she gets to Bob’s concert? Eve sees those lights at Bob’s next concert and, talented coder that she is, simply copies the object right out of her cache and into the directory where her own objects are kept. She places the lights in her own world, and since Alice doesn’t keep careful track of who has bought her lights, there’s no way to know anything is amiss.
The solution to this problem is quite simple. Let’s re-imagine the situation with the following modifications:
Each user is assigned a unique cryptographic keypair for security reasons: They use these keys to log into the system securely. It’s exactly the same security used by banks to secure transactions and by secure software distribution channels to sign packages that have been vetted to be free of malware.
Whenever a user creates a new object, it is signed with his or her private key. The user’s public key is kept on file by the registrar and used to verify objects. What the signature contains is the owner of the object, their basic rights (whether the object is allowed to be copied or modified, used in derivative works, etc.), an optional license reference to specify what licensing the object is provided under, the creator of the object, and other information that is to be protected from forgery.
Now, when Bob buys a copy of Alice’s lights, he gets a set of lights that says that Bob is the owner and is signed by Alice’s private key. In essence, this is a license provided by Alice to Bob describing the agreement under which the object was furnished. The server can then check that when Bob places an object in his world, it really belongs to him. And even if Bob were to maliciously modify his server to disregard the discrepancy, other users connected to Bob’s world would be able to see it (since there’s no way for the server to show a certificate deeding the object to Bob if no such certificate exists – Alice’s private key guarantees that.
Now when Eve goes to copy Bob’s lights, she has a problem. If she copies the lights without changing them, she’ll have a set of lights that says “property of Bob.” Clients connecting to her server would be able to recognize the discrepancy and Alice would have solid evidence to invoke a DMCA takedown if she so desired. Everyone would know Eve had stolen the lights – and perhaps even worse, they would know from whom she had stolen them.
Eve could copy it and strip the signature, then resign it under her own name, saying “property of Eve,” but then anyone who saw the lights in her world would see that Eve had supposedly created it, and so anyone who recognized they were actually Alice’s design would know of the fraud.
Of course, this system is not perfect. It’s simply not possible for such a system to be perfect. Even if the graphics were rendered on a server somewhere and streamed to clients so that the object data never had to be sent to the client, anyone determined to steal content could take images of the object from various angles and reconstruct it using computer vision software like CCV. Sure, it would be harder, but the performance penalties would outweigh those gains completely.
Not to mention, someone would be paying an awful lot for their super beefy server rendering graphics for every user. What a mess.
One further addition must be made to handle open content, so let’s consider Charlie. Charlie’s a big believer in open licenses. He uses an open-source operating system, writes a column under a Creative Commons license, and generally dislikes DRM and such. So when Charlie finishes a desk he’s worked hard on and wants to share it with the world, he simply places a copy in his world and deeds it to *, a special reference that indicates that the object belongs to everyone, and anyone can then copy it and place it in their own worlds.
Note: it is important to realize that servers still keep track of who placed what in the world. This is to prevent (at the world owner’s discretion, of course) people from moving objects placed by other people. This dialogue has been concerned with the asset itself. When a copy of it is placed in a world, that is more accurately called an “instance” of that asset, just as the desk you are probably sitting at right now is not desk. It is not the concept of desk. It is a particular desk, with its own set of unique traits (where it is, whether it is clean, what is on it, etc.)
An asset is the combination of a copy of the object data and a license for it. An instance of an asset is the combination of a reference to the asset and a set of information particular to the instance – who placed it, where it is, which direction it is facing, etc.
I think I’d very much like to build a world on these principles and others, but I’m starting to realize that I just don’t have that kind of free time.