Burn redeem for physical item?

Hello and gm devs,

I have a collection that has been minted out and I want to create a burn redeem for a physical item. Problem is, I need to collect user information when someone burns their token (for international shipping I need the full physical address, name, email, and phone). This could be collected on the contract level, but I don’t think a lot of users would want this info publicly available.

Do you have any solution for this? Ideally, the info could be stored on-chain but it would need to be encrypted so that only the owner of the contract would be able to view it for shipping purposes (and the information should also have an expiration date).

Another solution is to integrate web 2 components, but that’s not why I’m here :wink:

Is there a reason you prefer it all to be on-chain versus integrating web2 components like Shopify?

Just want to get a sense of what your motivation here is and what constraints you have!

The biggest reason is that Shopify is $40 / month (for the cheapest plan where they also take the biggest cut).

I’m not completely against doing things in web2, but I don’t want another monthly service to subscribe to and pay for and maintain. I’m looking for something stable and without monthly maintenance.

Totally makes sense! Would you be able to describe exactly the flow you are looking for? This is something that we are looking into building.

Some questions we’d have -

  1. What sort of info would you need to collect from the collector?
  2. What would they be burning?
  3. Would you be OK with storing the info off-chain (on Manifold)?

etc.

Or any other details you may have! This will be super helpful for us. Thank you!!

Awesome! I’m a dev so I love talking about this stuff :wink: My current project is sending out physical vinyl records. I had a preview song minted on Manifold. I’d love for owners of the NFT song to be able to burn it to redeem a vinyl record.

  1. Info from the collector: mailing address. What is a mailing address? Well it’s different depending on the location of shipper & receiver. I’m in the US and in order to send things within the US I need:
    First/Last Name (or Business Name or Pseudonym)
    Street number + street name
    City State, Zipcode

If shipping internationally, I also need the same information plus a valid email address and phone number. International shipping is also highly variable in price, so I would want some options to charge more for shipping to certain countries or to say I don’t ship to certain places altogether.

  1. What burning? An ERC-721 or 1155 (bonus points to be able to specify quantity as well). I’d also love the option to charge Eth together in the same transaction.

  2. Personally, I’m ok with storing the information off-chain. I just want to have a nice workflow for a customer to burn + redeem a physical. However, I do think that keeping things on-chain could be a more robust long-term solution. Send an encrypted Eth message w/ address+email+phone from buyer to seller encrypted using the seller’s public key (like: How to Send an On-Chain Message Using an Ethereum Transaction — Dame.eth).

Thanks for all the great info on your use case!

Something I’d like a bit more info on is shipping. Shipping is definitely highly variable based on country, shipping provider, etc. Would you be comfortable setting a single price yourself? And calculating that, say based on your average expectation for shipping? This would simplify things (only 1 price for customers) but of course the trade-off is you’d likely be losing some money on far off locations, and making a bit extra on nearby locations.

While we understand the desire for on-chain robustness, what is the use case for permanent storage of this data? Would it be sufficient for the data to be used during the purchase/shipping/etc, but not persisted much longer than that?

Thanks for the response! A few quick answers:

Yes, I would be comfortable setting a price for shipping myself. The big distinction to make would be international vs domestic shipping. I think if I could make the distinction between the two (for example: $10 shipping domestically, $30 shipping internationally) that would be good enough for 99% of my cases. I think it’d be a bit weird (and make the math for my small business record label more complicated) to try to split the difference between international + domestic shipping and charge an “average” price like $20 for shipping to everyone everywhere.

There is no use case for “permanent” storage on-chain of the shipping info. In short, it isn’t necessary to have it on-chain at all - I’m merely suggesting it as a way to keep everything within web3. Ideally, even the hosting of the claim + mint + burn pages could optionally be on-chain.

Why do I keep suggesting everything to be on-chain? Well long-term, even if Manifold ever went down or out of business - as long as the blockchain is up, everything still works.

I also think that if you did went ahead with keeping the shipping info on-chain I would STRONGLY suggest making it 1. encrypted for only the shipper to view the info 2. have an expiration time (say 1-2 weeks or whatever) before the shipping info is deleted forever.