Sending ERC20 from Ether-less wallet

We are developing a centralized exchanged, where ERC20 tokens are listed. We have done below things so far:

  1. Generate new address using ECKeyPair
  2. Subscribe to contract event of the token to track incoming transaction
  3. subscribe to new block events to calculate confirmation for incoming transactions.
  4. Withdrawal of ERC20 — this is the road-blocker.

As user has deposited only ERC20 to his deposit wallet, we cannot process withdrawal because there is no ETH to pay for Gas. My question is how do we resolve this problem using Infura. I know about Meta Transactions, but unable to find a reliable service provider through which we can broadcast the transaction. Does infura supports this ? if yes, can someone point me to right documentation to proceed ?

Hi @Kevin_Thakker You can search for: Infura Transactions, Rockside and/or GSN.

I have gone through ITX and also RockSide. I am more keen on using Infura. But little confused about the integration process. I am using Java with Web3j v 4.5.7, do I need to add any other dependency to ITX or it is a simple POST calls?

I’m also struggling with it. I’ve abandoned java/web3j and switched to typescript/etherjs (seems to be a better tool for the job). Here there is an explanation about how to use OpenZeppelin Defender But, Infura don’t implement eth_signTypedData_v4 eth_signTypedData is currently working? If you read my comments on the youtube video, you’ll see two repos you can try - seemed to me that they will only work in the front-end - Metamask implements eth_signTypedData_v4. If you find a way to do a gasless transaction, with or without a relayer, please let me know.

I have explored forwarder contract from BitGo : but haven’t tried it.

Also, we made a contract our self that generate wallet address, and has function to send received tokens to one centralised wallet, which later on processes all the withdrawals. We are yet to test this contract as well. Unable to upload the SOL file here on Infura.