Withdrawing LPT after unbonding using the Explorer + MyCrypto

Users who have unbonded their LPT using the explorer, and have waited the 7 day unbonding period, may find that the explorer doesn’t appear to let them withdraw their LPT back into their wallet. This is the case if they happen to have bonded and/or unbonded again during the waiting period - and it is just a bug with the UX that needs a proper product design cycle to address. In the meantime, here is background and instructions of how to withdraw using MyCrypto + Metamask prior to the UX update to the explorer.

We recently introduced a feature called “partial unbonding” which lets you unbond some, but not all of your LPT. So if you had 100 LPT bonded, you could, for example, unbond 40 LPT and leave the other 60 bonded. Each time you unbond it creates something called an “unbonding lock”, with a 7 day unbonding period. When you call withdraw, you tell it which unbonding lock to withdraw from. Our node exposes the management of this, so you can see all your unbonding locks, and choose which one to withdraw. But we haven’t built the UI for this in the explorer yet, so we just use the shortcut that when someone unbonds, it unbonds all their LPT into one unbonding lock, and when they call withdraw, it chooses that most recent unbonding lock to withdraw. However, clearly there is a bug in that this doesn’t cover the corner cases where you bond additional token before withdrawing, which many users have. As a result, the UI is not allowing them to withdraw easily. This will be fixed, but in the meantime…

Steps to Withdraw after Unbonding Period Using MyCrypto
First, identify the ID of the unbonding lock you would like to withdraw. The first unbonding lock has id 0, the second id 1, the third id 2, etc. If you look at Supermax for your account (replace the address being searched for with your account address), and expand the unbond() event, then you’ll see the unbonding lock id - likely as 0, 1, or a low number depending on how many times you unbonded.

  1. In the mycrypto.com “contracts” tab…
  2. Contract address: 0x511bc4556d823ae99630ae8de28b9b80df90ea2e
  3. Contract ABI: paste the code from the ABI section of this contract (note it’s a different contract than your target contract address since we use a proxy pattern): https://etherscan.io/address/0xcbaa6ea4886b535fc7abace3f3985ed03b3b80a0#code
  4. Method to call: withdrawStake()
  5. It takes one argument, which is the unbondingLockID. Set this to 0 (or the appropriate ID you identified above) to withdarw the first amount. Then after that succeeds, you can do this again with additional IDs to withdraw the other unbonding locks if you have more.
  6. Execute the transaction from your same account (assuming you were using Metamask). Your LPT should be instantly withdrawn to your account.

The short, human readable, explaination of the above is: “Just call the withdrawStake function yourself, passing in the argument of 0, and then 1. The reason for the argument being 0 is that this is your first unbondingLock. Next time you unbond, the index would be 1, then 2, etc.”

1 Like

just tested it and my account wont show a unboding event in supermax but it is on etherscan

Yah it seems like Supermax didn’t pick up that event in their indexer for some reason. In any case, we were able to get this working through manually invoking the txn with unbondingLockID 0.