I am facing an issue with token transfers between Sepolia and Arbitrum testnets. Here is the context:
- I have implemented the NTT managers on both Sepolia and Arbitrum Sepolia.
- I transferred 10,000 tokens from Sepolia to Arbitrum.
The Problem: The tokens did not reach the intended recipient. Instead, they got stuck in the NTT Manager on Sepolia.
Manager Addresses:
- Sepolia:
0x57c839C4e1D7CFDF21aecD6331FDc7983a40F9DC
- Arbitrum Sepolia:
0x63f12A90434567Be9e94042a821879561678204E
Upon investigation, I found that the inbound transfer was not processed because the inbound gas limit was insufficient. Although the transaction is marked as completed on Wormhole, the tokens remain stuck in the Sepolia NTT Manager.
Suspected Cause:
It appears that the issue might be related to the refund address. In my current implementation, the refund address defaults to the recipient’s address. Here is the function I used:
function transfer(
uint256 amount,
uint16 recipientChain,
bytes32 recipient
) external payable nonReentrant whenNotPaused returns (uint64) {
return _transferEntryPoint(amount, recipientChain, recipient, recipient, false, new bytes(1));
}
I believe that specifying the correct refund address explicitly might resolve the problem.
Could you please assist me in retrieving the stuck tokens and guide me on how to properly specify the refund address to avoid this issue in the future?
Thank you for your support.