Proposal: Loot Oracles

Summary
Loot Oracles are the bridge from legacy NFTs to Loot NFTs. By sending a legacy NFT to a Loot Oracle, the oracle decides what Loot items should be minted.

Abstract
One legacy NFT yields many Loot NFTs while retaining provable ownership and verifiable scarcity. For example, a legacy CryptoPunk may be a Zombie with a Beanie and Sunglasses. After being sent to a Loot Oracle, the following would be minted: a Zombie head, a Beanie, and Sunglasses.

Motivation
There may be motivation for someone to exchange undesirable NFT traits for other traits of desirable value. With a legacy NFT it is not possible to swap attributes or items. By converting a legacy NFT to Loot, it is possible to recreate custom NFT characters using Loot items.

In theory, this proposal adds supply and retains value in NFT marketplaces.

Specification

NFT - ERC721 or ERC1155 non-fungible token
Loot - An ERC1155 token representing an attribute of an NFT
Oracle - An off-chain program that injects data to the blockchain

There are three components to this process:

  • The NFT owner (user)
  • The Oracle contract
  • The Oracle server

Once the Oracle is funded, it can then start receiving NFTs. The process is basically as follows:

  1. The user sends an NFT to the Oracle contract
  2. The Oracle server listens for the event “ERC721Received” or “ERC1155Received”
  3. Once the event is found, the Oracle server then mints the new Loot items to the original user

GitHub Proof of Concept: https://github.com/hexcowboy/punk-loot
Live Testnet Proof of Concept: https://beta.loot.st/

Poll
For: I support this proposal.
Against: I am against this proposal.

2 Likes

I have a writeup on the proof-of-concept here: cowboy.dev - Loot Oracles and an Introduction to Loot St

I also made a Twitter poll to better visualize the poll results here: https://twitter.com/hexcowboy/status/1437819721609527298

Great idea, but the problem is that I didn’t well understand what does it means for loot holder?

mints the new Loot items to the original user

have any idea of its use after production?

A user can take their existing NFT, break it down into loot, and separately trade that loot on marketplaces. The loot can be interpreted and used in any way. Right now I think the most prevalent use case would be someone trading undesirable traits for more desirable traits in order to rebuild a NFT profile picture.

For example, if I already own a zombie CryptoPunk with a bandana but I want a cowboy hat, I could use a Loot Oracle to convert my punk into a zombie head and a bandana (loot). Then I could trade the bandana for a cowboy hat, and rebuild my CryptoPunk. This is all theory right now but I’m working on a working application. ( cc @tccnode )

It essentially creates a new market within an existing market, without decreasing the market’s value.

2 Likes

I’ve made an explainer video here if anyone is interested in seeing this in action: NFT Loot Oracles and an Introduction to Loot St - YouTube

Thanks, looks so cool.

1 Like

Hi hex, I understand that you are trying to break down existing NFTs into attributes/items that can be traded separately. However, it’s not clear to me why an off-chain oracle is needed. As I understand it, most NFTs store their attributes on-chain. Therefore, it should be possible to simply write a smart contract that takes an existing NFT and mints a Loot based on the NFT’s attributes.

Curious to hear your thoughts and to see if I’m missing something.

Hi there and thanks for the response @derekchiang !

Actually, most NFTs store their metadata off-chain. For example, CryptoPunks store metadata at https://wrappedpunks.com:3000/api/punks/5. Many NFTs store their data n IPFS which is also off-chain. BoredApeYachtClub is stored at ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/5

I can’t think of any example that does store their metadata on-chain, but you’re right that it may be possible to write a smart contract to do this automatically. It depends how the NFT contract is written. If you give me an example I might be able to tell you.

i think thats good :grinning:

Some cautions around this (which people may or may not be comfortable with):

  1. This opens up the door to a near-infinite creation of Loot and the elimination of rarity within the community.
  2. Burning other NFTs to create Loot is one thing. But converting Loot back into other NFTs (to create an Cryptopunk with a cowboy hat, for instance) begins to mess with the economies of other communities in ways that may not be looked upon favorably.

As for my vote, I’m comfortable with #1 (one-way creation of new Loot), particularly if it takes the form of synthetic Loot. But I’m opposed to #2 (converting Loot back into other NFTs).

@FamousGames This is a very good argument and I have also had concerns about this same issue.

As far as this LIP goes, I don’t think any assumptions should be made about what individual projects decide to do with the Loot. If the project decides not to allow NFT reconstruction, then they don’t have to. There will be no standard for NFT reconstruction in this LIP.

Due to other concerns about the oracle being too centralized, I have this to say:

Because right now metadata is centralized by project owners, the project owners should be responsible for hosting the Loot Oracle itself. For example, the CryptoPunk metadata is hosted here: https://wrappedpunks.com:3000/api/punks/<id> and LarvaLabs could easily manipulate this to change the image (although they do have protection against this, other projects may not).

The point is to take centralized information (in this case, NFT attributes) from a centralized source and put them on-chain to make them verifiable. It’s much better to get this metadata from the project creator rather than try to figure out a way to decentralize this process (it’s almost impossible).

I will be working on updating this LIP to reflect this information.

@hex Excellent. Yes, if other projects decide to allow reconstruction of their NFTs from Loot, absolutely - more power to them. As long as it’s not something that we would be imposing on them.

As for putting metadata on-chain, I think the biggest reasons projects don’t do that is the prohibitive gas costs. Perhaps a verifiable offchain solution might be better.

And, by the way, I love how you’ve framed the concept as an Oracle. She looks into her crystal ball and tells you what your old NFT could become. :grinning: Oracles happen to be one of the Legendary Roles that made it into my 8-Bit Legendary Lineages, along with Brigands, Heirs, Embarrassments, Fiends, Keepers, Hunters, and Last.

1 Like

Note: I’ve removed LIP-2 from the title of this proposal as it has not gone to official snapshot vote. In order to preserve continuity of LIP numbering, we’ll hold on adding official “LIP” notation until proposals move through the full life cycle.