In-depth

Transmuter

  • Stores version
  • Stores owner
  • Registers 3 Gem Banks
    • These can't be changed. If you need different banks, create a new Transmuter
    • Each bank can be used to configure a whitelist of allowed tokens
    • Each bank can also be used to configure rarities (read GB Overview)
    • Both of these come into play when "requesting" stuff from user

Mutation

  • Can create as many of these per Transmuter as you want
  • Each mutation
    • Requires up to 3 gem banks to be filled by the user
    • Returns up to 3 tokens from escrow
  • Knobs you can turn to configure mutations to your needs:
    • Total charges (how many total users can execute the mutation) - can be 1 or more
    • Number and mints of NFTs that have to go in (can be fungible tokens too!)
    • Number and mints of NFTs that come out (can be fungible tokens too!)
    • What happens to old NFTs (locked / moved to project / returned to user)
    • Whether a mutation is reversible (kinda like token entangler)
    • How long the mutation takes (can be instant)
    • How much the mutation costs to execute / to reverse (can be 0)

NFTs going in

  • Like mentioned before, you have 3 banks to play with
  • Why use 3 banks and not eg ask the user to put 3 NFTs into one? Because whitelisting. You can configure whitelisting per bank
    • So eg you might configure:
      • bank A allows only NFTs A, B or C
      • bank B allows only NFTC D, E or F
      • bank C allows only token G - which are actually fungible tokens
      • The user then has to fill up these banks with requested amount, in order to trigger a mutation
      • If all of these were in the same bank, the user could have uploaded 7 of token A and be done
  • What does “filling” a gem bank mean?
    • There’s 2 units you might request from a user:
      • NFT count
      • Rarity point count
    • eg you might say “I want you to upload 20 NFTs from this list of 10k”
    • or you might say “I want total rarity points to be 352” and the user will have to upload enough NFTs to hit that number
  • What happens to uploaded NFTs? 3 options:
    • stay locked in contract forever
    • vault with NFTs assigned to mutation owner (they can withdraw or do whatever they want)
    • nothing, the user can withdraw (useful for breeding)

NFTs coming out

  • You can return up to 3 mints per mutation. This means:
    • This works: return 10 of mint A, 5 of mint B, 25 of mint C
    • This doesn't: return 10 different NFTs, where each is a separate mint
  • One more time to emphasize the assymetry here:
    • You can request ANY number of mints via the 3 banks
    • You can return ONLY 3 mints
    • This is due to all kinds of limitations Solana puts on you
  • If you want to return random NFTs, simply configure a Candy Machine and then give out whitelisting tokens for that to users
    • So eg if you want the user to put 1 NFT in and get 1 random out - ask them to put 1 in, give them a WL token, they use that token with the CM to actually get an NFT, which will be random