-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BUG: NFT transfer from Stargaze to IRISnet pended and didn't returned #329
Comments
I just want to confirm this problem. I am not sure if this happens because the cw721 contract is not handling the timeouts properly or where the exact problem lies (although I didn't find any actual tests of this in the cw721 repo, so unable to confirm). @shanev or @0xekez, would you be able to weigh in on this? |
hi, thanks for reporting this! the NFT won't get refunded unless the relayer commits the timeout message to Stargaze. do you perhaps have a link to that TX, or an error message if it failed? |
https://github.com/public-awesome/ics721/blob/main/e2e/suite_test.go#L682 here is a test that checks that NFTs are refunded on timeout that may be a good reference. |
Yes, I have the transaction on Stargaze (elgefar-1): 9A569DBF71A38CE3927E5EA05A24C585E39716AE31BAF21121960661C63D016D |
@gjermundgaraba - thanks for sending that over. it looks like that is the transaction that initiated the transfer (notice that this is the i'm curious if you have the timeout packet? you can see here in the test how getting the refund requires that a relayer sends a message on Stargaze informing the bridge that a timeout occured. |
Hmm, I am not able to find one, so perhaps it was never submitted. |
Aha! I was using the go relayer myself, and thinking perhaps it was a relayer software issue, I started up a hermes relayer as well, and it found the missing packets right away! My NFT is back! |
go hermes! |
Hi, @gjermundgaraba and @0xekez and I found the missing packets by hermes. but, it couldn't returned to stargaze because relayer couldn't find the NFT Class ID.
|
This is very interesting! I am looking into it! :D |
I figured it out 🙏 This is the transaction in question: https://gon.ping.pub/iris/tx/99DE1DB6A917325B96EE8E073CBBC9F17B148FEE24AF5111595CC58D6F2B76C5 It's because the class-id has a slash in it, and the nft-transfer module incorrectly assumes it's an ibc class-id. Proof: if you make a hash from the class-id in the tx above: |
I think I'm not that case. This is the transaction from IRIS to Stargaze I've sent. which class-id incorrectly assumed by nft-transfer module did you point out? |
It looks like yours has arrived succesfully? |
No, it doesn't arrived. Tx was failed. and it remained as a pending packets. How did you get the NFT back with hermes?
|
That failure you have at the bottom with And the transaction you are linking, https://gon.ping.pub/iris/tx/32A2E3AE1D0B00776BE364AD7F977885B5E1B1F375E9B6BE76CF99D8E22D147E, is not related to yours either. If you look at the data sent it's, by chance, actually one of my NFTs:
Back to your NFT. I checked the NFT, and it is there, on Stargaze, owned by you:
|
Got it! maybe someone cleared my pended packets in iris. then returned my NFT back. |
Summary of Bug
Environment
Steps to Reproduce
IBC Transfer
Tx was successfully performed on Stargaze.Relayer tried to relay NFT transfer packets to IRISnet.
During the relay sequence, the
timeout_height
was reached and the corresponding Tx failed.Expected and Actual Behavior
Error Stack
During the relay sequence, Tx failed with timeout error.
Additional Context
From the NFT user's perspective, if the NFT transfer fails as a result whether it's because the Tx failed or the timeout height was reached, they will expect it to returned back.
if it locked on contract, user will think that they've lost of the NFT.
The text was updated successfully, but these errors were encountered: