Legacy GRT Delegation Recovery (Ethereum, 2021)

Hello,

I delegated GRT in 2021 using the legacy Ethereum staking / delegation contract.

Legacy staking contract holding my GRT: 0xF55041E37E12cD407ad00CE2910B8269B01263b9

The delegation no longer appears in Graph Explorer or current tooling. MetaMask shows 0 GRT on Ethereum and Arbitrum.

Could the team please advise whether this legacy delegation can be undelegated or if there is any supported recovery path?

You should still be able to undelegate but may need to switch networks to ETH in top right. https://medium.com/coinmonks/how-to-undelegate-your-grt-tokens-b829bf819402

Thank you for the guidance. I’d like to clarify my situation with concrete information to make sure I’m not missing a step.

I did delegate GRT in 2021. I have a confirmed Ethereum transaction (status: Success) interacting with The Graph Proxy (Proxy 2), using the delegate function (methodId: 0x026e402b). This confirms that a delegation transaction was executed on-chain.

Currently, when I connect MetaMask to the Ethereum (Deprecated) network in the Graph Explorer:

  • Wallet balance shows 0 GRT

  • Protocol balance shows 0 GRT

  • No active or historical delegations are displayed

  • No indexers appear under “Delegating”

Given that the on-chain transaction exists but no delegation or undelegation options are visible in the UI, could you please confirm one of the following:

  1. Whether delegations made via Proxy 2 in 2021 are no longer retrievable or undelegatable via the current explorer/UI, or

  2. If there is an alternative official method (contract address, tool, or procedure) to view or undelegate legacy delegations.

I’m not attempting to redelegate — only to understand whether recovery or undelegation is technically possible at this point.

Thank you for your time and clarification.

Hey @Healing

You can still undelegate with ease

Please indicate how, and if possible describe it step-by-step. I would really appreciate it!

You still need help? Are you able to share your wallet address?

Yes, I still need help! I was not able to view the information shared by Xing-Mao and now the post is hidden.

Reposting my situation with concrete information to make sure I’m not missing a step.

I did delegate GRT in 2021. I have a confirmed Ethereum transaction (status: Success) interacting with The Graph Proxy (Proxy 2), using the delegate function (methodId: 0x026e402b). This confirms that a delegation transaction was executed on-chain.

Currently, when I connect MetaMask to the Ethereum (Deprecated) network in the Graph Explorer:

  • Wallet balance shows 0 GRT

  • Protocol balance shows 0 GRT

  • No active or historical delegations are displayed

  • No indexers appear under “Delegating”

Given that the on-chain transaction exists but no delegation or undelegation options are visible in the UI, could you please confirm one of the following:

  1. Whether delegations made via Proxy 2 in 2021 are no longer retrievable or undelegatable via the current explorer/UI, or

  2. If there is an alternative official method (contract address, tool, or procedure) to view or undelegate legacy delegations.

I’m not attempting to redelegate — only to understand whether recovery or undelegation is technically possible at this point.

Looking forward to hearing from you

Hey PaulineB, here is wallet address: 0xf62a49e6CE669D95d01e736a0fDc6fE7c949C60C You will be able to confirm the GRT staking

Hi PaulieB, thank you for following up.

Yes, I’m still looking for help. I’ve already shared my public MetaMask address above for transparency.

For additional context:

  • I delegated GRT back in 2021 (I still have the successful delegation transaction on Ethereum, interacting with The Graph Proxy contract).

  • Currently, when I connect my wallet to the Explorer (Ethereum – deprecated network), it shows 0 GRT in wallet and 0 GRT in protocol, and no indexers appear under delegation, which is confusing given the historical transaction.

I would appreciate if someone could help confirm, based on the on-chain data, whether:

  1. the delegation was fully undelegated at some point,

  2. the tokens were migrated / expired / affected by protocol changes, or

  3. this is a UI or network-selection issue.

I understand the protocol has gone through several changes over the years, and I’m just trying to clarify the current status on-chain before closing this as a loss.

Thanks in advance for any guidance.

Hi @PaulieB,

I just wanted to follow up briefly on my previous message.

I’ve already shared the wallet address, as requested, and I still don’t see any active delegations or the option to undelegate on the explorer, despite having a confirmed delegation transaction from 2021.

I would greatly appreciate any guidance or confirmation from your end so I can know whether these funds are still recoverable or not.

Thank you in advance for your time and support.

Healing

Instructions for Your Specific Undelegation
Your Undelegation Details:
Transaction: 0x7262e194f0760606a98d74461b82cf8af5e6842b7943226d7ad4fa5618a58947
Indexer: 0x5A8904be09625965d9AEc4BFfD30D853438a053e
Your Address: 0xf62a49e6CE669D95d01e736a0fDc6fE7c949C60C
Amount: ~3,478 GRT tokens
Step-by-Step Instructions:
Go to the StakingExtension Contract:

Connect Your Wallet:
Click “Connect to Web3”
Connect with the wallet containing address 0xf62a49e6CE669D95d01e736a0fDc6fE7c949C60C
Find and Expand unDelegate Function
Fill in the Exact Parameters:
_indexer (address):
0x5A8904be09625965d9AEc4BFfD30D853438a053e
_shares (uint256
3333488138933560793898

Then click write and confirm transaction in wallet.

Expected Outcome:
This will initiate the undelegate function. Unsure if have to wait 28 days to do withdrawal back to wallet.

Got shares amount by querying (subgraph)[Graph Network Ethereum | Graph Explorer]

Query:

  delegatedStakes(
    where: { delegator: "0xf62a49e6ce669d95d01e736a0fdc6fe7c949c60c" }
  ) {
    shareAmount
    personalExchangeRate

    indexer {
      id
      delegationExchangeRate

      account {
        id
        names {
          name
        }
      }
    }
  }
}

Results:

{
  "data": {
    "delegatedStakes": [
      {
        "indexer": {
          "account": {
            "id": "0x5a8904be09625965d9aec4bffd30d853438a053e",
            "names": []
          },
          "delegationExchangeRate": "1.377850504061593605",
          "id": "0x5a8904be09625965d9aec4bffd30d853438a053e"
        },
        "personalExchangeRate": "1.038138818004433631",
        "shareAmount": "3333488138933560793898"
      }
    ]
  }
}
1 Like

Hi, I have the same problem… In 2021 I delegated GRT using the legacy Ethereum staking/delegation contract, and those tokens are still sitting in the legacy staking contract address 0xF55041E37E12cD407ad00CE2910B8269B01263b9. The delegation no longer shows up anywhere in the current Graph Explorer or delegation UI, and when I connect my wallet (MetaMask) on both Ethereum and Arbitrum it reports 0 GRT balance and no active delegations. I am trying to understand whether there is still a supported way to undelegate or withdraw from this old contract, or if there is any official recovery path for legacy GRT delegations that no longer appear in the modern tooling.​

Any help appreciated. Thank you.

Latest indexer topics - The Graph

Here are my delegation details so I can follow the same undelegation process via the StakingExtension contract:

Delegator (wallet) address: 0x291Aa946bFc4A01d0B1f1b4e1D50e13f3C693748

Indexer originally delegated to: 0x19fBac0891042bE71Ce60321a17720358575f580

Original delegation transaction (Etherscan): 0x2c7b591e2d23bf5305776a182e42762d7284e1cad8e6b715e0dfaee5e11659ce

Delegation date: July 26, 2022 (20:42:06 UTC)

Original amount delegated: 19,310.0296 GRT

Current value per DeBank: ~22,409.97 GRT (~$820)

Contract interacted with: The Graph: Proxy 2 0xF55041E37E12cD407ad00CE2910B8269B01263b9

Method used: delegate (methodId 0x026e402b)

I would like to replicate the undelegation solution described by @Paulie B using the unDelegate function on the StakingExtension contract at 0xA479c00cDa8C07bce458D7a826C7b091672EB92C.
Could someone please help me determine the correct _shares value for this legacy delegation so I can safely call:

_indexer: 0x19fBac0891042bE71Ce60321a17720358575f580

_shares:

Once I have that share amount, I can use the Etherscan write interface to call unDelegate from my wallet and follow the same recovery path.

Same query results w/ your wallet. Please let me know if this works.

  "data": {
    "delegatedStakes": [
      {
        "indexer": {
          "account": {
            "id": "0x19fbac0891042be71ce60321a17720358575f580",
            "names": []
          },
          "delegationExchangeRate": "2.200057098758914614",
          "id": "0x19fbac0891042be71ce60321a17720358575f580"
        },
        "personalExchangeRate": "1.886247187680405442",
        "shareAmount": "0"
      }
    ]
  }
}```

This query didn't show shares amount however logs in etherscan shows shares (uint256) :
10186087840975408989397

Hi Pauline,

Thank you very much for your support and my apologies for the late response.

I queried the StakingExtension contract directly using getDelegation and it returns 0 shares, 0 tokensLocked, and 0 tokensLockedUntil.

This suggests there is no active delegation or pending undelegation on-chain.

Could you please clarify why the subgraph query still shows shareAmount if the contract returns zero?

Hi Pauline, thank you again for your guidance.

After reviewing everything carefully on-chain, I want to share additional findings for clarity:

• There are only two GRT-related transactions in my wallet:

  1. An Approve transaction to The Graph GRT token contract (0xc944E90C64B2c07662A292be6244BDf05Cda44a7)

  2. A Delegate transaction to Graph Proxy 2 (0xF55041E37E12cD407ad00CE2910B8269B01263b9)

• There are no transactions showing:

  • undelegate

  • withdrawDelegated

  • withdraw

  • redeem

  • close

• The original delegate transaction emitted a StakeDelegated event under the GraphProxy contract.

• However, when querying the current StakingExtension contract directly using getDelegation(indexer, delegator), it returns:

  • shares: 0

  • tokensLocked: 0

  • tokensLockedUntil: 0

This indicates that there is no active delegation nor pending undelegation on-chain under the current implementation.

Additionally, there are no ERC-20 GRT movements after 2021, meaning no withdrawal or transfer ever occurred.

Given these findings, could you please clarify:

  1. If the indexer was closed or migrated during protocol upgrades, where would historical delegations now reside?

  2. Is there a legacy contract that still holds delegator shares?

  3. Why would the subgraph return a shareAmount while the contract state returns zero?

  4. Is this potentially related to the L1 → Arbitrum migration process?

Before executing any write function, I would appreciate confirmation of the exact contract and mechanism where the delegation is currently held, if anywhere.

Thank you again for your assistance.

Delegation Status Summary

| Description                          | Amount                                      |
|--------------------------------------|---------------------------------------------|
| Original delegation                  | 19,310.03 GRT (July 26, 2022)               |
| Delegation tax (0.5%)                | -96.55 GRT                                  |
| Rewards earned                       | +3,196.50 GRT (~16.6% over 2.4 years)       |
| **Total available**                  | **22,409.97 GRT**                           |
| Undelegated on                       | December 1, 2024                            |
| Thawing period                       | **Already expired** (locked until epoch 1457) |
| Current status                       | **Ready to withdraw** — sitting in staking contract |

Someone already called undelegate on Dec 1, 2024 (tx 0x4d064e31...), burning all 10,186 shares. The 28-epoch thawing period is long over. The GRT just needs to be withdrawn.


Instructions for the Delegator

Step-by-Step: Withdraw 22,409.97 GRT via ABI Ninja

1. Go to ABI Ninja

  • Open ABI Ninja
  • This loads the L1 Staking Proxy contract on Ethereum mainnet

2. Connect Wallet

  • Click “Connect Wallet” in the top right
  • Connect the wallet for address 0x291Aa946bFc4A01d0B1f1b4e1D50e13f3C693748
  • Make sure you’re on Ethereum Mainnet (chain ID 1)

3. Find the withdrawDelegated function

  • Scroll down to the Write functions
  • Find withdrawDelegated(address _indexer, address _newIndexer)

4. Fill in the parameters

  • _indexer: 0x19fbac0891042be71ce60321a17720358575f580
  • _newIndexer: 0x0000000000000000000000000000000000000000(Using the zero address means “withdraw to my wallet” rather than re-delegate)

5. Submit the transaction

  • Click Write / Send Transaction
  • Confirm in your wallet
  • You’ll need a small amount of ETH for gas (the wallet has ~0.795 ETH, which is plenty)

6. Verify

  • After the tx confirms, 22,409.97 GRT will appear in the wallet
  • You can verify on Etherscan that the GRT token balance updated

Hi Pauline,

I hope you’re doing well, and thank you again for helping people in this thread.

I just wanted to kindly follow up regarding my case, since I haven’t heard back yet and I want to make sure I’m proceeding correctly before executing any on-chain transaction.

As I mentioned earlier, I checked my wallet activity and found:

• Only two GRT-related transactions (Approve + Delegate in 2021)
• No undelegate or withdraw transactions ever executed
• Querying the StakingExtension contract returns 0 shares and 0 locked tokens
• However, the original delegation event shows shares were created at the time

Because of this inconsistency, I want to be sure I’m interacting with the correct contract and method before attempting any transaction.

Could you please confirm:

  1. Whether my delegation might still exist in a legacy contract or migration path

  2. If the undelegate step is still required in my case

  3. Or if a withdraw operation would apply here

I really appreciate your help and your time reviewing this.

Thank you again.

Hey @Healing try below steps and confirm you tried this.

Step 1: Undelegate (Start the Thawing Period)

  1. Go to ABI Ninja
  • Open ABI Ninja
  • Load the L1 Staking Proxy contract: 0xF55041E37E12cD407ad00CE2910B8269B01263b9 on Ethereum Mainnet
  1. Connect Wallet
  • Click “Connect Wallet” in the top right
  • Connect the wallet for address 0xf62a49e6CE669D95d01e736a0fDc6fE7c949C60C
  • Make sure you’re on Ethereum Mainnet (chain ID 1)
  1. Find the undelegate function
  • Scroll down to the Write functions
  • Find undelegate(address _indexer, uint256 _shares)
  1. Fill in the parameters
  • _indexer: 0x5a8904be09625965d9aec4bffd30d853438a053e (p2p-org)
  • _shares: 3333488138933560793898 (their full share amount)
  1. Submit the transaction
  • Click Write / Send Transaction
  • Confirm in your wallet
  • Small amount of ETH needed for gas
  1. Now wait the unbonding period
  • L1 unbonding is 26 epochs (~26 days)
  • The tokens will show as lockedTokens during this time

Step 2: Withdraw (After Thawing Completes)

  1. Go back to ABI Ninja
  • Same contract: 0xF55041E37E12cD407ad00CE2910B8269B01263b9 on Ethereum Mainnet
  1. Connect the same wallet
  2. Find the withdrawDelegated function
  • Find withdrawDelegated(address _indexer, address _newIndexer)
  1. Fill in the parameters
  • _indexer: 0x5a8904be09625965d9aec4bffd30d853438a053e
  • _newIndexer: 0x0000000000000000000000000000000000000000 (zero address = withdraw to wallet, not re-delegate)
  1. Submit the transaction
  • Confirm in wallet, pay gas
  1. Verify
  • After tx confirms, ~3,460 GRT (plus any accrued rewards) will appear in the wallet
  • Verify on Etherscan that the GRT balance updated