Earlier quoted context omitted.
You prove you own the NFT the same way you prove to your bank that you have money: by letting the bank hold it for you. You deposit or lock the NFT into the service (essentially making it a staking contract ). This associates the NFT with an account within the service's smart-contract (of the depositor's choice), which can then be mirrored by an oracle-process observing on the service's backend to become "a record in…
Thanks, pretty good explanation of a way for it to work. I don't see what advantage this implementation offers though (happy to be wrong). The game is checking with Valve to see if I am allowed to play it. I will need Valve to agree to honor my token and talk to the game appropriately in perpetuity. A third party that I sell the token to would also be relying on Valve to honor the validity of the token after I transf…
Yes, each individual release of the game checks with some particular private corporate server, rather than checking the NFT’s status directly (because, as you said, a PKI keypair is non-unique, and so cannot[1] be used to enforce max-concurrent usage.) And at any given time, you only have a right to play one individual release of the game (or zero, if your NFT isn’t staked anywhere.) But, by moving the NFT around, you can always exchange [a license to play] release X of the game, for [a license to play] release Y of the game. That’s the “freedom of movement” that NFTs get you.
Steam→Origin isn’t a very interesting example of this, since both releases of the game are likely nearly byte-for-byte identical. Consider instead moving a license NFT you possess for an abstract widely-released game title between Steam and, say, the PS4, or the Switch. These aren’t just different “releases”, they’re different ports, perhaps of differing quality—but they may be legally considered to be the same abstract “game title.” (The license NFT would probably correspond to the same abstract copyrightable work for which the ports are all derivative works.)
Even better, this would allow you to detach a license NFT from a “dead” platform (the Wii U, say), and move it to a living platform (e.g. the Switch) where the game has been re-released. Then I wouldn’t have to ever buy NSMBU again[2]. These platform companies’ business models would never allow implementing that on their own... unless a court of law forced them to do it. And there are no real obstacles stopping interested parties from lobbying for exactly such a law!
[1] Although PKI keypairs can be made unique, by generating the privkey on a TPM it can’t be read out from, such as a smart card. Games in e.g. South Korea already rely on smart-card based license activation (although IMHO this only works because of the culture — people in SK mostly play games in net cafes rather than at home, so people don’t generally need to own smart-card readers.) It would very much be possible to make the same smart-card your custodial wallet for your NFTs, and your proof-of-possession for the game to challenge-response against. Then you wouldn’t need a corporate license server — at least in the case of that release of the game. Probably you’d still want to enable interoperation with ecosystems they did use license servers, e.g. the game console ecosystems.
[2] Speaking of Wii U → Switch re-releases: I think Nintendo specifically has foreseen something like this coming, and is trying to get out ahead of it, which is why all their re-releases lately have been enhanced in arguably nontrivial ways — usually by bundling them together with something entirely different — such that they have supporting evidence to claim the re-released game is materially different from the previous version, over-and-above just being a technological upgrade. Even if you have a license NFT for Mario 3D World, that doesn’t necessarily attach to a game-download for Mario 3D World + Bowser’s Fury, y’know? It’s sort of like the stores that get their own model of a product made to trivialize “we’ll beat competitors’ prices” guarantees.
=====
> maybe "locking" currently deposited tokens to your account by making the database record permanent and not caring about tokens any more.
Like I said above, this can be made impossible. Smart contracts are, by default, immutable: their logic can’t be changed once deployed, even by their original author. (The contract author needs to introduce explicit support for upgrading the contract in the contract’s logic before deploying it to the chain.) And this game-theoretic situation is pretty much exactly why smart contracts are immutable: it prevents selfish companies from later reneging on their contractual obligations.
Presuming Valve implements their staking contract as immutable—and probably nobody would trust them with their NFTs if they did any different, just like nobody would trust a non-CDIC-insured bank—then Valve would never be able to later “opt out” of people transferring their tokens away. The contract is what it is. (This is why I was highlighting the importance of an “A→B lock, A→B unlock” flow. Valve can always make their server refuse a withdrawal; but they can’t make an immutable contract refuse a withdrawal, if it didn’t have logic for that in place from the beginning. As long as the contract was programmed to be “in charge” of the withdrawal flow, with the server being a mirror of its state, Valve has no mechanism by which to stop your withdrawal from being processed.)
So if they ever wanted to quit supporting NFTs, they’d be able to either make permanent or purge their own database-record equivalent representation of the NFTs; but even if they made their own records permanent, they wouldn’t be able to erase the tokenized representation, nor stop users from transferring the tokenized representation away. And those tokens would still represent a right to a license for the game, to the other game-download-service-providers in the market. So all they’d be doing by “opting out” would be, at most, giving everyone a free second permanent non-transferable license to their games, separate from the transferable license.