Lootbox - Randomized Burn To Redeem Extension

Hello,

I am looking to create a burn to redeem extension, where the redeemed item is a randomized ERC1155 token, as opposed to a pre-determined ERC1155 token. The desired functionality can be thought of as a Lootbox.

Users would first collect the base ERC1155 Lootbox. When they are ready, they call an “open” function, which burns their base ERC1155 token, and gives them a randomized ERC1155 in return. The randomized ERC1155 would be minted from a set several possible ERC1155 tokens. Ideally the weights/probabilities for the rarities of each redeemable token could also be set by the admin. All tokens (the burned 1155, and the redeemed 1155) would be a part of the same collection.

The most similar manifold extension I could find lives at this address:
https://etherscan.io/address/0x67C677878fF03D195041e8399dd3B083FEf8076d#code

However, it fails to meet the specific criteria needed for the desired extension.

In total the extension would have two core functions:

  1. open(), which burns the initial 1155 token, and sends the collector a new randomized one
  2. setRarity(), which allows an admin to specify the tokens and rarities of each item for a specific Lootbox.

Anyone who could help me in further working with this endeavor, it would be greatly appreciated (looking to hire). Let me know if the specifications above aren’t detailed enough. I would program the extension myself, however my hands are already tied for the next few weeks and want to make sure that this feature is done right.

Looking to hire.

Best,
MangoDev