USDT locked in a contract that has a withdraw token function

i've had some usdt locked in a contract, and i'm not able to withdraw them even though i've added a safe withdraw function here's the tx function:

and here's the withdraw function inside the contract

 function withdrawTokenFunds(address token,address wallet) external {
        require(hasRole(ADMIN_ROLE, msg.sender) || owner() == msg.sender, "You don't have permission");
        require(wallet != address(0), "Wallet should not be 0");
        IERC20 ercToken = IERC20(token);
        ercToken.transfer(wallet,ercToken.balanceOf(address(this)));
    }

is there anything i'm missing, it's working with other tokens but not usdt's

2 Likes

USDT is a non-standard ERC20. Its transfer function has no return value. This means that when Solidity calls the function it will revert when it attempts to decode the boolean return value that is expected for ERC20s. We always recommend using our SafeERC20 library to avoid this issue.

Unfortunately the withdraw mechanism in the contract will not work for USDT. You should consider Tether's official token recovery process. One of the possible conditions for recovery is precisely "Contracts that did not properly implement the SafeERC20 library for withdrawals".

2 Likes

I am on the same problem
Did you get any solution ?
Are your tokens recovered ?

1 Like

Me to I have them locked 0xdAC17F958D2ee523a2206206994597C13D831ec7, solutions....

1 Like

If this is web3miners.cc you cant withdraw it because its a scam. They will let you use it for a while untill you invest enough and then they lock it. After this support will ask for more and more money in order to unlock it untill you give up

have you find any solution yet?

I'm grateful, please let me know when done.