# Shimmer Claiming

Shimmer "claiming" refers to the process of transferring SMR tokens from an address used in an UTXO within the genesis snapshot to a new address that is derived using the same seed, but with a different coin_type parameter (IOTA = 4218, Shimmer = 4219).

# Overview

Throughout the app, we have a profileManager object that exposes wallet.rs API methods that allow us to do various things, one of which is creating and managing new accounts. In order to create it, we must pass a coinType when initializing the object so that it knows how exactly to create accounts and generate addresses.

Normally this object is created with coinType = 4219 (Shimmer), but we need to use a special one where coinType = 4218 (IOTA). The reason is so that we can generate the same Ed25519 addresses that were ultimately used when the IOTA community staked for Shimmer rewards in November 2021. This special object is called the shimmerClaimingProfileManager.

# Finding Rewards

It is possible that a user has a high number of accounts, addresses, or both, where they staked his or her IOTA to receive SMR airdrops. This is due to Firefly V1 using new addresses after previous ones were already spent.

Using the shimmerClaimingProfileManager, we must generate addresses and query the nodes to determine regardless of whether funds reside on them. If funds do exist, it means that they have NOT yet been claimed from their respective genesis output.

# Claiming Rewards

Once funds are found on a particular set of accounts and their addresses, the user can initiate the claiming process.

Here, we generate a deposit address (index = 0) with the regular profileManager object, so that the funds will reside on a proper Shimmer-based addresses. Taking that address, we send a transaction to it using the shimmerClaimingProfileManager to sign it, effectively "claiming" the funds. This process happens for each account where funds were found.